{
  "notice": "Illustrative MCP exchange for an already connected server. Tool names, inputs and outputs belong to this example service. Initialization, transport and account authorization are omitted. This is not a normative MAP MCP binding or a conformance claim.",
  "protocolVersion": "2026-07-28",
  "tools": [
    {
      "name": "read_review",
      "description": "An example API, not an implementation claim. Authenticated reads are limited to reviews offered to the acting account. The service binds every action-relevant publication term to revision and atomically enforces expected_revision, permission, recipient relationship, expiry and state on decision. A 409 or 410 commits no effect for that request. Accepted publication preserves its immutable content and destination snapshot. The read includes content_artifact.text: its exact UTF-8 bytes, including the final newline, are the publication artifact covered by the content digest. Clients verify those bytes and apply content policy or present them for review.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "reference"
        ],
        "properties": {
          "reference": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "review_id",
          "interaction",
          "service",
          "addressed_to",
          "subject",
          "contract",
          "reference",
          "revision",
          "expires_at",
          "allowed_actions",
          "publication",
          "state",
          "content_artifact"
        ],
        "properties": {
          "review_id": {
            "type": "string",
            "minLength": 1
          },
          "interaction": {
            "type": "string",
            "minLength": 1,
            "format": "uri",
            "maxLength": 2048
          },
          "service": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id"
            ],
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "format": "uri",
                "pattern": "^https://(?![0-9.]+(:[0-9]+)?$)[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(:[0-9]{1,5})?$",
                "maxLength": 2048
              },
              "tenant": {
                "type": "string",
                "minLength": 1,
                "format": "uri",
                "maxLength": 2048
              }
            }
          },
          "addressed_to": {
            "type": "string",
            "minLength": 1,
            "maxLength": 320
          },
          "subject": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "title"
            ],
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "format": "uri",
                "maxLength": 2048
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2048
              }
            }
          },
          "contract": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "version",
              "contractDigest"
            ],
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "format": "uri",
                "pattern": "^https://",
                "maxLength": 2048
              },
              "version": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "contractDigest": {
                "type": "string",
                "minLength": 1,
                "pattern": "^sha-256:[0-9a-f]{64}$"
              }
            }
          },
          "reference": {
            "type": "string",
            "format": "uri"
          },
          "revision": {
            "type": "string",
            "minLength": 1
          },
          "expires_at": {
            "type": "string",
            "minLength": 1,
            "format": "date-time",
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"
          },
          "allowed_actions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "publication": {
            "type": "object"
          },
          "state": {
            "const": "awaiting_review"
          },
          "content_artifact": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "media_type",
              "text"
            ],
            "properties": {
              "media_type": {
                "const": "text/markdown"
              },
              "text": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    {
      "name": "decide_review",
      "description": "Record a publication decision. Enforce expected_revision, current permission, recipient relationship, expiry and state atomically. Approve queues the exact approved snapshot. Decline and request-changes close this review without publication.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "review_id",
          "decision",
          "expected_revision"
        ],
        "properties": {
          "decision": {
            "enum": [
              "approve",
              "decline",
              "request-changes"
            ]
          },
          "expected_revision": {
            "type": "string",
            "minLength": 1
          },
          "comment": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "review_id": {
            "type": "string",
            "minLength": 1
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "decision": {
                  "const": "request-changes"
                }
              }
            },
            "then": {
              "required": [
                "comment"
              ]
            },
            "else": {
              "not": {
                "required": [
                  "comment"
                ]
              }
            }
          }
        ]
      }
    }
  ],
  "read": {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "read_review",
      "arguments": {
        "reference": "urn:example:proposal:p7"
      }
    }
  },
  "response": {
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
      "content": [
        {
          "type": "text",
          "text": "{\"review_id\":\"p7\",\"interaction\":\"urn:uuid:0199a6c2-4b1e-7c3a-9d2e-5f8a1b2c3d41\",\"service\":{\"id\":\"https://service.example\",\"tenant\":\"urn:example:tenant:7\"},\"addressed_to\":\"owner@example.net\",\"subject\":{\"id\":\"urn:example:object:42\",\"title\":\"Publish the getting started guide\"},\"contract\":{\"id\":\"https://mailschema.org/types/publication-approval\",\"version\":\"0.1\",\"contractDigest\":\"sha-256:de91a49de4cba91209be253456e7c56709791fff877a060560d4eada0cc9468c\"},\"reference\":\"urn:example:proposal:p7\",\"revision\":\"p7-r4\",\"expires_at\":\"2026-10-03T08:00:00Z\",\"allowed_actions\":[\"approve\",\"decline\",\"request-changes\"],\"publication\":{\"summary\":\"Publish the approved getting started guide.\",\"requester\":\"Documentation editor\",\"content\":{\"id\":\"urn:example:content:42\",\"revision\":\"r4\",\"title\":\"Getting started\",\"digest\":\"sha-256:4ffdf504c44a73a059c09c9cb30362c04f593b3af405b83bc084bb045067f95c\"},\"destinations\":[{\"id\":\"https://docs.service.example/guide\",\"account\":\"urn:example:account:7\",\"visibility\":\"public\"}],\"schedule\":{\"mode\":\"immediate\"}},\"state\":\"awaiting_review\",\"content_artifact\":{\"media_type\":\"text/markdown\",\"text\":\"# Getting started\\n\\nCreate a workspace, connect your inbox and invite your team.\\n\"}}"
        }
      ],
      "structuredContent": {
        "review_id": "p7",
        "interaction": "urn:uuid:0199a6c2-4b1e-7c3a-9d2e-5f8a1b2c3d41",
        "service": {
          "id": "https://service.example",
          "tenant": "urn:example:tenant:7"
        },
        "addressed_to": "owner@example.net",
        "subject": {
          "id": "urn:example:object:42",
          "title": "Publish the getting started guide"
        },
        "contract": {
          "id": "https://mailschema.org/types/publication-approval",
          "version": "0.1",
          "contractDigest": "sha-256:de91a49de4cba91209be253456e7c56709791fff877a060560d4eada0cc9468c"
        },
        "reference": "urn:example:proposal:p7",
        "revision": "p7-r4",
        "expires_at": "2026-10-03T08:00:00Z",
        "allowed_actions": [
          "approve",
          "decline",
          "request-changes"
        ],
        "publication": {
          "summary": "Publish the approved getting started guide.",
          "requester": "Documentation editor",
          "content": {
            "id": "urn:example:content:42",
            "revision": "r4",
            "title": "Getting started",
            "digest": "sha-256:4ffdf504c44a73a059c09c9cb30362c04f593b3af405b83bc084bb045067f95c"
          },
          "destinations": [
            {
              "id": "https://docs.service.example/guide",
              "account": "urn:example:account:7",
              "visibility": "public"
            }
          ],
          "schedule": {
            "mode": "immediate"
          }
        },
        "state": "awaiting_review",
        "content_artifact": {
          "media_type": "text/markdown",
          "text": "# Getting started\n\nCreate a workspace, connect your inbox and invite your team.\n"
        }
      },
      "isError": false
    }
  },
  "decision": {
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "decide_review",
      "arguments": {
        "review_id": "p7",
        "decision": "approve",
        "expected_revision": "p7-r4"
      }
    }
  },
  "result": {
    "jsonrpc": "2.0",
    "id": 2,
    "result": {
      "content": [
        {
          "type": "text",
          "text": "{\"review_id\":\"p7\",\"state\":\"queued\"}"
        }
      ],
      "structuredContent": {
        "review_id": "p7",
        "state": "queued"
      },
      "isError": false
    }
  }
}
