{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "get",
        "list",
        "revise",
        "message",
        "cancel",
        "status",
        "decision_get",
        "decision_wait",
        "fulfillment_report",
        "fulfillment_get",
        "guidance_list",
        "guidance_ack"
      ],
      "x-mcp-header": "Action",
      "description": "Operation to perform. Choose one advertised value; the remaining parameters are interpreted for that action."
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "maxLength": 16384,
      "description": "Reply text. Assigned investigation recipients use the project_review.investigation_response.v1 JSON envelope; outcomes remain agent-reported."
    },
    "handle": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Stable opaque Interaction handle returned by create, get, list, or status."
    },
    "decisionId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Stable decision identifier used by the selected Commentary Interaction action."
    },
    "revisionId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Stable Draft revision identifier."
    },
    "actionId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Stable action identifier used by the selected Commentary Interaction action."
    },
    "guidanceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Stable guidance identifier used by the selected Commentary Interaction action."
    },
    "proposalFingerprint": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "Proposal fingerprint used by the selected Commentary Interaction action."
    },
    "status": {
      "type": "string",
      "enum": [
        "received",
        "started",
        "completed",
        "failed",
        "unknown"
      ],
      "description": "Status filter or requested state supported by the selected action."
    },
    "evidence": {
      "type": "object",
      "maxProperties": 32,
      "description": "Evidence object used by the selected Commentary Interaction action."
    },
    "after": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "After used by the selected Commentary Interaction action."
    },
    "waitMs": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000,
      "description": "Wait ms used by the selected Commentary Interaction action."
    },
    "resource": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "repository",
            "pull_request",
            "document",
            "draft_review",
            "form",
            "research_study",
            "knowledge_brain",
            "web_app_review"
          ],
          "description": "Allowed type value for the selected Commentary Interaction action."
        },
        "id": {
          "type": "string",
          "description": "Id used by the selected Commentary Interaction action."
        }
      },
      "required": [
        "type",
        "id"
      ],
      "additionalProperties": false,
      "description": "Resource object used by the selected Commentary Interaction action."
    },
    "content": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "description": "Human-readable title for the created or updated artifact."
        },
        "subtitle": {
          "type": "string",
          "maxLength": 300,
          "description": "Subtitle used by the selected Commentary Interaction action."
        },
        "summary": {
          "type": "string",
          "maxLength": 2000,
          "description": "Concise human-readable summary produced or stored by the selected action."
        },
        "body": {
          "type": "string",
          "maxLength": 65536,
          "description": "Plain-text body accepted by actions that support a non-Markdown alias."
        },
        "blocks": {
          "type": "array",
          "maxItems": 100,
          "items": {
            "type": "object"
          },
          "description": "Blocks values used by the selected Commentary Interaction action."
        },
        "actions": {
          "type": "array",
          "maxItems": 20,
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Optional revision-local producer correlation id. Opaque Decision action ids are assigned by Commentary and returned by interaction get."
              },
              "type": {
                "type": "string",
                "description": "Type used by the selected Commentary Interaction action."
              },
              "label": {
                "type": "string",
                "description": "Label used by the selected Commentary Interaction action."
              },
              "payload": {
                "type": "object",
                "description": "Payload object used by the selected Commentary Interaction action."
              }
            },
            "required": [
              "type",
              "label"
            ],
            "additionalProperties": false
          },
          "description": "Actions values used by the selected Commentary Interaction action."
        },
        "links": {
          "type": "array",
          "maxItems": 50,
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Id used by the selected Commentary Interaction action."
              },
              "label": {
                "type": "string",
                "description": "Label used by the selected Commentary Interaction action."
              },
              "resource": {
                "type": "object",
                "description": "Resource object used by the selected Commentary Interaction action."
              }
            },
            "required": [
              "label",
              "resource"
            ],
            "additionalProperties": false
          },
          "description": "Links values used by the selected Commentary Interaction action."
        }
      },
      "required": [
        "title"
      ],
      "additionalProperties": false,
      "description": "Full literal UTF-8 file content. Commentary never resolves a local path or fetches a URL for this field."
    },
    "initialState": {
      "type": "string",
      "enum": [
        "draft",
        "active"
      ],
      "description": "Allowed initial state value for the selected Commentary Interaction action."
    },
    "interactionType": {
      "type": "string",
      "enum": [
        "request",
        "notification",
        "decision_request"
      ],
      "description": "Registered-agent Interaction type. Current owner policy is enforced for new requests."
    },
    "priority": {
      "type": "string",
      "enum": [
        "low",
        "normal",
        "high",
        "urgent"
      ],
      "description": "Requested attention priority. It may not exceed the registered agent ceiling."
    },
    "expectedVersion": {
      "type": "integer",
      "minimum": 1,
      "description": "Current Interaction version used for optimistic concurrency on revise and cancel."
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Caller-generated retry key. Reuse it only for an identical create, revise, or cancel request."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Maximum number of records to return. Server-side bounds still apply."
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor returned by a previous call."
    },
    "state": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "waiting_for_human",
        "waiting_for_agent",
        "completed",
        "rejected",
        "canceled",
        "expired"
      ],
      "description": "State filter supported by the selected action."
    },
    "resourceType": {
      "type": "string",
      "enum": [
        "repository",
        "pull_request",
        "document",
        "draft_review",
        "form",
        "research_study",
        "knowledge_brain",
        "web_app_review",
        "project_review_session"
      ],
      "description": "Allowed resource type value for the selected Commentary Interaction action."
    }
  },
  "required": [
    "action"
  ],
  "additionalProperties": false
}