Roslyn Workbench MCP
Sends opt-in error reports to Sentry, using an open-source licence provided by Sentry for the server's error-reporting service.
Roslyn Workbench MCP
Your Visual Studio C# workflow, now available to your agent
The C# fixes and refactorings you use in Visual Studio 2026—now available to your AI coding agent.
Roslyn Workbench MCP gives your agent access to Roslyn Code Actions and compiler-aware C# analysis through a local MCP server. Your agent can discover applicable fixes and refactorings, apply the compiler-generated changes, and show you the result before writing source files. It uses the same .NET Compiler Platform that powers Visual Studio's C# tooling.
Related MCP server: sharplens-mcp
Put Roslyn Code Actions to work
Over 230 eligible built-in Roslyn Code Fix and refactoring providers sit behind one discovery and staging workflow. Ask your agent to:
Extract a method, introduce a parameter, inline a temporary variable or encapsulate a field.
Convert a loop to LINQ or modernise code with an applicable Roslyn refactoring.
Discover fixes for compiler and analyzer diagnostics in the current document.
Prepare supported Fix All operations across a document, project or solution.
Stage the selected changes, inspect the transaction diff, then commit or roll back.
These are Roslyn-generated changes, selected for your actual code and project configuration—not instructions for an agent to imitate a refactoring with text replacements. See the Code Action guide for discovery, Fix All and staging.
The provider count is not a count of individual actions: a provider can offer multiple choices, and applicability depends on the code, diagnostics and project configuration. Actions requiring interactive option dialogs, package installation or unsupported project-system changes are excluded; this is not complete Visual Studio feature parity.
Understand the code before changing it
Navigate to definitions, find references and implementations, and trace callers and callees using compiler semantics.
Explore type hierarchies, project dependencies and the public API surface across persistent multi-workspace sessions.
Inspect diagnostics, async usage, nullability and control flow, and investigate change and test impact.
Keep agent responses bounded instead of loading an entire solution into the conversation.
The built-in reference catalogue contains 57 MCP tool definitions covering navigation, analysis, Code Actions and workspace management. The live tool set depends on operational mode, configuration and enabled plugins; the three Code Action tools expose many applicable fixes and refactorings without adding one MCP tool per provider.
Compiler-powered changes, reviewable transactions
Source changes are staged through transactions with preview, history, rollback, conflict detection and crash recovery. Code Actions and symbol renames use the same transaction boundary: nothing writes source files until an explicit transaction commit. In approval-required mode, review is bound to an exact-change receipt.
The server runs locally over stdio, with workspace analysis and refactoring performed on your machine. Inspection-only is the default; you choose when to enable source changes. Builds, tests and Git commits remain part of your normal development workflow.
Install
Roslyn Workbench is distributed through NuGet.org as the Lantean.Roslyn.Workbench.Mcp .NET tool and requires a supported .NET 10 SDK. Pin the exact release version you intend to run. The compatibility policy defines the stable 1.x guarantees for tools, errors and continuations, recovery formats and plugin APIs.
Run an exact package version without a permanent installation:
dnx Lantean.Roslyn.Workbench.Mcp@VERSION --yes -- --versionAlternatively, install the same package as a global tool with dotnet tool install --global Lantean.Roslyn.Workbench.Mcp --version VERSION.
See the documentation site for installation and MCP client configuration.
Configure any MCP client capable of launching a local stdio process to run:
{
"command": "roslyn-workbench-mcp",
"args": [
"--operational-mode", "inspection-only",
"--state-directory", "/absolute/path/to/roslyn-workbench-state"
]
}inspection-only is the safe default and exposes no source-mutation or transaction tools. Select transactional for client-mediated commit confirmation, approval-required for confirmation bound to an exact transaction-review receipt, or deliberately select autonomous-trusted for transactions without Host confirmation. See the configuration guide for client elicitation requirements.
Supported environments
Windows x64, Linux x64 and WSL2 x64 are supported. macOS x64 and ARM64 are best effort until hosted validation exists. Windows ARM64 and Linux ARM64 are not currently supported release targets. The server can be used by any MCP client that supports local stdio servers; operations requiring elicitation depend on the client advertising and permitting it.
Improve agent tool selection
Connecting Roslyn Workbench makes its tools available, but an MCP client may not select them automatically when ordinary file and text-search tools can also attempt the task. Short repository instructions can tell an agent when compiler-aware tooling is the better choice without forcing it into every C# workflow.
Add this basic instruction to the user-level guidance used by your agent, or to repository guidance when it should apply only to a particular codebase:
## Roslyn Workbench
When Roslyn Workbench MCP is available, consider using it for C# work that benefits from compiler semantics, including precise symbol navigation, references, diagnostics, code structure, Code Actions, change-impact analysis and transactional source changes. Its semantic tools are particularly useful when symbol identity or compiler interpretation matters, while the repository's normal tools and commands remain suitable for builds, tests, package management, documentation and non-semantic file operations. Transaction previews and structured next actions can help keep source changes safe and easy to review.The documentation site explains user-level and repository-level setup for Codex, GitHub Copilot, Claude Code and other MCP clients. User-level guidance avoids repeating the instruction when Roslyn Workbench is available across repositories, while repository guidance can provide a more specific layer for an individual codebase.
Trust and transaction safety
Open only workspaces you trust. Loading a workspace evaluates MSBuild project logic and later operations can load project analyzers with the Host process's operating-system permissions. External plugin loading is disabled by default; supplying --enable-plugins explicitly opts into loading configured third-party plugins as trusted in-process code, which is not sandboxed.
A typical safe workflow when transactional or autonomous-trusted mode is configured is:
Inspect
server-statusand open a trusted solution, solution filter or project withworkspace-open.Use query tools to inspect the loaded workspace.
Check
workspace-status, then begin a transaction withtransaction-start.Stage a mutation or Code Action and inspect it with
transaction-preview.Commit the reviewed transaction or discard it with
transaction-rollback.
The live MCP tools/list response is authoritative for the tools and schemas exposed by a running instance. The documentation site provides the richer versioned tool reference and agent guide.
Plugins and contributions
Plugin authors reference the separate Lantean.Roslyn.Workbench.Mcp.Plugins package. See the plugin-authoring guide for the supported API and deployment layout. Users install trusted plugins manually; there is no curated plugin repository.
External pull requests are accepted. Discuss the scope first and sign every contributed commit with a cryptographic signature that GitHub can verify. See the contribution policy for the process.
Support and project links
Thanks
Roslyn Workbench MCP is made possible by the .NET Compiler Platform. Thank you to the Roslyn team for building and maintaining the compiler tooling that powers its semantic analysis and refactoring capabilities.
Thank you to Sentry for supporting the project with an open-source licence for its opt-in error-reporting service.
Roslyn Workbench MCP is licensed under the MIT License.
Available Tools
48 toolsanalyze-asyncAnalyze AsyncARead-onlyIdempotent
Returns bundled AsyncFixer diagnostics and compiler diagnostic CS4014 for a selected scope.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | The optional search scope. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| findingsLimit | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so safety is covered without description help. The description adds the specific diagnostic bundle being returned, but does not explain scope defaults, whether analysis is fresh or cached, or how findingsLimit truncation behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with zero filler or repetition. Every word earns its place by identifying the return content and the scoping condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no description, and the annotations plus full schema coverage handle safety and parameter semantics. The description adequately states what the tool returns, though it omits sibling routing guidance that would make selection among the large analyze-* family fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so scope, workspace, and findingsLimit are already fully documented in the schema, including the default of 50 for findingsLimit. The description adds only 'for a selected scope' and no further format, default, or interaction details, which meets the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and names the exact diagnostic sets produced: bundled AsyncFixer diagnostics and compiler diagnostic CS4014. This distinguishes it from broader siblings such as get-diagnostics and from other analyzers like analyze-nullability or analyze-disposables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It never says when to choose this tool over get-diagnostics or the other analyze-* siblings, nor does it give any prerequisites or exclusions. The only usage signal is implicit in the tool name and the specific diagnostic names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze-control-flowAnalyze Control FlowCRead-onlyIdempotent
Analyzes control flow for an exact complete statement or contiguous statement range.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | An exact complete statement or contiguous statement range to analyze. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| exitsLimit | No | Maximum number of exit points to return. | |
| returnsLimit | No | Maximum number of return statements to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no note on snapshot consistency requirements, no mention of what the exits/returns limits govern, and the statement-range constraint it does state is already repeated in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource front-loaded and no filler. It is efficient, though the same brevity is what leaves the gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool — nested location objects, workspace disambiguation, snapshot echoing, and two result limits — yet the description never touches snapshot consistency, result limits, or how the output relates to the control-flow graph. The output schema covers return values, but the description leaves the agent without enough to call this confidently against its near-duplicate sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the nested location, workspace, exitsLimit/returnsLimit defaults, and expectedSnapshot semantics, so the schema does the heavy lifting. The description adds no parameter meaning beyond it, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (analyzes control flow) and narrows the input scope to 'an exact complete statement or contiguous statement range.' However, it gives no differentiation from the very close sibling get-control-flow-graph (or analyze-data-flow), so an agent cannot tell them apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-routing guidance at all. With get-control-flow-graph and analyze-data-flow in the sibling list, this tool needs an explicit disambiguation cue that is entirely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze-data-flowAnalyze Data FlowBRead-onlyIdempotent
Analyzes data flow for an exact expression, complete statement, or contiguous statement range.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | An exact expression, complete statement or contiguous statement range to analyze. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| symbolsPerCategoryLimit | No | Maximum number of symbols to return in each data-flow category. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds only the input-scope constraint and says nothing about snapshot consistency, workspace requirements, or operational behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the purpose is stated immediately and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich input schema, an output schema, and annotations covering safety, the description need not explain return values or destructive behavior. However, it does not disambiguate from close siblings such as analyze-control-flow, analyze-nullability, and analyze-async, nor does it mention the expectedSnapshot consistency requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters including nested location, workspace, expectedSnapshot, and symbolsPerCategoryLimit. The description merely restates the location granularity already present in the schema description, adding no parameter syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Analyzes') and resource ('data flow') and names the accepted input granularity (exact expression, complete statement, contiguous statement range). This distinguishes it from siblings like analyze-control-flow, but does not explicitly route away from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, prerequisites, or alternative tools. The only context is the accepted input granularity, leaving selection between this and other analyze-* tools to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze-disposablesAnalyze DisposablesBRead-onlyIdempotent
Returns advisory findings for undisposed local disposable values.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | The optional search scope. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| findingsLimit | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral detail — that results are 'advisory' rather than enforced — but says nothing about scoping behavior, cost, or what 'undisposed' resolution means. Adequate but thin for an analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource front-loaded and no filler. It is efficient, though arguably too terse to earn a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations carry the safety profile. However, for a scoped analysis tool with optional scope/workspace parameters, the description omits any hint about default scoping behavior or result interpretation, leaving a mild gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (scope, workspace, findingsLimit) are documented in the schema, so the baseline of 3 applies. The description adds no semantics beyond that, not even clarifying how scope kinds interact with workspace selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Returns') and a precise resource ('advisory findings for undisposed local disposable values'), which cleanly separates it from sibling analyzers like analyze-nullability and analyze-async. It lacks any explicit sibling contrast, but the domain is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this tool versus the other analyze-* or find-unused-symbols siblings, nor any prerequisites or exclusions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze-nullabilityAnalyze NullabilityBRead-onlyIdempotent
Returns nullable-flow diagnostics for a selected scope or location.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Selects documents or projects to analyse when location is omitted; omitted searches the loaded solution. Ignored when location is supplied. | |
| location | No | Provide exactly one of span or selection. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| findingsLimit | No | Caps returned nullable-flow diagnostics. Omitted or null uses 50; zero returns no findings. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety and repeatability profile is fully covered. The description adds only the output type ('nullable-flow diagnostics') and does not disclose result shape, ordering, or how findingsLimit truncation behaves, though the output schema presumably carries return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the resource ('nullable-flow diagnostics') is stated immediately. It is lean to the point of being terse, but nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description need not explain return values. Still, for a tool with five nested, optional parameters and a rich sibling set, one sentence leaves the agent to infer the scope-vs-location precedence and the family boundaries from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents scope, location, workspace, findingsLimit, and expectedSnapshot in detail. The description adds no parameter-level meaning beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Returns nullable-flow diagnostics'. This is more precise than the title and tells the agent it is about nullability analysis rather than general diagnostics. However, it does not distinguish itself from siblings like get-diagnostics or the other analyze-* tools (analyze-data-flow, analyze-async), so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for a selected scope or location' implies the operating context and matches the scope/location parameters, giving implied usage. But there is no explicit when-to-use vs get-diagnostics or analyze-data-flow, and no when-not-to-use or prerequisite guidance, so routing between the analyze-* family is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-calleesFind CalleesARead-onlyIdempotent
Returns symbols directly invoked by a method or selected executable body. Input: Provide exactly one of symbol or location.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Symbol whose callees should be found. | |
| location | No | Source location or executable region whose contained callees should be found. | |
| maxDepth | No | The maximum call depth to traverse when indirect callees are included. Direct callees are at depth one. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| calleesLimit | No | Maximum number of results to return. | |
| includeIndirect | No | Whether reachable source callees should be traversed transitively. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds only the direct-vs-indirect scope hint; it says nothing about depth, pagination, or performance that isn't already in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core return semantics front-loaded ahead of the input constraint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with an output schema and full annotation coverage, the description supplies purpose and the key mutual-exclusivity input rule; return values and traversal options are fully specified by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and it also repeats the 'exactly one of symbol or location' rule, so the description adds no new parameter meaning. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns symbols directly invoked by a method or selected executable body') and the word 'directly' distinguishes the direct-callee scope. However it never names its inverse sibling find-callers, so the agent must infer the direction from the name alone rather than the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an invocation constraint ('Provide exactly one of symbol or location') but offers no when-to-use/when-not-to-use guidance and does not route the agent to find-callers or includeIndirect alternatives. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-callersFind CallersBRead-onlyIdempotent
Returns bounded direct source call sites and containing symbols.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Limits caller discovery to the selected documents or projects; omitted searches the loaded solution. | |
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| callersLimit | No | Caps returned callers independently of the call-site limit. Omitted or null uses 100; zero returns no callers. | |
| includeContext | No | Include the trimmed source line for each returned call site when available; defaults to false. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| callSitesPerCallerLimit | No | Caps call sites independently for each returned caller. Omitted or null uses 100; zero retains callers without call sites. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds 'direct' (non-transitive) and 'bounded', which are genuine behavioral clues, but says nothing about how the bounds interact with callersLimit/callSitesPerCallerLimit or truncation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; 'bounded' and 'direct' are the two highest-value qualifiers placed before the resource. It is efficient, though arguably too terse for a seven-parameter nested-object tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with seven parameters, nested scope/symbol objects, and dozens of sibling lookup tools, the definition omits the usage and sibling-routing context an agent needs. Missing when-to-use guidance is a real gap at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters, including the limits and snapshot fields. The description contributes no additional parameter meaning beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear resource (direct source call sites and their containing symbols) and implicitly restricts scope with 'direct'. It distinguishes conceptually from transitive reference search, though it never names the sibling tools like find-references or find-callees that an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no comparison to the many related siblings (find-references, find-callees, find-implementations). 'Direct' hints at a scope but the agent gets no explicit routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-dependency-cyclesFind Dependency CyclesBRead-onlyIdempotent
Returns detected dependency cycles for the selected scope and granularity.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | The scope to analyse. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| edgesLimit | No | The maximum number of graph edges to analyse. | |
| nodesLimit | No | The maximum number of graph nodes to analyse. | |
| cyclesLimit | No | Maximum number of results to return. | |
| granularity | No | The dependency graph granularity. | Type |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description only adds the scoping qualifier ('selected scope and granularity'), which is largely schema restatement, and says nothing about how limits affect results or how cycles are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the key qualifier (scope and granularity) appears immediately. It is efficient, though its brevity edges toward under-specification rather than tight conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations plus full schema coverage handle safety and parameters. However, for a tool with a nested 4-mode scope and three tuning limits, the description says almost nothing about what a cycle means or how scope/granularity shape the result, leaving a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including the four scope kinds, workspace, and the three limits. The description only mentions scope and granularity by name and adds no format or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns) and resource (detected dependency cycles) scoped by the selected inputs. An agent can distinguish it from get-dependency-graph because it names cycles specifically, though it never explicitly contrasts with the graph siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use context, no prerequisites, and no alternatives. It does not tell the agent when to prefer this over get-dependency-graph or get-change-impact, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-derived-typesFind Derived TypesCRead-onlyIdempotent
Finds derived types for a resolved base type.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution. | |
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| maxDepth | No | Maximum traversal depth; directly derived types are at depth one. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| derivedTypesLimit | No | Caps returned derived types within maxDepth. Omitted or null uses 100; zero returns no derived types. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. However, the description adds nothing about traversal behavior, ordering of results, or how depth/limit interact — context that matters for a graph-traversal tool. The word 'resolved' hints that the input must be a resolved symbol but is never explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded and without filler. It is concise, though its brevity reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 6-parameter tool with heavy nested objects, graph-traversal semantics, and 47 sibling tools, a one-sentence description is inadequate. It omits how 'resolved base type' input is obtained, what 'derived types' includes, and how this differs from overlapping siblings such as find-implementations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the complex nested parameters (scope, symbol, maxDepth, derivedTypesLimit, expectedSnapshot). The description contributes nothing beyond that, which is the baseline case when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Finds derived types for a resolved base type' restates the tool name almost verbatim without adding specificity. It doesn't distinguish this from closely related siblings like find-implementations, get-type-hierarchy, or find-overrides, all of which operate on type relationships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus find-implementations, get-type-hierarchy, or find-overrides, which are the obvious alternatives for type-relationship queries. The agent is left to guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-duplicate-codeFind Duplicate CodeBRead-onlyIdempotent
Returns bounded duplicate executable-block pointers that normalize to the same statement sequence.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | The optional search scope. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| groupsLimit | No | Maximum number of results to return. | |
| minimumStatements | No | The minimum statement count to consider. | |
| occurrencesPerGroupLimit | No | Maximum number of occurrences to return for each duplicate group. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is fully covered. The description adds one genuinely useful behavioral fact — that duplication is semantic (normalized statement sequence), not textual — plus the notion that results are 'bounded'. However it omits grouping behavior, ordering, and truncation semantics, so it adds only moderate context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though for a five-parameter analysis tool with an elaborate scope hierarchy the complete absence of any second sentence makes it feel under-specified rather than truly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the schema fully documents parameters. Still, the description omits the default scope (Solution), the meaning of minimumStatements and the limit parameters, and any cue about when this analysis is the right call versus the many other analysis siblings — leaving meaningful interpretive gaps for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so scope, workspace, groupsLimit, minimumStatements and occurrencesPerGroupLimit are all documented in the schema. The description contributes nothing about parameter meaning (it never mentions scoping, statement thresholds, or limits), so the baseline 3 for fully-covered schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns duplicate code blocks matched by normalized statement sequences. The 'executable-block / normalize to the same statement sequence' phrasing is dense jargon but does pinpoint exactly what class of duplicates is found, which no sibling tool covers. It stops short of naming or contrasting any sibling, keeping it out of 5 territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives, and no indication of prerequisites or when results would be empty. An agent must infer from the tool name alone that this is the duplicate-detection entry point rather than, say, find-unused-symbols or get-dependency-graph.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-implementationsFind ImplementationsCRead-onlyIdempotent
Finds implementations of an interface or abstract member.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution. | |
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| implementationsLimit | No | Caps returned distinct implementation symbols. Omitted or null uses 100; zero returns no implementations. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose the safety profile (read-only, idempotent, non-destructive, closed-world), but the description adds no behavioral context beyond them. It does not mention scope resolution, the implementations limit, or what the result set represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no filler, so it is structurally efficient. It is arguably under-specified for a tool with five nested parameters and many close siblings, but conciseness itself is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, existing output schema, and safety annotations, the description need not restate parameter or return details. However, for a complex symbol-navigation tool with many related siblings, the absence of any usage or alternative guidance leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the detailed nested parameter documentation already carries the burden. The description adds no parameter meaning beyond the schema, which is acceptable for a baseline 3 under the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it finds implementations of an interface or abstract member. This is clear enough to distinguish the tool from most siblings, but it does not explicitly contrast itself with close alternatives such as find-derived-types, find-overrides, or find-references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no when-to-use guidance, no exclusions, and no named alternatives. The only implied usage is the bare purpose itself, leaving the agent to infer when this tool is preferable to find-derived-types or find-overrides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-overloadsFind OverloadsARead-onlyIdempotent
Returns overload signatures for a resolved method or constructor.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| overloadsLimit | No | Maximum number of results to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that it operates on an already-resolved method/constructor, which is meaningful context, but says nothing about result capping (overloadsLimit) or snapshot behavior. With annotations carrying the safety burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the resource and its precondition are stated in the first few words. Nothing needs to be cut or moved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small read-only query tool with a full output schema and complete annotations, the description covers the essential point (overloads of a resolved member) and the implicit prerequisite. It could have mentioned the default result cap or the distinction from find-overrides, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (symbol selector, workspace, overloadsLimit, expectedSnapshot) is already documented in the schema, making 3 the baseline. The description only echoes the 'resolved method or constructor' constraint on the symbol selector and adds no format or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Returns') and resource ('overload signatures') plus the scope ('for a resolved method or constructor'), so the agent knows exactly what comes back. It does not name or distinguish itself from near siblings such as find-overrides or get-symbol-members, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'a resolved method or constructor' signals that the symbol must already be resolved (e.g. via resolve-symbol), which is a useful implicit prerequisite. There is no explicit when/when-not guidance or naming of alternatives such as find-overrides, so no more than a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-overridesFind OverridesCRead-onlyIdempotent
Finds overrides of a virtual or abstract member.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution. | |
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| overridesLimit | No | Caps returned distinct overriding members. Omitted or null uses 100; zero returns no overrides. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds nothing behavioral—no note on ordering, the 100-item cap semantics, or what happens when the symbol is not virtual/abstract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with zero filler and the core purpose front-loaded. It is efficient, though its brevity borders on under-specification rather than pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with nested scope/symbol objects, a snapshot parameter, and an output schema, sitting among many closely related symbol-analysis siblings. One sentence with no usage routing or behavioral detail is inadequate for an agent to confidently select it over find-implementations or find-overloads.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents scope kinds, symbol location/selection exclusivity, and the overridesLimit cap. The description adds no parameter meaning at all, which is acceptable but not additive given the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (finds) and resource (overrides of a virtual or abstract member), which is more precise than the generic name. It implicitly distinguishes itself from find-implementations by scoping to virtual/abstract members, but never names or contrasts any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites (e.g., symbol must resolve to a virtual/abstract member), and no direction on choosing between this and find-implementations, find-derived-types, or find-overloads in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-referencesFind ReferencesCRead-onlyIdempotent
Finds source references, optionally including declarations and access classification.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Limits references and declarations to the selected documents or projects; omitted searches the loaded solution. | |
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| includeContext | No | Include the trimmed source line for each returned reference when available; declaration entries have no context. Defaults to false. | |
| referencesLimit | No | Caps returned occurrences, including declarations when requested. Omitted or null uses 100; zero returns no occurrences. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| includeDefinitions | No | Include source declarations alongside references within the same result limit; defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds little beyond that: it does not mention the default 100-result cap, snapshot/expectedSnapshot concurrency semantics, or the exactly-one-of constraints on symbol identification, all of which materially affect correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core verb and resource front-loaded and no filler. The only wasted words are 'access classification', which is unclear and earns nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the very rich input schema carries parameter semantics. But for a tool with 7 parameters, deeply nested scope/symbol objects, and snapshot echoing, one sentence is thin; it says nothing about scoping behavior, result limits, or how declarations are interleaved with references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter's meaning, including includeDefinitions, referencesLimit, and scope. The description contributes only the vague 'including declarations and access classification', which does not add syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds source references'), which is enough for an agent to know the operation. However, it never distinguishes itself from closely related siblings such as find-callers, find-implementations, or go-to-definition, and the trailing phrase 'access classification' does not map to any visible parameter, adding slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over the many adjacent symbol-navigation siblings, nor any stated prerequisites (e.g., that a workspace must be loaded, or how it differs from find-callers when you want only invocations). Usage is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-unused-symbolsFind Unused SymbolsBRead-onlyIdempotent
Returns candidate unused locals and members from compiler diagnostics.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | The optional search scope. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| candidatesLimit | No | Maximum number of results to return. | |
| includeInternal | No | Whether internal members should be included. | |
| excludeGenerated | No | Whether generated files should be excluded. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral caveat the annotations do not: results are 'candidate' symbols derived from compiler diagnostics, i.e. heuristics rather than an authoritative call graph. It says nothing about result volume or how candidatesLimit affects output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler. It is efficient, though the terseness borders on under-specification given the tool's five-parameter surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and annotations cover the safety profile. What remains missing is routing context and any hint about scope defaults or result volume, which matters for a tool with five optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (scope kinds, workspace, candidatesLimit, includeInternal, excludeGenerated) is already documented in the schema. The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (Returns) and a specific resource (unused locals and members), plus the data source (compiler diagnostics). That is enough to distinguish it from diagnostic-oriented siblings like get-diagnostics and reference-oriented ones like find-references, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no prerequisites, and no mention of when another tool (e.g. find-references or get-diagnostics) is the better choice. The agent must infer the use case purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-api-surfaceGet API SurfaceCRead-onlyIdempotent
Returns exported API symbols for a selected scope.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | The search scope. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| symbolsLimit | No | Maximum number of results to return. | |
| includeObsolete | No | Whether obsolete symbols should be included. | |
| minimumAccessibility | No | The minimum accessibility threshold as Public, Protected, or Internal. | Public |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and non-open-world, so the safety profile is covered. However, the description adds nothing beyond that — no explanation of what 'exported' means, how filtering interacts with minimumAccessibility/includeObsolete, or pagination behavior via symbolsLimit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the extreme brevity is arguably under-specification rather than a virtue for a 5-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. Still, for a tool with nested scope objects and four scope kinds (Solution/Project/Document/Projects), the description does not clarify how the scope selection works, leaving a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (scope, workspace, symbolsLimit, includeObsolete, minimumAccessibility) is documented in the schema itself. The description only echoes 'scope' without adding format or semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('returns') and resource ('exported API symbols') scoped by a selection. This distinguishes it reasonably from siblings like search-symbols or get-symbol-info, though it never explicitly names an alternative to differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the many symbol-related siblings. The agent must infer from the phrase 'exported API symbols' that this is a surface/catalog query rather than a targeted lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-change-impactGet Change ImpactBRead-onlyIdempotent
Returns a bounded impact summary and supporting source locations for a symbol change.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Selects documents for references and callers, and projects for override and implementation counts. A document scope uses its containing project for those counts; omitted searches the loaded solution. | |
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| locationsLimit | No | Caps returned reference locations without limiting impact counts. Omitted or null uses 100; zero returns counts without locations. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and a closed-world scope, so the safety profile is covered. The description adds the notion of a 'bounded' result, which hints at output limiting, but the actual bounding mechanism (the locationsLimit cap separate from counts) lives in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is appropriately terse for the concept. It is arguably too terse given the tool's complexity, but as a structural matter it wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be re-explained, but for a five-parameter tool with nested scope and symbol-resolution objects, the description omits any usage context or routing relative to the dense set of sibling analysis tools. It is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested scope, symbol location/selection, workspace, locationsLimit, and expectedSnapshot semantics are all documented in the schema itself. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a clear verb (returns) and resource (impact summary plus supporting source locations) scoped to a symbol change, so the action is understandable. However, it never distinguishes itself from the many impact-adjacent siblings such as find-references, find-callers, get-symbol-dependents, or get-test-impact, leaving the 'what makes this the impact tool' question unanswered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no exclusions. With sibling tools like get-test-impact, find-references, find-callers, and find-implementations available, an agent has no signal for choosing this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-code-contextGet Code ContextBRead-onlyIdempotent
Returns a bounded code window with the enclosing semantic context for a selected location.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | The location selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| afterLines | No | The optional number of lines to include after the selected location. | |
| beforeLines | No | The optional number of lines to include before the selected location. | |
| diagnosticsLimit | No | Maximum number of diagnostics to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| includeDiagnostics | No | Whether diagnostics should be included for the selected span. | |
| enclosingSymbolsLimit | No | Maximum number of enclosing symbols to return. | |
| includeEnclosingSymbols | No | Whether the enclosing symbol chain should be included. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered and the description cannot contradict it. The description adds a modest behavioral detail ("bounded" window, "enclosing" semantic context), but says nothing about diagnostic/symbol inclusion toggles or snapshot staleness semantics, which are the real behavioral questions for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is appropriately terse for a tool whose output schema and 9 fully-documented parameters carry the rest, though it leaves room for one routing clause without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% parameter coverage, the description needn't explain return values or field syntax, and it correctly avoids doing so. Its only real gap is the absence of selection guidance among many similar sibling tools, but for a call-correctness standpoint the definition is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with rich nested-object and per-field descriptions (UTF-16 offsets, workspace-relative paths, defaults for beforeLines/afterLines), so the schema does the heavy lifting. The description adds no parameter-level meaning beyond "selected location," so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ("Returns") and a specific resource ("a bounded code window with the enclosing semantic context"), which distinguishes it from pure symbol lookups. However, it never names or contrasts with sibling tools like get-document-outline, get-symbol-info, or go-to-definition, so an agent must infer the boundary from the schema alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "for a selected location" hints at the required input, but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. Given ~45 siblings in the code-navigation space, an agent gets no help routing to this tool versus get-symbol-info or get-document-outline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-control-flow-graphGet Control Flow GraphBRead-onlyIdempotent
Returns a bounded control-flow graph with operation metadata and exact source pointers. Input: Provide exactly one of symbol or location.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Symbol whose control-flow graph should be returned. | |
| location | No | Source location whose enclosing executable body should be graphed. | |
| maxBlocks | No | The maximum number of projected basic blocks. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| maxRegions | No | The maximum number of projected flow regions. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| maxOperationsPerBlock | No | The maximum number of projected operations in each basic block. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds that the graph is 'bounded' and includes operation metadata and exact source pointers, which is useful context. But it doesn't explain truncation behavior when bounds are hit or how the output is structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what is returned and then the input constraint. No wasted words, though the second sentence is partially redundant with the schema description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nested objects, a rich schema, and an output schema, the description is minimal. It doesn't explain the bounding parameters or how expectedSnapshot interacts with workspace state, which are non-obvious. The output schema reduces the need to describe return values, but tips on the bounding knobs are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description only restates the schema-level constraint of choosing between symbol and location, adding no meaning beyond what's already documented. It doesn't mention the bounding parameters (maxBlocks, maxRegions, maxOperationsPerBlock) that materially shape the result despite calling the graph 'bounded'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (control-flow graph) with a clear verb (Returns) and notes it includes operation metadata and source pointers. It doesn't differentiate from siblings like analyze-control-flow or get-operation-tree, which the agent would need to distinguish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the input constraint (provide one of symbol or location), but gives no explicit when-to-use guidance, no mention of alternatives, and no exclusions. Overlap with analyze-control-flow and get-operation-tree is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-dependency-graphGet Dependency GraphCRead-onlyIdempotent
Returns a bounded dependency graph for the selected scope and granularity.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | The scope to graph. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| edgesLimit | No | Maximum number of edges to return. | |
| nodesLimit | No | Maximum number of nodes to return. | |
| granularity | No | The dependency graph granularity. | Type |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior. The description adds the 'bounded' qualifier, hinting at limits, and the schema exposes edgesLimit/nodesLimit defaults, but the description does not explain truncation behavior or what 'bounded' means in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no wasted words. Slightly too terse to carry the required information, but structurally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, but for a graph tool with five parameters and many overlapping siblings, the description leaves routing and 'bounded' behavior unexplained. Inadequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (scope, workspace, edgesLimit, nodesLimit, granularity) is documented in the schema. The description adds nothing beyond naming scope and granularity, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (returns) and resource (dependency graph) with scope/granularity qualifiers. However, it does not distinguish from near-siblings like get-symbol-dependencies, get-symbol-dependents, or find-dependency-cycles, so an agent cannot easily tell which dependency tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named despite many overlapping dependency siblings. The agent gets no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-diagnosticsGet DiagnosticsBRead-onlyIdempotent
Returns compiler and analyzer diagnostics for a selected scope.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | The included diagnostic identifiers. | |
| scope | No | The optional scope selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| severities | No | The included diagnostic severities. | |
| diagnosticsLimit | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds only the nature of the payload ('compiler and analyzer diagnostics') and that scope is selectable; it discloses nothing about result limits, pagination, or freshness beyond what annotations and the output schema provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with no filler and the resource front-loaded. It is efficient, though its brevity borders on under-specification given the tool's five parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the safety profile, keeping the description adequate. However, with five parameters and a crowded sibling set, the absence of any routing guidance leaves a meaningful gap for correct tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (ids, scope, workspace, severities, diagnosticsLimit) are already documented in the schema. The description adds only 'selected scope', which maps loosely to the scope parameter and provides no syntax or format detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and resource ('compiler and analyzer diagnostics') with the scoping qualifier ('for a selected scope'). This is clear enough for an agent to know what the tool produces, though it does not name or differentiate itself from similar siblings like get-error-details or analyze-nullability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternatives. The phrase 'for a selected scope' only hints that scoping is configurable; it does not tell the agent under what conditions this tool should be preferred over the many analysis siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-document-optionsGet Document OptionsCRead-onlyIdempotent
Returns language and optional detailed parse and analyzer-config options for a document.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | Target document. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| includeParseOptions | No | Whether to include parse options. | |
| includeAnalyzerConfig | No | Whether to include effective analyser configuration. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnlyHint, idempotentHint, destructiveHint false), so the bar is lower. The description adds nothing behavioral beyond that — no note on whether parse/analyzer options reflect cached vs. on-disk state, or cost/expense considerations, despite the 'effective analyser configuration' wording implying computed state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that is front-loaded with the verb and resource; nothing is wasted. It is terse to the point of slight under-specification, but structurally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema fully covers the 4 parameters. The description is adequate but thin for a tool with nested document/workspace disambiguation semantics — it explains neither when the computed options are useful nor which option set applies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter including the nested document and workspace objects. The description loosely echoes includeParseOptions/includeAnalyzerConfig ('optional detailed parse and analyzer-config options') but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns ... options for a document') and enumerates the option categories returned (language, parse, analyzer-config). Clear enough to distinguish from analytical siblings like get-document-outline or analyze-*, though it doesn't explicitly name what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only declares what is returned; it gives no when-to-use guidance, no prerequisites, and no indication of how it differs from related tools such as get-document-outline or get-code-context. Usage is left entirely to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-document-outlineGet Document OutlineCRead-onlyIdempotent
Returns a bounded semantic outline for one document.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | Target document. | |
| maxDepth | No | The maximum semantic hierarchy depth below the document root. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| nodesLimit | No | The optional maximum total number of projected outline nodes. | |
| includeMembers | No | Whether member nodes should be included. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description's only extra signal is 'bounded', which does not explain what happens when maxDepth/nodesLimit caps are reached or whether truncation is reported. Minimal value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy — every word (verb, qualifier, resource, scope) carries meaning. It is efficient, though arguably terse for a tool with nested resolution parameters and dozens of siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the schema documents all five parameters. However, with ~47 sibling tools and non-trivial workspace/project disambiguation, a one-sentence description leaves the agent without any routing or prerequisite context, making it under-complete for this tool's actual selection difficulty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: document, project, workspace, maxDepth, and nodesLimit all carry their own descriptions, including defaults and min/max bounds. The description adds nothing about parameter semantics, so the baseline 3 for fully-documented schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and resource ('semantic outline for one document'), so the agent knows it retrieves a hierarchical view of a single document rather than a workspace or symbol listing. It does not name or contrast any sibling (e.g., get-solution-structure, get-symbol-members), which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says when to prefer this over get-document-options, get-symbol-members, or get-solution-structure, and no prerequisites (e.g., workspace open) are stated. The word 'bounded' hints at truncated output but gives no condition for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-error-detailsGet Error DetailsARead-onlyIdempotent
Returns temporary local diagnostic details for an unexpected tool failure. The result may contain paths and user-authored identifiers, is intended only for the trusted local agent, and must never be submitted externally.
| Name | Required | Description | Default |
|---|---|---|---|
| correlationId | Yes | Correlation identifier returned with the failed tool invocation. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds value by disclosing that the result is temporary, may contain paths and user-authored identifiers, and must never be submitted externally—context that the annotations alone don't provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences (plus a trailing phrase), front-loaded with the purpose before the sensitive-data caveat. It is efficient and meets the tool's complexity without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single required parameter, full schema coverage, existing output schema, and annotations that establish the safety profile, the description is nearly complete. The only gap is that it doesn't differentiate itself from sibling tools that also deal with error reporting, but nothing essential to calling the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%; the schema already fully explains correlationId and its purpose. The description adds no additional parameter guidance beyond what the schema provides, so the baseline 3 for high schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: returns diagnostic details for a tool failure, keyed implicitly to a correlation ID. It's clear what the tool does but doesn't distinguish it from sibling tools like get-diagnostics or submit-error-report, which an agent might otherwise confuse for this retrieval operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a trigger ('unexpected tool failure') and a constraint ('intended only for the trusted local agent'), which gives some context, but it never states when to use it versus siblings such as submit-error-report or prepare-error-report. Usage is only lightly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-operation-treeGet Operation TreeBRead-onlyIdempotent
Returns a bounded IOperation tree with metadata and exact source pointers.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | The selected location. | |
| maxDepth | No | The maximum traversal depth. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| nodesLimit | No | The optional maximum total number of projected operation nodes. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds useful detail beyond the annotations by noting the tree is 'bounded' (reflecting maxDepth/nodesLimit) and returns 'exact source pointers', but it does not describe truncation behavior or what happens when limits are hit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word carries weight. It is arguably under-specified rather than verbose, but it is appropriately sized and wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the annotations cover safety. However, for a 5-parameter tool with deeply nested location variants (span vs selection) and workspace disambiguation, the description gives no guidance on choosing inputs or the tool's place among siblings, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents location, maxDepth, nodesLimit, workspace, and expectedSnapshot in detail. The word 'bounded' loosely gestures at the depth/node limits but adds no syntax or meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: it 'Returns a bounded IOperation tree with metadata and exact source pointers.' This tells the agent exactly what is produced, but it offers no differentiation from analysis siblings like get-control-flow-graph, get-code-context, or get-dependency-graph, which an agent could easily confuse with an operation tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the ~48 sibling tools. The agent must infer that this is for inspecting Roslyn IOperation nodes from the name alone, with nothing routing it away from overlapping graph/context tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-partial-declarationsGet Partial DeclarationsCRead-onlyIdempotent
Returns the declarations for a partial type or method.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| declarationsLimit | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds only that the result concerns partial declarations, and says nothing about pagination against declarationsLimit, snapshot semantics of expectedSnapshot, or output shape. Modest added value over annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 11-word sentence with zero waste and the purpose front-loaded. It is concise, though its brevity is bought at the cost of the detail the other dimensions lack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a tool with a heavily nested four-parameter selector schema and a sibling list this dense, the one-line description is the minimum viable and leaves routing, snapshot usage, and pagination unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including symbol, workspace, expectedSnapshot, and declarationsLimit is already documented in-schema. The description adds no parameter meaning at all, which puts it at the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns the declarations for a partial type or method'), which is clearer than a tautology. However, among ~48 siblings it does nothing to distinguish itself from related tools such as get-symbol-info or get-code-context, and the reader must already know what a 'partial declaration' is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like get-symbol-info or get-code-context, and no preconditions or alternatives are stated. The reader is left to infer usage entirely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-project-detailsGet Project DetailsBRead-onlyIdempotent
Returns project metadata, options and selected document details.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Provide projectId, name, path, targetFramework, or any combination. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| analyzersLimit | No | Maximum number of analyzers to return. | |
| documentsLimit | No | Maximum number of documents to return. | |
| includeDocuments | No | Whether documents should be included. | |
| projectReferencesLimit | No | Maximum number of project references to return. | |
| metadataReferencesLimit | No | Maximum number of metadata references to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds only that document details are optionally included, but omits pagination/limit behavior and what 'selected' documents means. With annotations doing the heavy lifting, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the return content front-loaded and no filler. It is tight, though perhaps too terse to guide selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the schema fully documents parameters. What remains missing is routing guidance against sibling tools, which matters given the crowded sibling namespace.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (project, workspace, analyzersLimit, documentsLimit, includeDocuments, etc.) is self-documented in the schema. The description adds no parameter-level meaning beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Returns) and resource (project metadata, options, document details), so the agent knows what it retrieves. However, it does not differentiate from close siblings like get-solution-structure or get-document-options, leaving overlap ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives among the many sibling getters. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-solution-structureGet Solution StructureBRead-onlyIdempotent
Returns bounded solution folders, projects, target frameworks and direct project relationships.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| foldersLimit | No | Maximum number of folders to return. | |
| projectsLimit | No | Maximum number of projects to return. | |
| includeDocuments | No | Whether documents should be included in project projections. | |
| documentsPerProjectLimit | No | Maximum number of documents to return for each project. | |
| projectReferencesPerProjectLimit | No | Maximum number of direct project references to return for each project. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description's only added behavioral signal is 'bounded', which usefully warns that results are truncated by the limit parameters, but it never says truncation is silent, what the defaults clip to, or whether a workspace must be open first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every clause names a distinct returned resource. It is economical, though arguably so terse for a six-parameter tool that it leaves no room for the routing or limit semantics an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explainers are unnecessary, and all six optional parameters are fully described in the schema. What is missing is selection context: no statement of when this tool is preferable to get-project-details, get-dependency-graph, or get-api-surface, and no note on how the defaults interact with 'bounded'. Adequate but with a clear gap for a structure-inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (workspace, foldersLimit, projectsLimit, includeDocuments, documentsPerProjectLimit, projectReferencesPerProjectLimit) is already self-documented with defaults and bounds. The description's 'bounded ... target frameworks and direct project relationships' loosely maps to the reference and framework projections but adds no format or unit detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and enumerates the resources returned: solution folders, projects, target frameworks, and direct project relationships. This is clearly distinguishable from symbol-level siblings like get-symbol-info or get-dependency-graph, but it never explicitly contrasts itself with the closer neighbours (get-project-details, get-dependency-graph, get-api-surface).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternative. With siblings like get-project-details and get-dependency-graph in the list, an agent must guess which tool answers 'show me the solution layout' versus 'show me a project's dependencies'. The word 'bounded' hints limits matter but does not route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-symbol-attributesGet Symbol AttributesBRead-onlyIdempotent
Returns declared and inherited attributes for a resolved symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| attributesLimit | No | Maximum number of results to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| includeInherited | No | Whether inherited attributes should be included. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, covering the safety and side-effect profile. The description adds the fact that it returns both declared and inherited attributes, but does not explain result handling, error behavior, or how the snapshot/expectedSnapshot mechanism works.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence with no wasted words. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a complex nested schema and an output schema exists, so the description needn't explain return values. However, it remains terse and omits guidance on usage context and behavioral details like snapshot usage, which would help an agent invoke it correctly among many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description does not add parameter-level details beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Returns) and resource (declared and inherited attributes for a resolved symbol), making its purpose clear. It does not explicitly differentiate itself from siblings like get-symbol-info or get-symbol-members, but the operation is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives. Given the many sibling tools for symbol analysis (get-symbol-info, get-symbol-members, etc.), the description should indicate the appropriate context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-symbol-dependenciesGet Symbol DependenciesCRead-onlyIdempotent
Returns the direct symbols used by a resolved symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| dependenciesLimit | No | Maximum number of results to return. | |
| includeAssemblies | No | Whether containing assembly names should be included with each dependency. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description adds nothing behavioral beyond that: no mention of the default result limit, snapshot consistency requirements, or what 'direct' excludes. It neither contradicts nor enriches the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It is efficient, though bordering on under-specified for a tool with a deeply nested selector object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the annotations cover safety. What is missing is the distinction that matters most in this catalog: direct versus transitive traversal and dependencies versus dependents. For a tool with nested required selector objects and several similarly named siblings, the description is adequate but leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the selector, workspace, expectedSnapshot, dependenciesLimit, and includeAssemblies parameters. The description adds no parameter meaning of its own, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Returns the direct symbols used by a resolved symbol.' The word 'direct' and the direction 'used by' reasonably distinguish it from the inverse sibling get-symbol-dependents. However, it does not name that sibling, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternatives named. The catalog contains two obvious alternatives with subtle semantics: get-symbol-dependents (reverse direction) and get-dependency-graph (transitive), and the description does not route the agent between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-symbol-dependentsGet Symbol DependentsBRead-onlyIdempotent
Returns symbols that directly depend on a resolved symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Limits the source references used to discover dependents to the selected documents or projects; omitted searches the loaded solution. | |
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| dependentsLimit | No | Caps returned distinct dependent symbols. Omitted or null uses 100; zero returns no dependents. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description's one addition is 'directly,' which signals non-transitive results, a genuine behavioral trait not encoded in annotations. It stops there, saying nothing about whether results are scoped/paginated beyond the schema's limit param.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler and no redundancy. It is efficient, though arguably undersized for a tool with five nested-object parameters and many close siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return values are handled by the output schema, safety by the annotations, and all five parameters by the 100%-covered schema, so the description need not carry those. The only residual gap, sibling differentiation, is a usage-guideline concern rather than a completeness one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the complex nested symbol/scope/workspace/expectedSnapshot objects are each documented in the schema. The description adds no parameter guidance whatsoever, so the baseline 3 is appropriate when the schema does the entire burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns) and resource (symbols that directly depend on a resolved symbol), and the word 'depend on' establishes the incoming-reference direction. This is clear enough to distinguish it from the likely-inverse sibling get-symbol-dependencies, though the description never explicitly contrasts the two terms the way the sibling names invite confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no prerequisites, and no named alternative. An agent facing the near-identical siblings get-symbol-dependencies, find-references, and find-callers gets no help in choosing this one over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-symbol-infoGet Symbol InfoCRead-onlyIdempotent
Returns detailed metadata for a resolved symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| parametersLimit | No | Maximum number of parameters to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| declarationsLimit | No | Maximum number of declarations to return. | |
| includeDocumentation | No | Whether XML documentation should be included. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so the safety profile is fully covered. The description adds nothing beyond that: no mention of the snapshot/consistency contract implied by expectedSnapshot, no truncation behavior for parametersLimit/declarationsLimit, and no note that the symbol must be pre-resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding or repetition. It is efficient, though arguably so terse that it leaves no room for the routing and snapshot context this tool needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but this is a six-parameter tool with deep nested objects and a disambiguation workflow (span vs selection, project/document disambiguators, expectedSnapshot). A single generic sentence leaves the agent without the prerequisite (a resolved symbol) or the consistency expectation that the schema hints at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested selector, workspace, limits, and snapshot fields are already documented in the schema; baseline 3 applies. The description contributes no additional meaning, such as the significance of echoing expectedSnapshot or how the two limits interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a concrete verb and resource ('Returns detailed metadata for a resolved symbol'), which is better than a tautology, but 'metadata' is vague about what is actually returned. It does not differentiate from siblings such as get-symbol-members, get-symbol-attributes, or get-code-context, all of which also operate on a resolved symbol.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no exclusions, and no named alternatives. The phrase 'resolved symbol' faintly implies a prior resolve-symbol step, but the agent must infer that; nothing states when this tool should be preferred over the other symbol-info siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-symbol-membersGet Symbol MembersARead-onlyIdempotent
Lists declared members and optional inherited or interface members for a resolved symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| membersLimit | No | Maximum number of results to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| includeInherited | No | Whether inherited members should be included. | |
| includeExplicitInterface | No | Whether explicit interface members should be included. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds that 'optional inherited or interface members' can be listed, which hints at behavioral scope. However, it doesn't explain what 'declared members' means (fields, methods, properties?), what the output looks like, or any constraints like the membersLimit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that front-loads the core action and resource. No wasted words, and the mention of optional inclusions is appropriately placed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a detailed input schema and an output schema present, the description doesn't need to explain return values. It covers the key behavioral aspect (optional inherited/interface members) and is complete enough for an agent to call the tool correctly, though minor gaps like what 'declared' entails remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters including nested symbol selectors and the includeInherited/includeExplicitInterface booleans. The description mentions 'optional inherited or interface members' which loosely maps to these parameters, but adds no syntax or format details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Lists') and resource ('declared members') for a 'resolved symbol', which is precise. The description covers the core purpose well, though it doesn't differentiate from siblings like get-symbol-info or get-type-hierarchy in terms of when you'd need members specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage — you need a resolved symbol to get its members — but doesn't explicitly say when to use this vs alternatives like get-type-hierarchy or get-symbol-info. No exclusions or prerequisites are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-test-impactGet Test ImpactBRead-onlyIdempotent
Returns likely impacted tests for a resolved symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Provide exactly one of location or documentationCommentId. | |
| testScope | No | Limits candidate test discovery to the selected documents or projects; omitted searches the loaded solution. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| testsLimit | No | Caps returned likely impacted tests. Omitted or null uses 100; zero returns no tests. | |
| includeReasons | No | Include explanations of why each returned test may be affected; defaults to false and does not change which tests match. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false). The description adds one real behavioral nuance not in annotations: results are 'likely' i.e. heuristic/approximate rather than exhaustive. It says nothing about limits (testsLimit default 100) or output shape, so it is only modestly additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, appropriate given the heavily documented schema and output schema. It is efficient, though its brevity borders on under-specification rather than pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with nested objects, the description is thin, but 100% schema coverage and an output schema carry the structural burden, and annotations cover the safety profile. What remains missing is decision context (when to pick this over get-change-impact, and what 'resolved symbol' requires), leaving it only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the rich nested schema already documents symbol, testScope, workspace, testsLimit, includeReasons and expectedSnapshot. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: 'Returns likely impacted tests' scoped to 'a resolved symbol'. The scope qualifier is genuinely informative, but it never distinguishes this from the very close sibling get-change-impact (or find-references/get-symbol-dependents), which an agent would need to choose correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no when-not-to-use, and no named alternatives. The phrase 'for a resolved symbol' weakly implies the symbol must already be resolved (e.g., via resolve-symbol), but this prerequisite is never stated as such and no routing to get-change-impact is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-type-hierarchyGet Type HierarchyARead-onlyIdempotent
Returns base, interface, and optional derived type relationships for a resolved type.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| maxDepth | No | The maximum base-type and derived-type traversal depth. Direct relationships are at depth one. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| baseTypesLimit | No | Maximum number of base types to return. | |
| includeDerived | No | Whether derived types should be included. | |
| interfacesLimit | No | Maximum number of interfaces to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| derivedTypesLimit | No | Maximum number of derived types to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered. The description adds only that it returns base/interface/derived relationships, without disclosing traversal depth behavior, truncation via the limit parameters, or anything beyond annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted phrasing. It is efficient, though somewhat terse given the eight-parameter surface it fronts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations carry the full safety profile. Combined with 100% schema coverage, the description covers enough to call the tool correctly; only the sibling routing for derived-type queries remains unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters (symbol selector, maxDepth, includeDerived, the three limits, workspace, expectedSnapshot) are already documented in the schema. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb ('Returns') and specific resource ('base, interface, and optional derived type relationships for a resolved type'), making the tool's output scope legible. It does not, however, explicitly differentiate itself from the close sibling find-derived-types, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a resolved type' implies a prerequisite (the symbol must already be resolved, e.g., via resolve-symbol), and 'optional derived type relationships' hints that derived output is conditional. But there is no explicit when-to-use versus find-derived-types or find-implementations, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
go-to-definitionGo To DefinitionARead-onlyIdempotent
Finds source or metadata definitions for a resolved symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| definitionsLimit | No | Maximum number of definitions to return. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without description help. The description adds only the "source or metadata" scope nuance; it says nothing about the definitionsLimit cap (default 32) or the expectedSnapshot echo semantics that the schema exposes, so it adds little behavioral value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and result type, and every clause (source vs metadata, resolved symbol) earns its place. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover safety, but for a tool with a 4-parameter nested selector and a snapshot-guard argument the description gives no routing context or precondition clarity beyond "resolved symbol". It is minimally sufficient for invocation but thin for a tool this structurally complex.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% on a deeply nested selector (symbol/location span-or-selection, workspace, definitionsLimit, expectedSnapshot), so the schema carries parameter meaning fully. The description contributes nothing about which selector form to use or how the workspace/snapshot arguments interact, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: "Finds ... definitions" for a "resolved symbol", and it scopes the result to "source or metadata definitions" which distinguishes it from find-references (usages) and get-symbol-info (metadata only). It does not name any sibling, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "for a resolved symbol" implies a precondition (the symbol must already be resolved, e.g. via resolve-symbol) and therefore implies usage, but no when/when-not or alternatives (find-references, find-implementations, get-symbol-info) are stated. Guidance is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-code-actionsList Code ActionsBRead-only
Lists bounded Roslyn code fixes and refactorings for a document, selection or caret.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | Yes | The kinds of actions to discover. | |
| limit | No | The maximum number of action leaves to return. | |
| range | No | The optional selection or caret range. An omitted range selects the complete document. | |
| document | Yes | Target document. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| diagnosticIds | No | The optional diagnostic identifier filter for code fixes. | |
| expectedSnapshot | Yes | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| includeProvenance | No | Whether returned actions should reference a response-level runtime provider catalogue. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description's word 'bounded' adds a small hint about result limiting, but it doesn't explain pagination, what the returned action leaves look like, or anything beyond the annotation/schema coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core verb front-loaded and no filler. It is efficient, though at one clause it is arguably too terse for a tool with eight parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full schema, annotations covering safety, and an output schema (no need to describe returns), the description is minimally adequate. The missing piece is routing guidance relative to prepare-fix-all and how diagnosticIds/kinds interact with the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters are self-documenting; baseline 3 applies. 'Bounded' loosely gestures at the limit parameter but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists ... Roslyn code fixes and refactorings') and names the scope (document, selection or caret). An agent can tell this is a discovery/lookup tool, though it doesn't explicitly differentiate it from siblings like prepare-fix-all or get-diagnostics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not, or alternative routing is given. The closely related sibling prepare-fix-all (which presumably applies fixes) is not referenced, so the agent must infer that this tool only lists actions rather than applying them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare-error-reportPrepare Error ReportARead-only
Creates the complete external payload without network activity. Exception messages may contain Workspace data. Present the returned destination, payload JSON string and digest to the user before calling submit-error-report when approval is required; the user can choose to remove exception messages during submission.
| Name | Required | Description | Default |
|---|---|---|---|
| correlationId | Yes | Correlation identifier of the captured failure to prepare for review. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful traits beyond the annotations: no network activity, that exception messages may contain Workspace data, and that users can strip exception messages during submission. These clarify side-effect and privacy behavior that readOnlyHint/openWorldHint alone do not convey. It does not explain the non-idempotent hint, leaving a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then adds the workflow in a second sentence. Efficient, though the second sentence is a run-on that packs three concepts together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not strictly required, yet the description helpfully names the returned destination, payload string, and digest. Combined with the workflow and privacy notes, an agent has enough to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter (correlationId) is fully documented in the schema. The description adds no additional meaning to the parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (creates) and resource (the external payload) and clarifies scope with 'without network activity,' which implicitly distinguishes it from the sibling submit-error-report. The only weakness is that 'external payload' is slightly abstract rather than naming it as the error report payload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit workflow: present the returned destination/payload/digest to the user before calling submit-error-report when approval is required, and names the sibling alternative. It stops short of stating when this tool should be skipped entirely, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare-fix-allPrepare Fix AllARead-only
Revalidates a Code Fix and reports the bounded impact of one explicit Fix All scope without staging changes.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | The explicit Fix All scope. | |
| actionId | Yes | The opaque originating Code Fix reference. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| maxChanges | No | The maximum number of changed source documents to allow. | |
| expectedSnapshot | Yes | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| affectedDocumentsLimit | No | The maximum number of affected document identities to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=false. The description adds meaningful context beyond these: it is a revalidation (not a fresh operation), it reports bounded impact, and critically it does NOT stage changes—clarifying that despite 'Fix All' naming, nothing mutates. This is exactly the kind of non-obvious behavioral disclosure that adds value over annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, dense sentence that front-loads the operation (revalidate) and the key non-staging constraint. No padding or waste. It could be slightly tightier, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. With 100% schema coverage and annotations covering the safety profile, the description's main job is to convey the dry-run semantics and that it revalidates an existing fix—both present. It falls short of a 5 only by omitting any guidance on next steps or what 'bounded impact' means in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is documented in the schema. The description mentions 'one explicit Fix All scope', which reinforces the enum on the scope param but adds no syntax or format detail beyond what's in the schema. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Revalidates a Code Fix and reports the bounded impact of one explicit Fix All scope'. The scope (Fix All) and the operation (dry-run revalidation, no staging) are clear. It doesn't directly name a sibling to differentiate from, but the concept is distinct from the read-only query tools around it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The phrase 'without staging changes' implies it's a dry-run precursor to a mutation, but the description never states what to do next or when this is preferable to any alternative. An agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve-symbolResolve SymbolBRead-onlyIdempotent
Resolves the symbol at a location or selection and returns its canonical selector.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | The location selector. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | No | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| declarationsLimit | No | Maximum number of declarations to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only that it returns a 'canonical selector' — useful, but it does not disclose behavior around ambiguity, missing symbols, or how location-vs-selection are prioritized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the verb and resource with zero filler. It is appropriately sized for a tool whose complexity lives in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover safety. What is missing is routing guidance among many overlapping sibling tools and any note on ambiguous or failed resolution, which leaves the definition slightly under-complete for this crowded tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters and their nested fields thoroughly. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Resolves') and resource ('the symbol at a location or selection') and names the output ('canonical selector'). It is clear what the tool does, though it doesn't differentiate from siblings like go-to-definition or get-symbol-info, which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. In a family of ~40 symbol/navigation tools, an agent has no signal about when resolve-symbol is the right choice over go-to-definition, get-symbol-info, or search-symbols.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-symbolsSearch SymbolsBRead-onlyIdempotent
Searches declarations by name, metadata name and optional semantic filters. Input: Provide query, metadataName, or both.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | No | The included symbol kinds. | |
| query | No | Source-name query. | |
| scope | No | The optional scope selector. | |
| namespace | No | The optional namespace filter. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| metadataName | No | Filters declaration metadata names by a case-insensitive substring; also supplies the search pattern when query is omitted. | |
| symbolsLimit | No | Maximum number of results to return. | |
| accessibilities | No | The included accessibilities. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world behavior, so the safety profile is fully covered. The description adds no behavioral context beyond that — no note on result limits, cost, or ordering — so it contributes little beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the purpose front-loaded ahead of the input note. Nothing is redundant or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and all parameters are richly documented in the schema. However, for a search tool sitting among ~45 siblings, the description leaves the selection decision to the agent, which is a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters (including metadataName's substring and pattern fallback, scope, and symbolsLimit) are already documented in the schema. The description's single clause about query/metadataName adds nothing new, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Searches declarations by name, metadata name and optional semantic filters" gives a specific verb plus resource and the dimensions searched. It is clear on its own, though it never contrasts itself with adjacent siblings like resolve-symbol or get-symbol-info, which an agent must disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is "Provide query, metadataName, or both," which restates the schema's required-parameter note and says nothing about when this search is preferable to resolve-symbol or find-references. No when-not conditions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server-statusServer StatusARead-onlyIdempotent
Returns server diagnostics without requiring a loaded workspace. Result: server diagnostics, effective configuration, plugin status, and unfinished recovery state.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Amount of server status detail to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description usefully adds the no-workspace precondition, but the 'Result:' clause largely re-describes output that the output schema already provides. Adds some behavioral value without being rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the precondition front-loaded. The 'Result:' clause is somewhat redundant given the output schema exists, costing a little efficiency but not much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and a full output schema covering return values, the description only needs to convey the key differentiator, which it does: diagnostics are available with no loaded workspace. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'detail' enum is fully documented in the schema. The description says nothing about the detail levels or what Minimal/Standard/Full change, so it adds no meaning beyond the structured field. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns server diagnostics') and adds a scope qualifier ('without requiring a loaded workspace') that separates it from workspace-scoped siblings like workspace-status. It does not explicitly name the most easily confused sibling (get-diagnostics), so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without requiring a loaded workspace' implies the condition under which this tool is preferred over workspace-status, but it never states when to use it explicitly or names the alternative. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit-error-reportSubmit Error ReportADestructiveIdempotent
After applying the configured consent policy, submits one previously prepared immutable external error report to its reviewed destination. Result: Returns the dispatcher, immutable report reference and reviewed payload digest.
| Name | Required | Description | Default |
|---|---|---|---|
| submissionHandle | Yes | Opaque handle returned for the exact reviewed payload to submit. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the destructive/openWorld/idempotent profile, and the description adds real context beyond them: a consent-policy gate is applied, exactly one report is submitted to a 'reviewed' destination, and the report is immutable (reinforcing idempotency). It doesn't, however, spell out the consequences of the destructiveHint=true flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the precondition and action, then the outcome. The trailing result summary is mildly redundant given a dedicated output schema exists, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and annotations covering safety, the description fills the remaining gap by explaining the consent-policy gate and the immutable/single-report nature. The one omission is explicit ordering guidance relative to prepare-error-report.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single submissionHandle parameter is already well documented in the schema. The description contextualizes it as the handle for the 'exact reviewed payload' but adds no new syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (submits) and resource (an immutable external error report) with the key qualifier 'previously prepared,' which implicitly routes the agent to the prepare-error-report sibling. Sibling differentiation is present but implied rather than explicitly named, keeping it just below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Previously prepared' implies a prerequisite step (prepare-error-report) and 'after applying the configured consent policy' implies a gating condition. However, it never explicitly says when to use this tool versus alternatives or what to do first, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace-closeWorkspace CloseC
Closes the selected workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Provide workspaceId, alias, path, or any combination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-destructive, non-idempotent mutation. The description does not add context about what 'closing' does to state, whether unsaved changes are affected, or whether the operation can be undone. With annotations present, a 3 reflects the baseline behavior noted by structured data but adds little value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that is front-loaded and free of filler. It conveys the core action without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool takes one optional workspace parameter, has an output schema, and carries annotations, the description is minimally adequate but lacks behavioral context like consequences of closing, expected side effects, or error conditions, which would help an agent invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter documentation is fully handled by the schema, including the workspace object with path, alias, and workspaceId. The description adds no parameter-level detail beyond what is already in the schema, making a 3 a fair baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Closes) and resource (the selected workspace), which is clear enough. However, it does not distinguish itself from the related sibling workspace-reload or explain what 'selected' means in the context of the workspace parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus workspace-reload, workspace-open, or workspace-list. There is no mention of prerequisites or context needed before closing a workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace-listWorkspace ListARead-onlyIdempotent
Lists the currently loaded workspaces.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only that it returns 'currently loaded' workspaces rather than all known ones, which is useful scoping but thin given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the scope qualifier front-loaded and no wasted words. Perfectly sized for a parameterless list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the read-only annotations cover behavior. The only missing piece is routing guidance against the many workspace-* siblings, which is minor for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Lists') and resource ('workspaces') with the qualifier 'currently loaded'. An agent can tell it apart from workspace-open/close/reload, though it does not distinguish itself from the adjacent workspace-status tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and never mentions the sibling tools (workspace-open, workspace-status) that an agent would need to choose between. Usage must be entirely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace-openWorkspace OpenA
Loads an additional writable workspace. Open only a fully trusted workspace: loading evaluates MSBuild project logic, evaluated source inputs including external linked or package-provided documents become queryable, and later diagnostic or Code Action operations can load and execute project analyzers with the Host's permissions. Documents outside workspaceRoot remain read-only. If instance status reports that the workspace is or may be in use elsewhere, use it only for necessary queries, expect results to become stale, and coordinate mutation ownership before starting a transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The absolute solution or project path to load. | |
| alias | No | The optional caller-friendly alias for the workspace. | |
| workspaceRoot | No | The optional absolute repository or workspace root used for coordination and transaction boundaries. | |
| msBuildProperties | No | The optional allowlisted MSBuild global properties used to evaluate this workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare only readOnlyHint=false, idempotentHint=false and destructiveHint=false; the description adds substantial context beyond them: MSBuild project logic is evaluated, external linked/package documents become queryable, analyzers later execute with Host permissions, documents outside workspaceRoot stay read-only, and shared-instance results can go stale. These are exactly the trust and side-effect disclosures a load tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every clause carries a distinct payload (trust, evaluation, permissions, read-only scope, concurrency). It is dense and long but essentially waste-free; only the shared-instance sentence runs slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, security-sensitive load operation with an output schema already covering return values, the description supplies the trust warning, side-effect model, scope boundary, and concurrency caveat an agent needs to invoke it safely. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nevertheless adds meaning by explaining the read-only boundary that workspaceRoot establishes ('Documents outside workspaceRoot remain read-only'), clarifying a parameter the schema describes only as a coordination boundary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb and resource ('Loads an additional writable workspace'), and the 'additional' framing cleanly separates it from workspace-reload, workspace-close, and workspace-list. An agent knows exactly what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use constraint ('Open only a fully trusted workspace') and a conditional fallback for the shared-instance case (use for necessary queries only, expect staleness, coordinate mutation ownership). It does not explicitly name a sibling alternative (e.g. workspace-reload), so it falls just short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace-reloadWorkspace ReloadB
Reloads the selected workspace when it is out of date.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Provide workspaceId, alias, path, or any combination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the agent knows this mutates runtime state non-destructively. The description adds the freshness trigger, but does not say whether reload discards in-memory/unsaved changes or what 'out of date' is measured against, which matters given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and followed by the condition. Nothing is wasted; it is terse rather than padded, though arguably under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations partially cover the safety profile. However, for a state-mutating reload operation with idempotentHint=false, the description leaves open what gets discarded and what preconditions must hold, so it is only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single workspace parameter is fully documented (workspaceId, alias, path, or any combination). The phrase 'the selected workspace' loosely echoes the identifier concept but adds no syntax or selection semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reloads ... workspace') plus the trigger condition ('when it is out of date'). It is distinguishable from siblings like workspace-open and workspace-status, though it never names or contrasts them directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an implied usage condition ('when it is out of date') but gives no explicit guidance on when to prefer this over workspace-open or workspace-status, which is a real ambiguity for a workspace-lifecycle tool. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace-statusWorkspace StatusARead-onlyIdempotent
Reports the selected workspace lifecycle and cross-instance state. Treat a workspace that is or may be in use elsewhere as query-only, use it only when necessary, and expect results to become stale.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Amount of workspace status detail to return. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower. The description adds genuinely new behavioral context beyond that: results can become stale, state is cross-instance, and the workspace may be in use elsewhere – none of which the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose before the cautionary guidance, with no filler. Slightly compressed wording ('state', 'necessary') leaves some interpretation to the reader, keeping it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need no explanation, and annotations cover the safety profile. The description contributes the lifecycle/cross-instance framing and staleness expectation, which is sufficient for a status query, though it leaves the choice among sibling status/list tools unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the detail level enum and the workspace identifier object are already documented in the schema. The description adds no syntax or format detail about detail levels or identifier combinations, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reports the selected workspace's lifecycle and cross-instance state. This is clearer than a tautology and hints at a distinction from server-status (server vs workspace), but it never names a sibling to differentiate from workspace-list or workspace-open directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"use it only when necessary" and "treat a workspace that is or may be in use elsewhere as query-only" imply a when-to-use condition, but the guidance is vague and no alternative tool is named for the common case. Usage is implied rather than stated against a concrete alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
48 tool updates
v1.0.4- Changed
analyze-async1 field changed- changed
Output 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": { + "findings": { + "description": "The returned findings.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "diagnostic": { + "description": "The compiler diagnostic.", + "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", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
analyze-control-flow1 field changed- changed
Output 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": { + "entryReachable": { + "description": "Whether the region entry is reachable.", + "type": "boolean" + }, + "exitReachable": { + "description": "Whether the region exit is reachable.", + "type": "boolean" + }, + "exits": { + "description": "The projected exit points.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "kind": { + "description": "The exit kind.", + "type": "string" + }, + "location": { + "description": "The exit location, when available.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/region/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/region/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/region/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/region/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "region": { + "description": "The analyzed region.", + "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" + ] + }, + "returns": { + "description": "The projected return statements.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/region/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/region/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/region/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/region/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
analyze-data-flow1 field changed- changed
Output 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": { + "captured": { + "description": "The captured symbols.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "$ref": "#/properties/request/properties/value/properties/variablesDeclared/properties/items", + "description": "Items returned in this page.", + "items": {} + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "dataFlowsIn": { + "description": "The symbols flowing into the region.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "$ref": "#/properties/request/properties/value/properties/variablesDeclared/properties/items", + "description": "Items returned in this page.", + "items": {} + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "dataFlowsOut": { + "description": "The symbols flowing out of the region.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "$ref": "#/properties/request/properties/value/properties/variablesDeclared/properties/items", + "description": "Items returned in this page.", + "items": {} + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "readInside": { + "description": "The symbols read within the region.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "$ref": "#/properties/request/properties/value/properties/variablesDeclared/properties/items", + "description": "Items returned in this page.", + "items": {} + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "region": { + "description": "The analyzed region.", + "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" + ] + }, + "variablesDeclared": { + "description": "The variables declared within the region.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/region/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/region/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/region/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/region/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "writtenInside": { + "description": "The symbols written within the region.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "$ref": "#/properties/request/properties/value/properties/variablesDeclared/properties/items", + "description": "Items returned in this page.", + "items": {} + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
analyze-disposables1 field changed- changed
Output 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": { + "findings": { + "description": "The returned findings.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "kind": { + "description": "The finding kind.", + "type": "string" + }, + "location": { + "description": "The finding location.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/findings/properties/items/items/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + }, + "message": { + "description": "The finding message.", + "type": "string" + }, + "symbol": { + "description": "The associated local symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "type": { + "description": "The disposable type.", + "properties": { + "displayName": { + "description": "The display name.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation-comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The Roslyn type kind.", + "type": "string" + }, + "nullableAnnotation": { + "description": "The nullable annotation.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "kind", + "message" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
analyze-nullability1 field changed- changed
Output 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": { + "findings": { + "description": "The returned findings.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "diagnostic": { + "description": "The projected diagnostic.", + "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", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
find-callees1 field changed- changed
Output 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": { + "callees": { + "description": "The returned callees.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/source/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "source": { + "description": "The queried callable symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
find-callers1 field changed- changed
Output 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": { + "callers": { + "description": "The returned caller information.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "callSites": { + "description": "The bounded call sites for the caller.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "context": { + "description": "The optional source context requested for the call site.", + "type": [ + "string", + "null" + ] + }, + "location": { + "description": "The exact call-site location.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "caller": { + "description": "The calling symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
find-dependency-cycles1 field changed- changed
Output 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": { + "cycles": { + "description": "The returned cycles.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "nodes": { + "items": { + "properties": { + "displayName": { + "type": "string" + }, + "id": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "symbol": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "displayName" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
find-derived-types1 field changed- changed
Output 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": { + "baseType": { + "description": "The queried base type.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "derivedTypes": { + "description": "The resolved derived types.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "depth": { + "description": "The zero-based depth from the queried root type.", + "type": "integer" + }, + "derivedTypes": { + "description": "The nested derived types for this node.", + "items": { + "$ref": "#/properties/request/properties/value/properties/derivedTypes/properties/items/items" + }, + "type": "array" + }, + "type": { + "description": "The resolved type symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/baseType/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
find-duplicate-code1 field changed- changed
Output 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": { + "groups": { + "description": "The returned duplicate groups.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "occurrences": { + "description": "The group occurrences.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "location": { + "description": "The occurrence location.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/groups/properties/items/items/properties/occurrences/properties/items/items/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/groups/properties/items/items/properties/occurrences/properties/items/items/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/groups/properties/items/items/properties/occurrences/properties/items/items/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/groups/properties/items/items/properties/occurrences/properties/items/items/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + }, + "symbol": { + "description": "The enclosing symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "statementCount": { + "description": "The number of normalized statements in the group.", + "type": "integer" + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
find-implementations1 field changed- changed
Output 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": { + "implementations": { + "description": "The resolved implementations.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
find-overloads1 field changed- changed
Output 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": { + "overloads": { + "description": "The resolved overload signatures.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The callable display name.", + "type": "string" + }, + "kind": { + "description": "The callable kind.", + "type": "string" + }, + "parameters": { + "description": "The ordered parameters for the callable.", + "items": { + "properties": { + "defaultValue": { + "description": "The formatted default value, when available.", + "type": [ + "string", + "null" + ] + }, + "hasExplicitDefaultValue": { + "description": "Whether the parameter has an explicit default value.", + "type": "boolean" + }, + "isOptional": { + "description": "Whether the parameter is optional.", + "type": "boolean" + }, + "name": { + "description": "The parameter name.", + "type": "string" + }, + "refKind": { + "description": "The parameter passing mode.", + "type": "string" + }, + "type": { + "description": "The parameter type information.", + "properties": { + "displayName": { + "description": "The display name.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation-comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The Roslyn type kind.", + "type": "string" + }, + "nullableAnnotation": { + "description": "The nullable annotation.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "name", + "refKind" + ], + "type": "object" + }, + "type": "array" + }, + "returnType": { + "description": "The return type, when applicable.", + "properties": { + "displayName": { + "description": "The display name.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation-comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The Roslyn type kind.", + "type": "string" + }, + "nullableAnnotation": { + "description": "The nullable annotation.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
find-overrides1 field changed- changed
Output 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": { + "overrides": { + "description": "The returned overrides.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried base member.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
find-references1 field changed- changed
Output 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": { + "references": { + "description": "The returned references.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "containingSymbol": { + "description": "The containing symbol, when available.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "context": { + "description": "The optional source snippet.", + "type": [ + "string", + "null" + ] + }, + "isDefinition": { + "description": "Whether the location is a definition.", + "type": "boolean" + }, + "isWrite": { + "description": "Whether the location represents a write access.", + "type": "boolean" + }, + "location": { + "description": "The reference location.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
find-unused-symbols1 field changed- changed
Output 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": { + "candidates": { + "description": "The returned unused symbol candidates.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "confidence": { + "description": "The confidence label for the candidate.", + "type": "string" + }, + "location": { + "description": "The source location for the candidate.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/candidates/properties/items/items/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/candidates/properties/items/items/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/candidates/properties/items/items/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/candidates/properties/items/items/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + }, + "reasons": { + "description": "The reasons the symbol was reported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "symbol": { + "description": "The candidate symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "confidence" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-api-surface1 field changed- changed
Output 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": { + "symbols": { + "description": "The returned exported API symbols.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "accessibility": { + "description": "The declared accessibility.", + "type": "string" + }, + "isObsolete": { + "description": "Whether the symbol is marked obsolete.", + "type": "boolean" + }, + "symbol": { + "description": "The exported symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "accessibility" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-change-impact1 field changed- changed
Output 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": { + "impact": { + "description": "The bounded impact summary.", + "properties": { + "callerCount": { + "description": "The number of direct callers found.", + "type": "integer" + }, + "implementationCount": { + "description": "The number of implementations found.", + "type": "integer" + }, + "overrideCount": { + "description": "The number of overrides found.", + "type": "integer" + }, + "publicSurfaceCount": { + "description": "The number of directly exposed API surface entries represented by the symbol.", + "type": "integer" + }, + "referenceCount": { + "description": "The number of direct source references found.", + "type": "integer" + } + }, + "type": [ + "object", + "null" + ] + }, + "locations": { + "description": "The returned supporting source locations.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "containingSymbol": { + "description": "The containing symbol, when available.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "context": { + "description": "The optional source snippet.", + "type": [ + "string", + "null" + ] + }, + "isDefinition": { + "description": "Whether the location is a definition.", + "type": "boolean" + }, + "isWrite": { + "description": "Whether the location represents a write access.", + "type": "boolean" + }, + "location": { + "description": "The reference location.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-code-context1 field changed- changed
Output 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": { + "diagnostics": { + "description": "The diagnostics projected for the selected location.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "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": { + "$ref": "#/properties/request/properties/value/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "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" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "enclosingSymbols": { + "description": "The enclosing symbol chain from the innermost symbol outward.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "location": { + "description": "The resolved source location.", + "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" + ] + }, + "text": { + "description": "The bounded source text.", + "type": "string" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-control-flow-graph1 field changed- changed
Output 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": { + "blocks": { + "description": "The projected basic blocks.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "conditionalSuccessor": { + "description": "The conditional successor ordinal, when available.", + "type": [ + "integer", + "null" + ] + }, + "fallThroughSuccessor": { + "description": "The fall-through successor ordinal, when available.", + "type": [ + "integer", + "null" + ] + }, + "isReachable": { + "description": "Whether the block is reachable.", + "type": "boolean" + }, + "kind": { + "description": "The Roslyn block kind.", + "type": "string" + }, + "operations": { + "description": "The projected operations in the block.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "kind": { + "description": "The Roslyn operation kind.", + "type": "string" + }, + "location": { + "description": "The exact source location of the operation.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/owner/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/owner/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/owner/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/owner/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + }, + "type": { + "description": "The operation type display name, when available.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "ordinal": { + "description": "The block ordinal.", + "type": "integer" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "owner": { + "description": "The owning callable symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "regions": { + "description": "The projected flow regions.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "firstBlockOrdinal": { + "description": "The first block ordinal in the region.", + "type": "integer" + }, + "id": { + "description": "The region identifier.", + "type": "integer" + }, + "kind": { + "description": "The region kind.", + "type": "string" + }, + "lastBlockOrdinal": { + "description": "The last block ordinal in the region.", + "type": "integer" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-dependency-graph1 field changed- changed
Output 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": { + "edges": { + "description": "The returned graph edges.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "fromDisplayName": { + "type": "string" + }, + "fromId": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "toDisplayName": { + "type": "string" + }, + "toId": { + "type": "string" + } + }, + "required": [ + "fromId", + "fromDisplayName", + "toId", + "toDisplayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "nodes": { + "description": "The returned graph nodes.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "type": "string" + }, + "id": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "symbol": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "displayName" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-diagnostics1 field changed- changed
Output 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": { + "diagnostics": { + "description": "The returned diagnostics.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "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" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-document-options1 field changed- changed
Output 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": { + "analyzerConfig": { + "description": "The effective analyzer-config information.", + "properties": { + "editorConfigPaths": { + "description": "The editor-config file paths applied to the document.", + "items": { + "type": "string" + }, + "type": "array" + }, + "globalConfigPaths": { + "description": "The global analyzer-config file paths applied to the document.", + "items": { + "type": "string" + }, + "type": "array" + }, + "options": { + "additionalProperties": { + "type": "string" + }, + "description": "The effective analyzer-config options for the document.", + "type": "object" + } + }, + "type": [ + "object", + "null" + ] + }, + "document": { + "description": "The resolved document reference.", + "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" + ] + }, + "languageVersion": { + "description": "The effective language version, when available for the document language.", + "type": [ + "string", + "null" + ] + }, + "nullableContext": { + "description": "The effective nullable context, when available for the document language.", + "type": [ + "string", + "null" + ] + }, + "parseOptions": { + "description": "The effective parse options.", + "properties": { + "documentationMode": { + "description": "The documentation mode.", + "type": "string" + }, + "language": { + "description": "The language name.", + "type": "string" + }, + "languageVersion": { + "description": "The language version, when available for the project language.", + "type": [ + "string", + "null" + ] + }, + "preprocessorSymbols": { + "description": "The effective preprocessor symbols.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "language", + "documentationMode" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-document-outline1 field changed- changed
Output 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": { + "document": { + "description": "The resolved document reference.", + "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" + ] + }, + "root": { + "description": "The outline root node.", + "properties": { + "accessibility": { + "description": "The optional accessibility.", + "type": [ + "string", + "null" + ] + }, + "children": { + "description": "The child outline nodes.", + "items": { + "properties": { + "accessibility": { + "description": "The optional accessibility.", + "type": [ + "string", + "null" + ] + }, + "children": { + "$ref": "#/properties/request/properties/value/properties/root/properties/children", + "description": "The child outline nodes.", + "items": {} + }, + "kind": { + "description": "The Roslyn symbol or declaration kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/root/properties/location", + "description": "The node location, when available." + }, + "modifiers": { + "$ref": "#/properties/request/properties/value/properties/root/properties/modifiers", + "description": "The node modifiers.", + "items": {} + }, + "name": { + "description": "The node display name.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "kind": { + "description": "The Roslyn symbol or declaration kind.", + "type": "string" + }, + "location": { + "description": "The node location, when available.", + "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" + ] + }, + "modifiers": { + "description": "The node modifiers.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The node display name.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "truncated": { + "description": "Whether the hierarchy was truncated by its node or depth bound.", + "type": "boolean" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-error-details1 field changed- changed
Output 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": { + "error": { + "description": "Captured diagnostic record for the failed tool invocation.", + "properties": { + "cancellationRequested": { + "description": "Whether cancellation had been requested when the failure occurred.", + "type": "boolean" + }, + "correlationId": { + "description": "Correlation identifier assigned to the captured failure.", + "format": "uuid", + "type": "string" + }, + "dotNetVersion": { + "description": ".NET runtime version used by the server.", + "type": "string" + }, + "durationMilliseconds": { + "description": "Tool execution duration in milliseconds before failure.", + "type": "integer" + }, + "exceptions": { + "description": "Captured exception chain for the failure.", + "items": { + "properties": { + "component": { + "description": "Roslyn Workbench component in which the exception originated.", + "enum": [ + "Unknown", + "RoslynWorkbench", + "Roslyn", + "DotNet" + ], + "type": "string" + }, + "message": { + "description": "Exception message included with the user's consent.", + "type": "string" + }, + "stackFrames": { + "description": "Diagnostic stack frames retained from the exception and classified by owning component.", + "items": { + "properties": { + "assembly": { + "description": "Assembly name, when available.", + "type": [ + "string", + "null" + ] + }, + "component": { + "description": "Roslyn Workbench component that owns this frame.", + "enum": [ + "Unknown", + "RoslynWorkbench", + "Roslyn", + "DotNet" + ], + "type": "string" + }, + "file": { + "description": "First-party source file path recorded by symbols, when available.", + "type": [ + "string", + "null" + ] + }, + "line": { + "description": "One-based source line number, when available.", + "type": [ + "integer", + "null" + ] + }, + "method": { + "description": "Method name, when available.", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "Declaring type name, when available.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "Exception type name.", + "type": "string" + } + }, + "required": [ + "type", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "executionFamily": { + "description": "Execution path used by the failed tool, such as server, plugin, or Code Action.", + "type": "string" + }, + "expiresAt": { + "description": "Time at which this locally retained error record expires.", + "format": "date-time", + "type": "string" + }, + "failureTime": { + "description": "Time at which the tool invocation failed.", + "format": "date-time", + "type": "string" + }, + "operatingSystem": { + "description": "Operating system on which the server was running.", + "type": "string" + }, + "pluginClassification": { + "description": "Plugin ownership classification when the failed tool was plugin-backed.", + "type": "string" + }, + "processorArchitecture": { + "description": "Processor architecture of the server process.", + "type": "string" + }, + "roslynVersion": { + "description": "Roslyn version used by the server.", + "type": "string" + }, + "serverVersion": { + "description": "Roslyn Workbench server version that captured the failure.", + "type": "string" + }, + "toolName": { + "description": "MCP tool that failed.", + "type": "string" + }, + "workspace": { + "description": "Workspace context active during the failure, when available.", + "properties": { + "documentCount": { + "description": "Number of loaded documents at the time of failure.", + "type": "integer" + }, + "lifecycleState": { + "description": "Workspace lifecycle state at the time of failure.", + "type": [ + "string", + "null" + ] + }, + "projectCount": { + "description": "Number of loaded projects at the time of failure.", + "type": "integer" + }, + "transactionRevision": { + "description": "Active transaction revision at the time of failure, when applicable.", + "type": [ + "integer", + "null" + ] + }, + "workspaceEpoch": { + "description": "Workspace epoch active during the failure.", + "type": "integer" + }, + "workspaceId": { + "description": "Server-generated identifier of the workspace active during the failure.", + "format": "uuid", + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "correlationId", + "failureTime", + "expiresAt", + "toolName", + "executionFamily", + "pluginClassification", + "durationMilliseconds", + "serverVersion", + "roslynVersion", + "dotNetVersion", + "operatingSystem", + "processorArchitecture" + ], + "type": "object" + }, + "safeForExternalSubmission": { + "description": "Whether the captured details are safe to submit outside the local process.", + "type": "boolean" + }, + "sensitivity": { + "description": "Sensitivity classification applied to the captured error details.", + "type": "string" + } + }, + "required": [ + "error" + ], + "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" +}
- Changed
get-operation-tree1 field changed- changed
Output 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": { + "root": { + "description": "The projected root operation.", + "properties": { + "children": { + "description": "The projected child operations.", + "items": { + "properties": { + "children": { + "$ref": "#/properties/request/properties/value/properties/root/properties/children", + "description": "The projected child operations.", + "items": {} + }, + "hasConstantValue": { + "description": "Whether the operation has a constant value.", + "type": "boolean" + }, + "kind": { + "description": "The Roslyn operation kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/root/properties/location", + "description": "The exact source location of the operation." + }, + "truncated": { + "description": "Whether child nodes were truncated.", + "type": "boolean" + }, + "type": { + "description": "The associated type display name, when available.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "hasConstantValue": { + "description": "Whether the operation has a constant value.", + "type": "boolean" + }, + "kind": { + "description": "The Roslyn operation kind.", + "type": "string" + }, + "location": { + "description": "The exact source location of the operation.", + "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" + ] + }, + "truncated": { + "description": "Whether child nodes were truncated.", + "type": "boolean" + }, + "type": { + "description": "The associated type display name, when available.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "truncated": { + "description": "Whether the tree was truncated.", + "type": "boolean" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-partial-declarations1 field changed- changed
Output 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": { + "declarations": { + "description": "The resolved declarations.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-project-details1 field changed- changed
Output 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": { + "analyzers": { + "description": "The analyzer references.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The analyzer display name.", + "type": "string" + }, + "path": { + "description": "The analyzer assembly path, when available.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "compilationOptions": { + "description": "The compilation options, when available.", + "properties": { + "allowUnsafe": { + "description": "Whether unsafe code is allowed.", + "type": "boolean" + }, + "nullableContext": { + "description": "The nullable context mode.", + "type": [ + "string", + "null" + ] + }, + "optimizationLevel": { + "description": "The optimization level.", + "type": "string" + }, + "outputKind": { + "description": "The output kind.", + "type": "string" + }, + "preprocessorSymbols": { + "description": "The effective preprocessor symbols.", + "items": { + "type": "string" + }, + "type": "array" + }, + "warningLevel": { + "description": "The warning level.", + "type": "integer" + } + }, + "required": [ + "outputKind", + "optimizationLevel" + ], + "type": [ + "object", + "null" + ] + }, + "documents": { + "description": "The project documents, when included.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "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" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "metadataReferences": { + "description": "The metadata references.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "display": { + "description": "The display string for the metadata reference.", + "type": "string" + }, + "path": { + "description": "The file path, when available.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "display" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "project": { + "description": "The selected project information.", + "properties": { + "assemblyName": { + "description": "The assembly name, when available.", + "type": [ + "string", + "null" + ] + }, + "language": { + "description": "The project language.", + "type": "string" + }, + "name": { + "description": "The project name.", + "type": "string" + }, + "path": { + "description": "The project path.", + "type": "string" + }, + "projectId": { + "description": "The project identifier.", + "type": "string" + }, + "targetFrameworks": { + "description": "The target frameworks inferred for the project.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "projectId", + "name", + "path", + "language" + ], + "type": [ + "object", + "null" + ] + }, + "projectReferences": { + "description": "The direct project references.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "name": { + "description": "The referenced project name.", + "type": "string" + }, + "path": { + "description": "The referenced project path.", + "type": "string" + }, + "projectId": { + "description": "The referenced project identifier.", + "type": "string" + } + }, + "required": [ + "projectId", + "name", + "path" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-solution-structure1 field changed- changed
Output 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": { + "folders": { + "description": "The solution folders.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "parentPath": { + "type": [ + "string", + "null" + ] + }, + "path": { + "type": "string" + } + }, + "required": [ + "name", + "path" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "projects": { + "description": "The project structure projections.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "documents": { + "description": "The project documents, when included.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "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" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "name": { + "description": "The project name.", + "type": "string" + }, + "path": { + "description": "The project path.", + "type": "string" + }, + "projectId": { + "description": "The project identifier.", + "type": "string" + }, + "projectReferences": { + "description": "The direct project references.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "name": { + "description": "The referenced project name.", + "type": "string" + }, + "path": { + "description": "The referenced project path.", + "type": "string" + }, + "projectId": { + "description": "The referenced project identifier.", + "type": "string" + } + }, + "required": [ + "projectId", + "name", + "path" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "solutionFolderPath": { + "description": "The associated solution-folder path, when available.", + "type": [ + "string", + "null" + ] + }, + "targetFrameworks": { + "description": "The target frameworks inferred for the project.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "projectId", + "name", + "path" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "solutionPath": { + "description": "The loaded solution or project path.", + "type": "string" + } + }, + "required": [ + "solutionPath" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-symbol-attributes1 field changed- changed
Output 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": { + "attributes": { + "description": "The resolved attributes.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "constructorArguments": { + "description": "The positional constructor arguments.", + "items": { + "properties": { + "name": { + "description": "The argument name for named arguments.", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "The argument type display name.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "The argument value.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "inherited": { + "description": "Whether the attribute was inherited from a base type.", + "type": "boolean" + }, + "name": { + "description": "The attribute display name.", + "type": "string" + }, + "namedArguments": { + "description": "The named arguments.", + "items": { + "$ref": "#/properties/request/properties/value/properties/attributes/properties/items/items/properties/constructorArguments/items" + }, + "type": "array" + }, + "type": { + "description": "The attribute type information.", + "properties": { + "displayName": { + "description": "The display name.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation-comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The Roslyn type kind.", + "type": "string" + }, + "nullableAnnotation": { + "description": "The nullable annotation.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-symbol-dependencies1 field changed- changed
Output 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": { + "dependencies": { + "description": "The returned direct dependencies.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "assemblyName": { + "description": "The containing assembly name when requested.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind for the dependency.", + "type": "string" + }, + "symbol": { + "description": "The dependent symbol reference.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-symbol-dependents1 field changed- changed
Output 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": { + "dependents": { + "description": "The returned direct dependents.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-symbol-info1 field changed- changed
Output 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": { + "accessibility": { + "description": "The symbol accessibility.", + "type": "string" + }, + "declarations": { + "description": "The source declarations for the symbol.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "documentation": { + "description": "The XML documentation text, when requested.", + "type": [ + "string", + "null" + ] + }, + "modifiers": { + "description": "The symbol modifiers.", + "items": { + "type": "string" + }, + "type": "array" + }, + "parameters": { + "description": "The callable parameter information, when applicable.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "defaultValue": { + "description": "The formatted default value, when available.", + "type": [ + "string", + "null" + ] + }, + "hasExplicitDefaultValue": { + "description": "Whether the parameter has an explicit default value.", + "type": "boolean" + }, + "isOptional": { + "description": "Whether the parameter is optional.", + "type": "boolean" + }, + "name": { + "description": "The parameter name.", + "type": "string" + }, + "refKind": { + "description": "The parameter passing mode.", + "type": "string" + }, + "type": { + "description": "The parameter type information.", + "properties": { + "displayName": { + "description": "The display name.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation-comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The Roslyn type kind.", + "type": "string" + }, + "nullableAnnotation": { + "description": "The nullable annotation.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "name", + "refKind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "returnType": { + "description": "The return type information, when applicable.", + "properties": { + "displayName": { + "description": "The display name.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation-comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The Roslyn type kind.", + "type": "string" + }, + "nullableAnnotation": { + "description": "The nullable annotation.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "symbol": { + "description": "The resolved symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "type": { + "description": "The containing or declared type information, when applicable.", + "properties": { + "displayName": { + "description": "The display name.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation-comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The Roslyn type kind.", + "type": "string" + }, + "nullableAnnotation": { + "description": "The nullable annotation.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "accessibility" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-symbol-members1 field changed- changed
Output 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": { + "members": { + "description": "The resolved members.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
get-test-impact1 field changed- changed
Output 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": { + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + }, + "tests": { + "description": "The returned impacted tests.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "location": { + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + }, + "reasons": { + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "test": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
get-type-hierarchy1 field changed- changed
Output 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": { + "baseTypes": { + "description": "The ordered base types.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/type/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "derivedTypes": { + "description": "The optional derived types.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "depth": { + "description": "The zero-based depth from the queried root type.", + "type": "integer" + }, + "derivedTypes": { + "description": "The nested derived types for this node.", + "items": { + "$ref": "#/properties/request/properties/value/properties/derivedTypes/properties/items/items" + }, + "type": "array" + }, + "type": { + "description": "The resolved type symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "$ref": "#/properties/request/properties/value/properties/type/properties/location", + "description": "The optional source location of the symbol." + } + }, + "required": [ + "displayName", + "kind" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "interfaces": { + "description": "The implemented interfaces.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "$ref": "#/properties/request/properties/value/properties/baseTypes/properties/items", + "description": "Items returned in this page.", + "items": {} + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "type": { + "description": "The queried type.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
go-to-definition1 field changed- changed
Output 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": { + "definitions": { + "description": "The resolved definitions.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "containingAssembly": { + "description": "The containing assembly display name, when available.", + "type": [ + "string", + "null" + ] + }, + "isMetadata": { + "description": "Whether the definition is metadata-only.", + "type": "boolean" + }, + "location": { + "description": "The source location, when the definition is in source.", + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": [ + "object", + "null" + ] + }, + "metadataName": { + "description": "The metadata symbol name, when the definition is metadata-only.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "symbol": { + "description": "The queried symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
list-code-actions1 field changed- changed
Output 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": { + "actions": { + "description": "The returned actions.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "actionId": { + "description": "The opaque action reference.", + "format": "uuid", + "type": "string" + }, + "diagnostics": { + "description": "Concise diagnostic context for a code fix.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "id": { + "description": "The diagnostic identifier.", + "type": "string" + }, + "message": { + "description": "The diagnostic message.", + "type": "string" + } + }, + "required": [ + "id", + "message" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "fixAllScopes": { + "description": "The supported Fix All scopes for a code fix.", + "items": { + "enum": [ + "Document", + "Project", + "Solution" + ], + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "kind": { + "description": "The action kind.", + "enum": [ + "CodeFix", + "Refactoring" + ], + "type": "string" + }, + "location": { + "description": "The precise source location to which the action applies.", + "properties": { + "column": { + "description": "The zero-based source column.", + "type": "integer" + }, + "document": { + "description": "The project-aware source document identity.", + "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" + }, + "line": { + "description": "The zero-based source line.", + "type": "integer" + }, + "span": { + "description": "The zero-based UTF-16 source 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" + } + }, + "required": [ + "document", + "span" + ], + "type": "object" + }, + "providerId": { + "description": "Response-local provider reference when includeProvenance was requested.", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "The display title.", + "type": "string" + } + }, + "required": [ + "actionId", + "title", + "kind", + "location" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "providers": { + "additionalProperties": { + "properties": { + "assemblyName": { + "description": "Simple name of the assembly containing the provider.", + "type": "string" + }, + "assemblyVersion": { + "description": "Version of the assembly containing the provider.", + "type": "string" + }, + "typeName": { + "description": "Fully qualified runtime type of the provider that supplied the mutation.", + "type": "string" + } + }, + "required": [ + "typeName", + "assemblyName", + "assemblyVersion" + ], + "type": "object" + }, + "description": "Provider identities keyed by response-local references used by the returned actions.", + "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", + "snapshot" + ], + "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" +}
- Changed
prepare-error-report1 field changed- changed
Output 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": { + "destination": { + "description": "External destination to which the report will be sent.", + "type": "string" + }, + "dispatcher": { + "description": "Dispatcher that will send the report.", + "type": "string" + }, + "excludedCategories": { + "description": "Data categories excluded from the prepared payload.", + "items": { + "type": "string" + }, + "type": "array" + }, + "expiresAt": { + "description": "Time after which the submission handle can no longer be used.", + "format": "date-time", + "type": "string" + }, + "payloadDigest": { + "description": "Digest that identifies the exact immutable payload presented for review.", + "type": "string" + }, + "payloadJson": { + "description": "Immutable JSON payload presented for user review.", + "type": "string" + }, + "reviewWarnings": { + "description": "Warnings the user should consider before approving submission.", + "items": { + "type": "string" + }, + "type": "array" + }, + "submissionHandle": { + "description": "Opaque handle required to submit this reviewed payload.", + "type": "string" + } + }, + "required": [ + "submissionHandle", + "dispatcher", + "destination", + "payloadDigest", + "expiresAt", + "payloadJson" + ], + "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" +}
- Changed
prepare-fix-all1 field changed- changed
Output 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": { + "actionId": { + "description": "The opaque prepared action reference.", + "format": "uuid", + "type": "string" + }, + "affectedDiagnosticCount": { + "description": "The complete affected diagnostic count when it is authoritatively available.", + "type": [ + "integer", + "null" + ] + }, + "affectedDocuments": { + "description": "The bounded affected source document identities and complete changed-document count.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "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" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "scope": { + "description": "The accepted Fix All scope.", + "enum": [ + "Document", + "Project", + "Solution" + ], + "type": "string" + } + }, + "required": [ + "actionId", + "scope" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
resolve-symbol1 field changed- changed
Output 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": { + "declarations": { + "description": "The source declarations for the symbol.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "column": { + "description": "The one-based column number.", + "type": "integer" + }, + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/document", + "description": "The resolved document." + }, + "line": { + "description": "The one-based line number.", + "type": "integer" + }, + "selector": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector", + "description": "The canonical selector that can resolve this source location again." + }, + "snapshot": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/snapshot", + "description": "The exact immutable workspace snapshot associated with this location." + }, + "span": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/span", + "description": "The resolved text span." + } + }, + "required": [ + "snapshot" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "selector": { + "description": "The canonical selector for the resolved symbol.", + "properties": { + "documentationCommentId": { + "type": [ + "string", + "null" + ] + }, + "location": { + "description": "Provide exactly one of span or selection.", + "properties": { + "selection": { + "properties": { + "contextAfter": { + "type": [ + "string", + "null" + ] + }, + "contextBefore": { + "type": [ + "string", + "null" + ] + }, + "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": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector/properties/span/properties/document/properties/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "selectedText": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "document", + "selectedText" + ], + "type": [ + "object", + "null" + ] + }, + "span": { + "properties": { + "document": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector/properties/span/properties/document", + "description": "Provide exactly one of path or documentId." + }, + "range": { + "$ref": "#/properties/request/properties/value/properties/symbol/properties/location/properties/selector/properties/span/properties/range", + "description": "Zero-based UTF-16 range." + } + }, + "required": [ + "document", + "range" + ], + "type": [ + "object", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "project": { + "description": "Disambiguates symbols with matching identities.", + "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", + "null" + ] + }, + "symbol": { + "description": "The resolved symbol.", + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "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", + "snapshot" + ], + "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" +}
- Changed
search-symbols1 field changed- changed
Output 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": { + "symbols": { + "description": "The returned symbols.", + "properties": { + "hasMore": { + "description": "Whether additional items were available beyond this page.", + "type": "boolean" + }, + "items": { + "description": "Items returned in this page.", + "items": { + "properties": { + "displayName": { + "description": "The display name of the symbol.", + "type": "string" + }, + "documentationCommentId": { + "description": "The documentation comment identifier, when available.", + "type": [ + "string", + "null" + ] + }, + "kind": { + "description": "The symbol kind.", + "type": "string" + }, + "location": { + "description": "The optional source location of the symbol.", + "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" + ] + } + }, + "required": [ + "displayName", + "kind" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "totalCount": { + "description": "Complete result count, when available without additional expensive work.", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "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", + "snapshot" + ], + "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" +}
- Changed
server-status1 field changed- changed
Output 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": { + "codeActions": { + "description": "The code-action component status.", + "properties": { + "isAvailable": { + "description": "Whether the component is available.", + "type": "boolean" + }, + "message": { + "description": "The optional status message.", + "type": [ + "string", + "null" + ] + }, + "version": { + "description": "The component version, when available.", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "configuration": { + "description": "The effective non-sensitive server configuration.", + "properties": { + "allowedWorkspaceRootCount": { + "description": "The number of effective configured Workspace authority roots.", + "type": "integer" + }, + "clientSupportsElicitation": { + "description": "Whether the connected client advertised MCP elicitation, when known.", + "type": [ + "boolean", + "null" + ] + }, + "codeActionReferenceLifetime": { + "$comment": "Represents a System.TimeSpan value.", + "description": "The configured code-action reference lifetime.", + "pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$", + "type": "string" + }, + "commitConfirmationRequired": { + "description": "Whether Host confirmation is required before transaction commit.", + "type": "boolean" + }, + "commitConfirmationState": { + "description": "The current process-local transaction commit-confirmation state.", + "type": "string" + }, + "compilerValidationRequired": { + "description": "Whether compiler validation is required before transaction commit.", + "type": "boolean" + }, + "defaultMaxResults": { + "description": "The default maximum collection result count.", + "type": "integer" + }, + "errorReporting": { + "description": "The effective non-sensitive error-reporting configuration and session state.", + "properties": { + "consentMode": { + "description": "Configured consent policy for submitting error reports.", + "type": "string" + }, + "consentState": { + "description": "Current availability of user consent for error submission.", + "type": "string" + }, + "provider": { + "description": "Configured error-reporting provider.", + "type": "string" + } + }, + "required": [ + "provider", + "consentMode", + "consentState" + ], + "type": [ + "object", + "null" + ] + }, + "externalDocumentPolicy": { + "description": "The policy applied to evaluated documents outside the effective Workspace root.", + "type": "string" + }, + "externalPluginsEnabled": { + "description": "Whether loading external plugin packages was explicitly enabled at startup.", + "type": "boolean" + }, + "generatedSourceExceptionCount": { + "description": "The number of configured generated-source path exceptions.", + "type": "integer" + }, + "generatedSourcePolicy": { + "description": "The policy applied to generated-looking checked-in source.", + "type": "string" + }, + "maxConcurrentQueries": { + "description": "The configured maximum concurrent query count.", + "type": "integer" + }, + "maxTransactionRevisions": { + "description": "The configured transaction revision capacity.", + "type": "integer" + }, + "operationalMode": { + "description": "The selected operational mode.", + "type": "string" + }, + "receiptApprovalRequired": { + "description": "Whether receipt-bound approval is required before transaction commit.", + "type": "boolean" + }, + "sourceMutationEnabled": { + "description": "Whether source mutation is enabled.", + "type": "boolean" + }, + "toolOutputSchemaMode": { + "description": "The configured output schema publication mode.", + "enum": [ + "Omit", + "Full" + ], + "type": "string" + }, + "workspaceAdmission": { + "description": "Indicates whether Workspace admission is unrestricted or restricted by Host configuration.", + "type": "string" + } + }, + "required": [ + "operationalMode", + "commitConfirmationState", + "workspaceAdmission", + "externalDocumentPolicy", + "generatedSourcePolicy" + ], + "type": [ + "object", + "null" + ] + }, + "msBuild": { + "description": "The MSBuild component status.", + "properties": { + "isAvailable": { + "description": "Whether the component is available.", + "type": "boolean" + }, + "message": { + "description": "The optional status message.", + "type": [ + "string", + "null" + ] + }, + "version": { + "description": "The component version, when available.", + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "plugins": { + "description": "The plugin load results.", + "items": { + "properties": { + "diagnostics": { + "description": "The plugin load 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" + }, + "displayName": { + "description": "The display name, when supplied by the plugin.", + "type": [ + "string", + "null" + ] + }, + "enabled": { + "description": "Whether the plugin is enabled.", + "type": "boolean" + }, + "pluginId": { + "description": "The stable plugin identifier, when supplied by the plugin.", + "type": [ + "string", + "null" + ] + }, + "supportedApiVersion": { + "description": "The supported plugin API version, when supplied by the plugin.", + "type": [ + "string", + "null" + ] + }, + "version": { + "description": "The semantic version, when supplied by the plugin.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "recovery": { + "description": "The unfinished recovery state, when present.", + "items": { + "properties": { + "code": { + "description": "Stable machine-readable recovery status code, when operator action is required.", + "type": [ + "string", + "null" + ] + }, + "commitId": { + "description": "Durable commit identifier associated with the recovery record.", + "type": "string" + }, + "message": { + "description": "Human-readable recovery status or failure detail, when available.", + "type": [ + "string", + "null" + ] + }, + "solutionPath": { + "description": "Absolute solution or project path associated with the recovery record, or empty when malformed recovery evidence does not provide a safe path.", + "type": "string" + }, + "state": { + "description": "Current durable commit recovery state.", + "enum": [ + "Prepared", + "Applying", + "Committed", + "Restored", + "RecoveryConflict", + "RecoveryIncomplete" + ], + "type": "string" + } + }, + "required": [ + "commitId" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "roslynVersion": { + "description": "The Roslyn version, when available from assembly metadata.", + "type": [ + "string", + "null" + ] + }, + "serverVersion": { + "description": "The server version, when available from assembly metadata.", + "type": [ + "string", + "null" + ] + }, + "startupWarnings": { + "description": "The startup configuration fallbacks, when expanded detail is requested.", + "items": { + "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" + }, + "type": [ + "array", + "null" + ] + }, + "toolCount": { + "description": "The loaded tool count.", + "type": "integer" + } + }, + "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" +}
- Changed
submit-error-report1 field changed- changed
Output 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": { + "dispatcher": { + "description": "Dispatcher that sent the report.", + "type": "string" + }, + "payloadDigest": { + "description": "Digest of the payload that was submitted.", + "type": "string" + }, + "reportReference": { + "description": "Provider reference for the submitted report.", + "type": "string" + } + }, + "required": [ + "dispatcher", + "reportReference", + "payloadDigest" + ], + "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" +}
- Changed
workspace-close1 field changed- changed
Output 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": { + "closedPath": { + "description": "The path that was closed.", + "type": "string" + } + }, + "required": [ + "closedPath" + ], + "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" +}
- Changed
workspace-list1 field changed- changed
Output 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": { + "transactionOwnerWorkspaceId": { + "description": "The workspace identifier that currently owns the global transaction slot, when present.", + "format": "uuid", + "type": [ + "string", + "null" + ] + }, + "workspaces": { + "description": "The loaded workspaces.", + "items": { + "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" + }, + "type": "array" + } + }, + "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" +}
- Changed
workspace-open1 field changed- changed
Output 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.", + "type": "integer" + }, + "loadDiagnostics": { + "description": "Workspace load and advisory 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" + }, + "projectCount": { + "description": "The loaded project count.", + "type": "integer" + }, + "workspace": { + "description": "The loaded workspace identity.", + "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" +}
- Changed
workspace-reload1 field changed- changed
Output 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.", + "type": "integer" + }, + "loadDiagnostics": { + "description": "The workspace load 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" + }, + "projectCount": { + "description": "The loaded project count.", + "type": "integer" + }, + "workspace": { + "description": "The reloaded workspace identity.", + "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" +}
- Changed
workspace-status1 field changed- changed
Output 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" +}
10 tool updates
v1.0.3- Changed
analyze-nullability2 fields changed- added
Input schema / properties / findingsLimit / descriptionAdded value: +"Caps returned nullable-flow diagnostics. Omitted or null uses 50; zero returns no findings." - added
Input schema / properties / scope / descriptionAdded value: +"Selects documents or projects to analyse when location is omitted; omitted searches the loaded solution. Ignored when location is supplied."
- Changed
find-callers4 fields changed- added
Input schema / properties / callSitesPerCallerLimit / descriptionAdded value: +"Caps call sites independently for each returned caller. Omitted or null uses 100; zero retains callers without call sites." - added
Input schema / properties / callersLimit / descriptionAdded value: +"Caps returned callers independently of the call-site limit. Omitted or null uses 100; zero returns no callers." - added
Input schema / properties / includeContext / descriptionAdded value: +"Include the trimmed source line for each returned call site when available; defaults to false." - added
Input schema / properties / scope / descriptionAdded value: +"Limits caller discovery to the selected documents or projects; omitted searches the loaded solution."
- Changed
find-derived-types2 fields changed- added
Input schema / properties / derivedTypesLimit / descriptionAdded value: +"Caps returned derived types within maxDepth. Omitted or null uses 100; zero returns no derived types." - added
Input schema / properties / scope / descriptionAdded value: +"Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution."
- Changed
find-implementations2 fields changed- added
Input schema / properties / implementationsLimit / descriptionAdded value: +"Caps returned distinct implementation symbols. Omitted or null uses 100; zero returns no implementations." - added
Input schema / properties / scope / descriptionAdded value: +"Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution."
- Changed
find-overrides2 fields changed- added
Input schema / properties / overridesLimit / descriptionAdded value: +"Caps returned distinct overriding members. Omitted or null uses 100; zero returns no overrides." - added
Input schema / properties / scope / descriptionAdded value: +"Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution."
- Changed
find-references4 fields changed- added
Input schema / properties / includeContext / descriptionAdded value: +"Include the trimmed source line for each returned reference when available; declaration entries have no context. Defaults to false." - added
Input schema / properties / includeDefinitions / descriptionAdded value: +"Include source declarations alongside references within the same result limit; defaults to true." - added
Input schema / properties / referencesLimit / descriptionAdded value: +"Caps returned occurrences, including declarations when requested. Omitted or null uses 100; zero returns no occurrences." - added
Input schema / properties / scope / descriptionAdded value: +"Limits references and declarations to the selected documents or projects; omitted searches the loaded solution."
- Changed
get-change-impact2 fields changed- added
Input schema / properties / locationsLimit / descriptionAdded value: +"Caps returned reference locations without limiting impact counts. Omitted or null uses 100; zero returns counts without locations." - added
Input schema / properties / scope / descriptionAdded value: +"Selects documents for references and callers, and projects for override and implementation counts. A document scope uses its containing project for those counts; omitted searches the loaded solution."
- Changed
get-symbol-dependents2 fields changed- added
Input schema / properties / dependentsLimit / descriptionAdded value: +"Caps returned distinct dependent symbols. Omitted or null uses 100; zero returns no dependents." - added
Input schema / properties / scope / descriptionAdded value: +"Limits the source references used to discover dependents to the selected documents or projects; omitted searches the loaded solution."
- Changed
get-test-impact3 fields changed- added
Input schema / properties / includeReasons / descriptionAdded value: +"Include explanations of why each returned test may be affected; defaults to false and does not change which tests match." - added
Input schema / properties / testScope / descriptionAdded value: +"Limits candidate test discovery to the selected documents or projects; omitted searches the loaded solution." - added
Input schema / properties / testsLimit / descriptionAdded value: +"Caps returned likely impacted tests. Omitted or null uses 100; zero returns no tests."
- Changed
search-symbols1 field changed- added
Input schema / properties / metadataName / descriptionAdded value: +"Filters declaration metadata names by a case-insensitive substring; also supplies the search pattern when query is omitted."
48 tool updates
v1.0.2- First observed
analyze-async - First observed
analyze-control-flow - First observed
analyze-data-flow - First observed
analyze-disposables - First observed
analyze-nullability - First observed
find-callees - First observed
find-callers - First observed
find-dependency-cycles - First observed
find-derived-types - First observed
find-duplicate-code - First observed
find-implementations - First observed
find-overloads - First observed
find-overrides - First observed
find-references - First observed
find-unused-symbols - First observed
get-api-surface - First observed
get-change-impact - First observed
get-code-context - First observed
get-control-flow-graph - First observed
get-dependency-graph - First observed
get-diagnostics - First observed
get-document-options - First observed
get-document-outline - First observed
get-error-details - First observed
get-operation-tree - First observed
get-partial-declarations - First observed
get-project-details - First observed
get-solution-structure - First observed
get-symbol-attributes - First observed
get-symbol-dependencies - First observed
get-symbol-dependents - First observed
get-symbol-info - First observed
get-symbol-members - First observed
get-test-impact - First observed
get-type-hierarchy - First observed
go-to-definition - First observed
list-code-actions - First observed
prepare-error-report - First observed
prepare-fix-all - First observed
resolve-symbol - First observed
search-symbols - First observed
server-status - First observed
submit-error-report - First observed
workspace-close - First observed
workspace-list - First observed
workspace-open - First observed
workspace-reload - First observed
workspace-status
TDQS
Scored across 48 tools
Most tools target clearly distinct Roslyn operations (analyze-* group, workspace-* group, symbol hierarchy tools). However, a few clusters could be confused: find-references vs find-callers vs get-symbol-dependents, and get-code-context vs get-document-outline vs get-operation-tree overlap in intent. Descriptions help but an agent may still hesitate between dependency and reference tools.
Every tool follows a consistent kebab-case verb_noun pattern (get-*, find-*, analyze-*, workspace-*, prepare/submit-error-report). Prefixes map predictably to intent groups, making the set easy to scan.
48 tools is heavy, well past the 25+ threshold and approaching the extreme 50+ tier. While a semantic analysis domain is broad, this many tools burdens selection and several (find-callers/find-callees, get-symbol-dependencies/dependents) could plausibly be consolidated.
Coverage is strong across diagnostics, symbol resolution, hierarchy, dependency/impact analysis, code actions, and workspace lifecycle. The notable gap is mutation: list-code-actions and prepare-fix-all exist but no apply/rename/refactor tool, suggesting a read-only surface despite the 'workbench' framing.
Maintenance
Related MCP Connectors
Repository knowledge graph MCP server for codebase understanding and debugging.
Lean 4 MCP server: compile, prove theorems, and formalize math with Mathlib.
Related MCP Servers
- AlicenseAqualityAmaintenanceRoslyn-based MCP server providing semantic code intelligence for .NET codebases — type hierarchies, call sites, DI registrations, and reflection usage for Claude Code6764MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server providing 62 AI-optimized tools for .NET/C# semantic code analysis, navigation, refactoring, and code generation using Microsoft Roslyn. Built for AI coding agents - provides compiler-accurate code understanding that AI cannot infer from reading source files alone.6237MIT
- FlicenseAqualityDmaintenanceMinimal MCP server bridging a Roslyn C# language server to AI agents, exposing tools for diagnostics, call hierarchy, and type hierarchy.1-
- AlicenseAqualityCmaintenanceMCP server for .NET assembly analysis. Vendor-neutral wrapper around AsmResolver and ILSpy for parsing and decompiling .NET assemblies.111MIT