changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$defs": {
+ "warningInfo": {
+ "properties": {
+ "code": {
+ "description": "The stable machine-readable warning code.",
+ "type": "string"
+ },
+ "message": {
+ "description": "The human-readable warning message.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object"
+ }
+ },
+ "oneOf": [
+ {
+ "properties": {
+ "data": {
+ "description": "Tool-specific result payload.",
+ "properties": {
+ "documentCount": {
+ "description": "The loaded document count, when present.",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "errorReportingConsent": {
+ "description": "The process-local error-reporting approval applying to this Workspace and epoch.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "externalChange": {
+ "description": "The first detected external Workspace input change, when present.",
+ "properties": {
+ "detectionSource": {
+ "description": "The mechanism that detected the change.",
+ "type": "string"
+ },
+ "errorCode": {
+ "description": "The stable error classification when change detection itself failed.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "The detected change kind.",
+ "type": "string"
+ },
+ "path": {
+ "description": "The affected path, when the detection mechanism identified one.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "previousPath": {
+ "description": "The previous path for a rename, when present.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "detectionSource",
+ "kind"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "instances": {
+ "description": "Other live Roslyn Workbench MCP instances using this workspace.",
+ "items": {
+ "properties": {
+ "commitId": {
+ "description": "Durable commit identifier reported by the other instance, when a commit is active.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "commitPhase": {
+ "description": "Advisory durable commit phase reported by the other instance, when a commit is active.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "instanceId": {
+ "description": "Identifier of the other Roslyn Workbench server instance.",
+ "type": "string"
+ },
+ "loadedPath": {
+ "description": "Absolute solution or project path loaded by the other instance.",
+ "type": "string"
+ },
+ "transactionRevision": {
+ "description": "Staged transaction revision in the other instance, when a transaction is active.",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "workspaceRoot": {
+ "description": "Absolute coordination and transaction root used by the other instance.",
+ "type": "string"
+ },
+ "workspaceState": {
+ "description": "Workspace lifecycle state reported by the other instance.",
+ "enum": [
+ "Ready",
+ "TransactionActive",
+ "TransactionConflicted",
+ "WorkspaceOutOfDate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "instanceId",
+ "loadedPath",
+ "workspaceRoot"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "loadDiagnostics": {
+ "description": "Project load and advisory workspace-status diagnostics.",
+ "items": {
+ "properties": {
+ "id": {
+ "description": "The diagnostic identifier.",
+ "type": "string"
+ },
+ "location": {
+ "description": "The optional source location of the diagnostic.",
+ "properties": {
+ "column": {
+ "description": "The one-based column number.",
+ "type": "integer"
+ },
+ "document": {
+ "description": "The resolved document.",
+ "properties": {
+ "documentId": {
+ "description": "The document identifier.",
+ "type": "string"
+ },
+ "path": {
+ "description": "The normalized document path.",
+ "type": "string"
+ },
+ "projectId": {
+ "description": "The owning project identifier.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "documentId",
+ "path",
+ "projectId"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "line": {
+ "description": "The one-based line number.",
+ "type": "integer"
+ },
+ "selector": {
+ "description": "The canonical selector that can resolve this source location again.",
+ "properties": {
+ "span": {
+ "properties": {
+ "document": {
+ "description": "Provide exactly one of path or documentId.",
+ "properties": {
+ "documentId": {
+ "description": "Workspace-local document ID.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "path": {
+ "description": "Workspace-relative path.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "project": {
+ "description": "Disambiguates documents with matching paths or IDs.",
+ "properties": {
+ "name": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "path": {
+ "description": "Workspace-relative path.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "projectId": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "targetFramework": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "range": {
+ "description": "Zero-based UTF-16 range.",
+ "properties": {
+ "length": {
+ "description": "UTF-16 code-unit length.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "start": {
+ "description": "Zero-based UTF-16 offset.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "document",
+ "range"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "span"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "snapshot": {
+ "description": "The exact immutable workspace snapshot associated with this location.",
+ "properties": {
+ "snapshotId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "transactionRevision": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "workspaceEpoch": {
+ "type": "integer"
+ },
+ "workspaceId": {
+ "format": "uuid",
+ "type": "string"
+ }
+ },
+ "required": [
+ "workspaceId",
+ "workspaceEpoch",
+ "snapshotId",
+ "transactionRevision"
+ ],
+ "type": "object"
+ },
+ "span": {
+ "description": "The resolved text span.",
+ "properties": {
+ "length": {
+ "description": "UTF-16 code-unit length.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "start": {
+ "description": "Zero-based UTF-16 offset.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "snapshot"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "message": {
+ "description": "The diagnostic message.",
+ "type": "string"
+ },
+ "severity": {
+ "description": "The diagnostic severity.",
+ "enum": [
+ "Hidden",
+ "Info",
+ "Warning",
+ "Error"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "message"
+ ],
+ "type": "object"
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+ },
+ "projectCount": {
+ "description": "The loaded project count, when present.",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "reloadRequired": {
+ "description": "Whether the workspace requires reload.",
+ "type": "boolean"
+ },
+ "state": {
+ "description": "The workspace lifecycle state.",
+ "enum": [
+ "Ready",
+ "TransactionActive",
+ "TransactionConflicted",
+ "WorkspaceOutOfDate"
+ ],
+ "type": "string"
+ },
+ "transaction": {
+ "description": "The active transaction info, when present.",
+ "properties": {
+ "canCommit": {
+ "description": "Whether the staged transaction can be committed to disk.",
+ "type": "boolean"
+ },
+ "canMutate": {
+ "description": "Whether mutation tools may stage another change.",
+ "type": "boolean"
+ },
+ "canRedo": {
+ "description": "Whether transaction history can move to the following revision.",
+ "type": "boolean"
+ },
+ "canRollback": {
+ "description": "Whether the complete staged transaction can be discarded.",
+ "type": "boolean"
+ },
+ "canUndo": {
+ "description": "Whether transaction history can move to the preceding revision.",
+ "type": "boolean"
+ },
+ "maxRevisions": {
+ "description": "Maximum number of revisions the transaction can retain.",
+ "type": "integer"
+ },
+ "remainingRevisions": {
+ "description": "Number of additional revisions that can be staged.",
+ "type": "integer"
+ },
+ "revision": {
+ "description": "Current staged transaction revision.",
+ "type": "integer"
+ },
+ "revisionCount": {
+ "description": "Number of revisions retained in transaction history.",
+ "type": "integer"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "workspace": {
+ "description": "The loaded workspace identity, when present.",
+ "properties": {
+ "alias": {
+ "description": "The optional caller-friendly alias.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "loadedPath": {
+ "description": "The absolute path of the loaded workspace.",
+ "type": "string"
+ },
+ "workspaceEpoch": {
+ "description": "The workspace epoch for the loaded baseline.",
+ "type": "integer"
+ },
+ "workspaceId": {
+ "description": "The stable server-generated workspace identifier.",
+ "format": "uuid",
+ "type": "string"
+ },
+ "workspaceRoot": {
+ "description": "The absolute repository or workspace root used for coordination and transaction boundaries.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "loadedPath",
+ "workspaceRoot"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "ok": {
+ "const": true,
+ "description": "Whether the tool invocation succeeded."
+ },
+ "snapshot": {
+ "description": "Exact immutable workspace snapshot associated with the result, when available.",
+ "properties": {
+ "snapshotId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "transactionRevision": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "workspaceEpoch": {
+ "type": "integer"
+ },
+ "workspaceId": {
+ "format": "uuid",
+ "type": "string"
+ }
+ },
+ "required": [
+ "workspaceId",
+ "workspaceEpoch",
+ "snapshotId",
+ "transactionRevision"
+ ],
+ "type": "object"
+ },
+ "warnings": {
+ "description": "Non-fatal warnings the agent should consider.",
+ "items": {
+ "$ref": "#/$defs/warningInfo"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ok",
+ "data"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "continuation": {
+ "description": "Action the agent should take before retrying or continuing.",
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "instruction": {
+ "description": "Agent-facing instruction explaining how to continue.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "CallTool",
+ "description": "Action required before the original request can continue."
+ },
+ "tool": {
+ "description": "Tool to call before continuing the original request.",
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "tool",
+ "instruction"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "instruction": {
+ "description": "Agent-facing instruction explaining how to continue.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "ChooseTool",
+ "description": "Action required before the original request can continue."
+ },
+ "tools": {
+ "description": "Allowed tool choices from which the agent must select one.",
+ "items": {
+ "description": "Name of a tool the agent may choose.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "required": [
+ "kind",
+ "tools",
+ "instruction"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "instruction": {
+ "description": "Agent-facing instruction explaining how to continue.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "RetryRequest",
+ "description": "Action required before the original request can continue."
+ }
+ },
+ "required": [
+ "kind",
+ "instruction"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "instruction": {
+ "description": "Agent-facing instruction explaining how to continue.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "ReviseRequest",
+ "description": "Action required before the original request can continue."
+ }
+ },
+ "required": [
+ "kind",
+ "instruction"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "instruction": {
+ "description": "Agent-facing instruction explaining how to continue.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "ResolveExternally",
+ "description": "Action required before the original request can continue."
+ }
+ },
+ "required": [
+ "kind",
+ "instruction"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "diagnostics": {
+ "description": "Diagnostics that explain the failed invocation.",
+ "items": {
+ "properties": {
+ "id": {
+ "description": "The diagnostic identifier.",
+ "type": "string"
+ },
+ "location": {
+ "description": "The optional source location of the diagnostic.",
+ "properties": {
+ "column": {
+ "description": "The one-based column number.",
+ "type": "integer"
+ },
+ "document": {
+ "description": "The resolved document.",
+ "properties": {
+ "documentId": {
+ "description": "The document identifier.",
+ "type": "string"
+ },
+ "path": {
+ "description": "The normalized document path.",
+ "type": "string"
+ },
+ "projectId": {
+ "description": "The owning project identifier.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "documentId",
+ "path",
+ "projectId"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "line": {
+ "description": "The one-based line number.",
+ "type": "integer"
+ },
+ "selector": {
+ "description": "The canonical selector that can resolve this source location again.",
+ "properties": {
+ "span": {
+ "properties": {
+ "document": {
+ "description": "Provide exactly one of path or documentId.",
+ "properties": {
+ "documentId": {
+ "description": "Workspace-local document ID.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "path": {
+ "description": "Workspace-relative path.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "project": {
+ "description": "Disambiguates documents with matching paths or IDs.",
+ "properties": {
+ "name": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "path": {
+ "description": "Workspace-relative path.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "projectId": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "targetFramework": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "range": {
+ "description": "Zero-based UTF-16 range.",
+ "properties": {
+ "length": {
+ "description": "UTF-16 code-unit length.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "start": {
+ "description": "Zero-based UTF-16 offset.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "document",
+ "range"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "span"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "snapshot": {
+ "description": "The exact immutable workspace snapshot associated with this location.",
+ "properties": {
+ "snapshotId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "transactionRevision": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "workspaceEpoch": {
+ "type": "integer"
+ },
+ "workspaceId": {
+ "format": "uuid",
+ "type": "string"
+ }
+ },
+ "required": [
+ "workspaceId",
+ "workspaceEpoch",
+ "snapshotId",
+ "transactionRevision"
+ ],
+ "type": "object"
+ },
+ "span": {
+ "description": "The resolved text span.",
+ "properties": {
+ "length": {
+ "description": "UTF-16 code-unit length.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "start": {
+ "description": "Zero-based UTF-16 offset.",
+ "maximum": 2147483647,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "snapshot"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "message": {
+ "description": "The diagnostic message.",
+ "type": "string"
+ },
+ "severity": {
+ "description": "The diagnostic severity.",
+ "enum": [
+ "Hidden",
+ "Info",
+ "Warning",
+ "Error"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "message"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "error": {
+ "description": "Structured error details when the invocation failed.",
+ "properties": {
+ "code": {
+ "description": "Stable machine-readable error code.",
+ "type": "string"
+ },
+ "correlationId": {
+ "description": "Correlation identifier for matching the failure to server-side diagnostics, when available.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "message": {
+ "description": "Human-readable explanation of the failure.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ],
+ "type": "object"
+ },
+ "ok": {
+ "const": false,
+ "description": "Whether the tool invocation succeeded."
+ },
+ "warnings": {
+ "description": "Non-fatal warnings the agent should consider.",
+ "items": {
+ "$ref": "#/$defs/warningInfo"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ok",
+ "error"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "diagnostics": {
+ "description": "Diagnostics that explain the failed invocation.",
+ "properties": {
+ "detailsAvailable": {
+ "const": true
+ },
+ "detailsTool": {
+ "const": "get-error-details"
+ }
+ },
+ "required": [
+ "detailsAvailable",
+ "detailsTool"
+ ],
+ "type": "object"
+ },
+ "error": {
+ "description": "Structured error details when the invocation failed.",
+ "properties": {
+ "code": {
+ "const": "UnhandledException"
+ },
+ "correlationId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "message": {
+ "const": "Tool execution failed."
+ }
+ },
+ "required": [
+ "code",
+ "message",
+ "correlationId"
+ ],
+ "type": "object"
+ },
+ "ok": {
+ "const": false,
+ "description": "Whether the tool invocation succeeded."
+ },
+ "reporting": {
+ "description": "Error-reporting workflow available for an unhandled failure.",
+ "properties": {
+ "canPrepare": {
+ "type": "boolean"
+ },
+ "prepareTool": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "state": {
+ "enum": [
+ "Available",
+ "AlwaysApproved",
+ "DisabledByConfiguration",
+ "ApprovalUnavailable"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "state"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "ok",
+ "error",
+ "diagnostics"
+ ],
+ "type": "object"
+ }
+ ],
+ "type": "object"
+}