Analyze Disposables
analyze-disposables · Query · CorePlugin · Code analysis
Returns advisory findings for undisposed local disposable values.
Availability: Built in and published in every operational mode.
Generated from Roslyn Workbench MCP 1.0.1 (1.0.1).
Behaviour annotations
| Annotation | Value |
|---|---|
destructiveHint |
false |
idempotentHint |
true |
openWorldHint |
false |
readOnlyHint |
true |
title |
"Analyze Disposables" |
Request
| Property | Type | Required | Description |
|---|---|---|---|
scope |
object | null |
No | The optional search scope. |
findingsLimit |
integer | null |
No | Maximum number of results to return. |
workspace |
object | null |
No | Provide workspaceId, alias, path, or any combination. |
Response
Success response
| Property | Type | Required | Description |
|---|---|---|---|
ok |
boolean constant (true) |
Yes | Whether the tool invocation succeeded. |
data |
object | null |
Yes | Tool-specific result payload. |
snapshot |
object |
Yes | Exact immutable workspace snapshot associated with the result, when available. |
warnings |
array |
No | Non-fatal warnings the agent should consider. |
Error response
| Property | Type | Required | Description |
|---|---|---|---|
ok |
boolean constant (false) |
Yes | Whether the tool invocation succeeded. |
error |
object |
Yes | Structured error details when the invocation failed. |
continuation |
oneOf |
No | Action the agent should take before retrying or continuing. |
diagnostics |
array |
No | Diagnostics that explain the failed invocation. |
warnings |
array |
No | Non-fatal warnings the agent should consider. |
Error response
| Property | Type | Required | Description |
|---|---|---|---|
ok |
boolean constant (false) |
Yes | Whether the tool invocation succeeded. |
error |
object |
Yes | Structured error details when the invocation failed. |
diagnostics |
object |
Yes | Diagnostics that explain the failed invocation. |
reporting |
object |
No | Error-reporting workflow available for an unhandled failure. |
Bounded collections and continuation
These response locations publish returned items with explicit bounds and continuation state:
$/oneOf/0/properties/data/properties/findings
Continuations and required actions
A response may include a structured continuation at the following schema location. Follow its tool call or user-action instruction instead of guessing how to continue:
$/oneOf/1/properties/continuation
Complete input schema
{
"type": "object",
"properties": {
"scope": {
"description": "The optional search scope.",
"type": [
"object",
"null"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"Solution",
"Project",
"Document",
"Projects"
],
"default": "Solution"
},
"project": {
"description": "Used only when kind is Project.",
"type": [
"object",
"null"
],
"properties": {
"projectId": {
"type": "string"
},
"name": {
"type": "string"
},
"path": {
"description": "Workspace-relative path.",
"type": "string"
},
"targetFramework": {
"type": "string"
}
}
},
"document": {
"description": "Used only when kind is Document.",
"type": [
"object",
"null"
],
"properties": {
"project": {
"description": "Disambiguates documents with matching paths or IDs.",
"type": [
"object",
"null"
],
"properties": {
"projectId": {
"type": "string"
},
"name": {
"type": "string"
},
"path": {
"description": "Workspace-relative path.",
"type": "string"
},
"targetFramework": {
"type": "string"
}
}
},
"path": {
"description": "Workspace-relative path.",
"type": "string"
},
"documentId": {
"description": "Workspace-local document ID.",
"type": "string"
}
}
},
"projects": {
"description": "Used only when kind is Projects.",
"type": [
"array",
"null"
],
"items": {
"description": "Provide projectId, name, path, targetFramework, or any combination.",
"type": [
"object",
"null"
],
"properties": {
"projectId": {
"type": "string"
},
"name": {
"type": "string"
},
"path": {
"description": "Workspace-relative path.",
"type": "string"
},
"targetFramework": {
"type": "string"
}
}
}
}
}
},
"findingsLimit": {
"description": "Maximum number of results to return.",
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 2147483647,
"default": 50
},
"workspace": {
"description": "Provide workspaceId, alias, path, or any combination.",
"type": [
"object",
"null"
],
"properties": {
"workspaceId": {
"type": "string",
"format": "uuid"
},
"alias": {
"type": "string"
},
"path": {
"description": "Absolute workspace path.",
"type": "string"
}
}
}
}
}
Complete output schema
{
"type": "object",
"oneOf": [
{
"type": "object",
"required": [
"ok",
"data",
"snapshot"
],
"properties": {
"ok": {
"const": true,
"description": "Whether the tool invocation succeeded."
},
"data": {
"type": [
"object",
"null"
],
"properties": {
"findings": {
"description": "The returned findings.",
"type": "object",
"properties": {
"items": {
"description": "Items returned in this page.",
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"kind": {
"description": "The finding kind.",
"type": "string"
},
"symbol": {
"description": "The associated local symbol.",
"type": [
"object",
"null"
],
"properties": {
"displayName": {
"description": "The display name of the symbol.",
"type": "string"
},
"kind": {
"description": "The symbol kind.",
"type": "string"
},
"documentationCommentId": {
"description": "The documentation comment identifier, when available.",
"type": [
"string",
"null"
]
},
"location": {
"description": "The optional source location of the symbol.",
"type": [
"object",
"null"
],
"properties": {
"document": {
"description": "The resolved document.",
"type": [
"object",
"null"
],
"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"
]
},
"span": {
"description": "The resolved text span.",
"type": [
"object",
"null"
],
"properties": {
"start": {
"description": "Zero-based UTF-16 offset.",
"type": "integer",
"minimum": 0,
"maximum": 2147483647
},
"length": {
"description": "UTF-16 code-unit length.",
"type": "integer",
"minimum": 0,
"maximum": 2147483647
}
}
},
"line": {
"description": "The one-based line number.",
"type": "integer"
},
"column": {
"description": "The one-based column number.",
"type": "integer"
},
"snapshot": {
"description": "The exact immutable workspace snapshot associated with this location.",
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"format": "uuid"
},
"workspaceEpoch": {
"type": "integer"
},
"snapshotId": {
"type": "string",
"format": "uuid"
},
"transactionRevision": {
"type": [
"integer",
"null"
]
}
},
"required": [
"workspaceId",
"workspaceEpoch",
"snapshotId",
"transactionRevision"
]
},
"selector": {
"description": "The canonical selector that can resolve this source location again.",
"type": [
"object",
"null"
],
"properties": {
"span": {
"type": "object",
"properties": {
"document": {
"description": "Provide exactly one of path or documentId.",
"type": "object",
"properties": {
"project": {
"description": "Disambiguates documents with matching paths or IDs.",
"type": [
"object",
"null"
],
"properties": {
"projectId": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"path": {
"description": "Workspace-relative path.",
"type": [
"string",
"null"
]
},
"targetFramework": {
"type": [
"string",
"null"
]
}
}
},
"path": {
"description": "Workspace-relative path.",
"type": [
"string",
"null"
]
},
"documentId": {
"description": "Workspace-local document ID.",
"type": [
"string",
"null"
]
}
}
},
"range": {
"description": "Zero-based UTF-16 range.",
"type": "object",
"properties": {
"start": {
"description": "Zero-based UTF-16 offset.",
"type": "integer",
"minimum": 0,
"maximum": 2147483647
},
"length": {
"description": "UTF-16 code-unit length.",
"type": "integer",
"minimum": 0,
"maximum": 2147483647
}
}
}
},
"required": [
"document",
"range"
]
}
},
"required": [
"span"
]
}
},
"required": [
"snapshot"
]
}
},
"required": [
"displayName",
"kind"
]
},
"type": {
"description": "The disposable type.",
"type": [
"object",
"null"
],
"properties": {
"displayName": {
"description": "The display name.",
"type": "string"
},
"kind": {
"description": "The Roslyn type kind.",
"type": "string"
},
"nullableAnnotation": {
"description": "The nullable annotation.",
"type": [
"string",
"null"
]
},
"documentationCommentId": {
"description": "The documentation-comment identifier, when available.",
"type": [
"string",
"null"
]
}
},
"required": [
"displayName",
"kind"
]
},
"location": {
"description": "The finding location.",
"type": [
"object",
"null"
],
"properties": {
"document": {
"description": "The resolved document.",
"$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/document"
},
"span": {
"description": "The resolved text span.",
"$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/span"
},
"line": {
"description": "The one-based line number.",
"type": "integer"
},
"column": {
"description": "The one-based column number.",
"type": "integer"
},
"snapshot": {
"description": "The exact immutable workspace snapshot associated with this location.",
"$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/snapshot"
},
"selector": {
"description": "The canonical selector that can resolve this source location again.",
"$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/selector"
}
},
"required": [
"snapshot"
]
},
"message": {
"description": "The finding message.",
"type": "string"
}