Roslyn Workbench MCP
Roslyn Workbench MCP is a local C#/Roslyn MCP server that gives agents compiler-aware workspace inspection, code actions and staged refactoring.
Open, list, inspect, reload and close C#/.NET solutions or projects, including project details, document outlines and API surface.
Search and navigate symbols: resolve, definitions, references, callers/callees, implementations, overrides, derived types, hierarchy, members, overloads and attributes.
Run compiler/analyser analysis: diagnostics, nullability, async, disposables, control/data flow, CFG, operation trees, duplicate code, unused symbols, dependency graphs/cycles, change and test impact.
Discover and stage Roslyn code fixes/refactorings and Fix All operations, rename symbols and format documents.
Use transactions to preview/review diffs, commit or roll back, undo/redo revisions, and recover from interrupted commits.
Inspect server/workspace status, error details/reporting and operate in inspection-only, transactional, approval-required or autonomous-trusted modes.
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.
Roslyn Workbench skill
The optional skill guides agents through workspace selection, semantic inspection, Code Actions, transactions and recovery. Clients with MCP resource support can read skill://roslyn-workbench/SKILL.md from the installed server, with 11 task-specific references loaded only when needed.
For separate installation, download the development skill bundle and follow the installation guidance. Select documentation matching your installed server to obtain a release-specific bundle once available. Extract the complete roslyn-workbench directory, including its references, client metadata and logo, into your client's supported skill location. Discovery and activation depend on the client; the skill does not change permissions or Host policy.
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
56 toolsanalyze-asyncAnalyze AsyncARead-onlyIdempotent
Reports only bundled AsyncFixer01 through AsyncFixer06 diagnostics plus compiler warning CS4014 for selected source documents. Use this for focused async/await review, including bundled rules when the project does not reference AsyncFixer; use get-diagnostics for general compiler and project analyser findings. Searches the selected scope, or the loaded solution when scope is omitted. Returns up to 50 findings by default; check findings.hasMore before treating the report as complete.
| 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 declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered; the description adds genuine behavior beyond that: scope omission falls back to the loaded solution, and the result set is truncated with findings.hasMore signalling incompleteness. It stops short of describing ordering or how truncation interacts with the limit, so not quite a 5.
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?
Four sentences, each load-bearing: rule set, when-to-use plus alternative, default scope, and truncation caveat. The most decisive constraint (the exact rule set) is front-loaded.
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 shape needn't be explained, and the description still flags the one output field that matters for correctness (findings.hasMore). Together with the scope fallback and the sibling routing, nothing an agent needs to call this 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 baseline is 3. The description adds one piece of meaning beyond the schema — that an omitted scope searches the whole loaded solution — and restates the 50 default already present in the schema, which earns no credit.
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 (Reports) and a precisely bounded resource: only bundled AsyncFixer01–AsyncFixer06 plus compiler warning CS4014. It explicitly contrasts itself with get-diagnostics, so an agent can pick the right tool without opening either 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?
Gives the when ('focused async/await review'), a non-obvious edge case ('including bundled rules when the project does not reference AsyncFixer'), and names the alternative ('use get-diagnostics for general compiler and project analyser findings'). Selection is fully determined.
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 FlowARead-onlyIdempotent
Analyses entry and exit reachability, exit points and return statements for an exact complete statement or contiguous sibling statements in one executable body. Use this to understand a selected region; use get-control-flow-graph for the enclosing executable graph, or analyze-data-flow for variable-flow information. The selection must match statement spans exactly; a caret or partial statement is rejected. Echo the current expectedSnapshot. Exit points and return statements are limited independently to 100 each by default; check exits.hasMore and returns.hasMore.
| 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 readOnly/idempotent/non-destructive, and the description still adds real behavior: strict selection validation that causes rejection, the requirement to echo expectedSnapshot for concurrency correctness, and independent truncation of exits and returns at 100 with hasMore flags to check. That is more than the annotations convey, though it does not describe error surfacing when the snapshot is stale.
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-loaded with purpose, then alternatives, then the validation constraint, then snapshot and limits — a sensible ordering with no filler. It is dense and slightly packed (multiple constraints per sentence), but every sentence carries operational information.
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 5-parameter, nested-schema, read-only analysis tool with an output schema, the description covers what an agent needs before calling: scope semantics, sibling routing, the exact-match precondition, snapshot echoing, and truncation behavior. Return-value shape is correctly left to the output 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 coverage is 100% and the schema already documents the exact-statement requirement, the expectedSnapshot echo, and the 100-item defaults for exitsLimit/returnsLimit, so the description mostly restates structured data. The only genuine addition is pointing at the exits.hasMore/returns.hasMore output flags, which is output-side rather than parameter meaning — 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 ('Analyses entry and exit reachability, exit points and return statements') plus the exact scope ('an exact complete statement or contiguous sibling statements in one executable body'). It explicitly distinguishes itself from get-control-flow-graph (enclosing graph) and analyze-data-flow (variable flow), so an agent can pick it without opening any 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?
Gives explicit when-to-use ('use this to understand a selected region') and names two alternatives with the conditions that select them. It also states a hard precondition — the selection must match statement spans exactly and a caret or partial statement is rejected — which is exactly the kind of guidance that prevents wasted calls.
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 FlowARead-onlyIdempotent
Returns Roslyn variable sets for declarations, reads, writes, captures and data flowing into or out of an exact expression, complete statement or contiguous sibling statements in one executable body. Use this when planning to extract or move selected code; use get-operation-tree for semantic operation structure, or analyze-control-flow for region reachability and exits. Echo the current expectedSnapshot and select exact syntax spans. Each variable category is limited independently to 50 symbols by default; check its hasMore before treating the category as complete.
| 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 cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description adds real behavior: each variable category is independently truncated at 50 symbols by default with a hasMore flag the caller must check, and the request must echo a current expectedSnapshot. These are concurrency and completeness contracts the agent could not infer from the structured fields. It stops short of describing what happens on snapshot mismatch or what error surfaces look like, keeping it below a 5.
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?
Three sentences, front-loaded with the capability, then routing, then the operational caveats. Dense but every clause carries information (scope, alternatives, snapshot echo, category truncation). The opening sentence is long and jargon-heavy, but trimming it would lose the scope definition that distinguishes it from 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 explained, and the description correctly spends its words on when to call it, which sibling to prefer, the snapshot precondition, and the truncation caveat. Complete enough to invoke correctly; only error/failure behavior is unaddressed, which is a minor gap for a read-only analysis 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 coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: location must be an exact expression, complete statement, or contiguous sibling statement range, and expectedSnapshot must be the one returned with the state used to build the request. It also flags the default per-category cap that governs symbolsPerCategoryLimit, which the schema documents only as a bare maximum.
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 a precisely bounded resource: Roslyn variable sets for declarations, reads, writes, captures and data flowing in/out of an exact expression, statement, or contiguous sibling statements in one executable body. It also names the two nearest siblings (get-operation-tree, analyze-control-flow) with their distinct scopes, so an agent can separate them without opening schemas.
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 trigger ('use this when planning to extract or move selected code') and explicitly routes two alternatives to their own purposes ('get-operation-tree for semantic operation structure', 'analyze-control-flow for region reachability and exits'). Both when-to-use and when-to-use-something-else are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze-disposablesAnalyze DisposablesARead-onlyIdempotent
Heuristically flags local declarations of IDisposable or IAsyncDisposable values that lack a recognised disposal pattern. Use this for advisory resource-handling review; verify ownership transfers and control flow before acting. Using declarations are skipped, and supported direct or finally-block Dispose/DisposeAsync calls are recognised. Analysis is limited to local declarations and recognised patterns; use get-diagnostics for configured compiler and analyser rules. Searches the selected scope, or the loaded solution when scope is omitted. Returns up to 50 findings by default; check findings.hasMore.
| 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 declare readOnly/idempotent/non-destructive, yet the description still adds real behavioral detail: which patterns are recognised (direct or finally-block Dispose/DisposeAsync), what is skipped (using declarations), the heuristic/advisory nature of the results, the default scope fallback, and a 50-finding cap with findings.hasMore. The only gap is how findings should be interpreted beyond 'verify manually,' but that is minor.
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-loaded with the core behavior and no filler sentences; each clause carries information (scope, exclusions, limits, alternative tool). It is dense to the point of being slightly packed, but nothing is 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, the description need not explain return shape, and it still calls out findings.hasMore so the agent knows to paginate. Combined with the exclusions, advisory framing, scope fallback, and sibling routing, an agent has everything needed to 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 the baseline is 3; however the description adds semantics not obvious from the schema, namely that an omitted scope means the loaded solution is searched, and that findingsLimit defaults to 50 with hasMore signalling truncation. It does not explain the scope kind discriminator beyond what the schema already says.
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: 'Heuristically flags local declarations of IDisposable or IAsyncDisposable values that lack a recognised disposal pattern.' It also distinguishes itself from get-diagnostics by framing itself as a heuristic local-declaration scan rather than configured compiler/analyser rules.
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?
Explicitly says 'Use this for advisory resource-handling review; verify ownership transfers and control flow before acting,' and routes the agent elsewhere: 'use get-diagnostics for configured compiler and analyser rules.' It also names what is out of scope (using declarations, non-local declarations), which is genuine when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze-nullabilityAnalyze NullabilityARead-onlyIdempotent
Reports compiler diagnostics whose IDs begin with CS86 for focused nullable analysis. Use get-diagnostics for other compiler or project analyser findings, and get-document-options to inspect project-level nullable context. A supplied location overrides scope and keeps diagnostics intersecting its resolved span; echo its expectedSnapshot. Without a location, searches the selected scope or the loaded solution by default. Findings depend on compiler settings and are limited to 50 by default; check findings.hasMore.
| 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 cover the readOnly/idempotent/non-destructive profile, and the description still adds real behavior: CS86-only filtering, findings depend on compiler settings, a default 50-cap with zero meaning empty, the findings.hasMore signal, and the requirement to echo expectedSnapshot. The only gap is what happens if the snapshot mismatches (error vs. silent refresh), which is left implicit.
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?
Five compact sentences, each load-bearing: purpose, alternatives, location precedence, default scope, then limits/pagination. The distinguishing filter and sibling routing are front-loaded with no filler.
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, five-optional-parameter query tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what is filtered, how scope vs. location resolve, the default limit, and how to detect truncation.
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 baseline is 3, but the description adds precedence semantics not obvious from the schema: a supplied location overrides scope and keeps only diagnostics intersecting its resolved span, and an omitted location searches the selected scope or the loaded solution. It does not elaborate on span/selection construction, but the schema covers that.
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?
"Reports compiler diagnostics whose IDs begin with CS86 for focused nullable analysis" gives a specific verb, resource, and a stated filter (CS86 codes) that separates it from the generic diagnostics siblings. An agent can tell it apart from get-diagnostics without opening either 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 explicitly routes the agent elsewhere: get-diagnostics for other compiler/analyser findings and get-document-options for project-level nullable context. The location-vs-scope precedence rule is also stated, leaving little to infer.
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
Finds distinct method and constructor targets invoked by a source executable symbol or selected executable region. Use this for outgoing calls; use find-callers for incoming call sites. Reads the loaded workspace without executing code. Direct calls are the default; includeIndirect traverses reachable source bodies up to maxDepth (default 3, direct calls at depth 1). Nested lambda and local-function bodies are skipped during each body scan. Returns source and a bounded callees collection, not call sites or runtime dispatch targets. calleesLimit defaults to 100; check callees.hasMore for result truncation within the requested depth. 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 cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context on top: the tool reads the loaded workspace without executing code, nested lambda/local-function bodies are skipped, and results are bounded by calleesLimit with callees.hasMore signaling truncation. It also clarifies what is NOT returned (call sites, runtime dispatch targets).
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-loaded with purpose and the sibling contrast, and the trailing sentences each carry new information about depth, truncation, and output shape. Slight redundancy with the schema's own defaults (maxDepth 3, calleesLimit 100) and the 'provide exactly one of' constraint costs it a point.
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 7-parameter tool with nested objects, it covers input selection, depth traversal semantics, truncation behavior, and output shape. Since an output schema exists, no further return-value detail is required.
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?
With 100% schema coverage the baseline is 3, but the description adds real semantics: direct calls sit at depth 1, maxDepth defaults to 3, calleesLimit defaults to 100, and hasMore indicates truncation within the requested depth. It restates a couple of schema defaults, which keeps it just short of a 5.
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 distinct method and constructor targets invoked by...') and scopes the input to an executable symbol or region. It explicitly distinguishes itself from the sibling find-callers, so an agent can choose between them without opening either 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?
'Use this for outgoing calls; use find-callers for incoming call sites' gives an explicit alternative and the condition that selects it. It also explains the direct-vs-indirect default and that exactly one of symbol or location must be supplied, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-callersFind CallersARead-onlyIdempotent
Finds callers of a resolved symbol and groups source call sites by calling symbol. Use this to trace incoming calls; use find-references for general source usages or find-callees for calls made by a selected member. Searches the selected scope, or the loaded solution when scope is omitted. Defaults to 100 callers and 100 call sites per caller, limited independently. Check callers.hasMore and each caller's callSites.hasMore before treating the results as complete.
| 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 establish read-only, idempotent, non-destructive behavior, but the description adds important truncation semantics: default limits of 100 callers and 100 call sites per caller, independent limits, and the need to check callers.hasMore and callSites.hasMore before treating results as complete. It does not discuss performance or snapshot consistency, but it covers the main behavioral risk of incomplete results.
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 front-loaded with purpose and alternatives, then moves to scope behavior, limits, and completeness checks. Every sentence contributes operational guidance with no filler.
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 input schema and the presence of an output schema, the description supplies what structured fields do not: sibling differentiation, scope fallback, independent pagination limits, and how to detect incomplete results via hasMore flags. Nothing essential for correct invocation appears to be 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 schema already documents parameters in detail. The description reinforces the scope fallback and the independent caller/call-site limits, but most of that information is already present in the schema descriptions, so it adds only modest value beyond structured fields.
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 finds callers of a resolved symbol and groups source call sites by calling symbol. It also explicitly distinguishes itself from find-references and find-callees, so an agent can select it without opening sibling schemas.
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 explicit routing guidance: use this to trace incoming calls, use find-references for general source usages, and use find-callees for calls made by a selected member. It also clarifies that omitted scope searches the loaded solution, removing a common ambiguity.
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 CyclesARead-onlyIdempotent
Finds mutually dependent groups in a static dependency graph for the selected scope, or the loaded solution when scope is omitted. Use this to investigate circular coupling; use get-dependency-graph to inspect individual dependency edges. granularity defaults to Type; Namespace groups source dependencies and Project uses direct project references. A document scope uses its containing project for Project granularity. Returns a bounded cycles collection of strongly connected node groups, not ordered traversal paths. cyclesLimit defaults to 25; check cycles.hasMore for additional groups. Analysis budgets default to 25000 nodes and 100000 edges; exceeding either rejects the query with AnalysisLimitExceeded rather than returning a partial cycle analysis. Narrow the scope or raise the relevant budget to retry. Read-only; no tests or application code are run.
| 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 cover the read-only, idempotent, non-destructive profile, yet the description adds real behavioral detail: hard analysis budgets that reject with AnalysisLimitExceeded rather than returning partial results, and the shape of the return (bounded strongly-connected node groups, not ordered paths). Minor gap is that it does not state whether results are cached or how cost scales before the limits 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?
Front-loaded with purpose and the sibling alternative, then layers in granularity semantics, return shape, and limit behavior. Dense but each sentence carries distinct information; the budget sentence could be tightened slightly but nothing is redundant.
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, the description does not need to enumerate return fields, yet it still tells the agent how to page through results (cycles.hasMore) and why it may get a hard failure. For a 6-param analysis tool with optional params, this is complete enough to invoke correctly on the first try.
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 baseline is 3, but the description adds meaning the schema does not: 'Namespace groups source dependencies and Project uses direct project references' explains what the enum values actually do, and it clarifies that a document scope resolves to its containing project under Project granularity. It also ties cyclesLimit to cycles.hasMore.
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 mutually dependent groups in a static dependency graph'), including the default scope when the parameter is omitted. It explicitly separates itself from get-dependency-graph, so an agent can choose between them without opening a 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?
Names the sibling tool and the condition that selects each: use this for circular coupling, use get-dependency-graph for individual edges. It also tells the agent how to recover from a rejected query (narrow scope or raise the budget).
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 TypesARead-onlyIdempotent
Finds source types derived from a resolved named type, with their inheritance distance. Use this to explore descendants; use get-type-hierarchy for base types as well, or find-implementations for interface member implementations. For an interface, includes derived interfaces and implementing types. Searches projects selected by scope, or the loaded solution when scope is omitted. Defaults to three inheritance levels and 100 returned types. Check derivedTypes.hasMore for truncation within maxDepth; deeper types are excluded.
| 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 already declare readOnly/idempotent/non-destructive, and the description adds real operational context beyond them: default of three inheritance levels, 100 returned types, and the fact that deeper types are silently excluded past maxDepth. The one addition an agent would want is how the result set is ordered, which is left implicit.
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?
Four sentences, each carrying distinct information: purpose, sibling routing, interface case, scope/defaults, truncation. Purpose and routing are front-loaded with no preamble or filler.
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 a full output schema, the description covers selection, defaults, truncation signalling (derivedTypes.hasMore) and scope fallback — everything needed to call it correctly. Return-value detail is properly delegated to the output 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 coverage is 100%, so baseline is 3; the description still earns above baseline by explaining the interaction between maxDepth and derivedTypesLimit (truncation within depth, deeper types excluded) and the scope-omitted default. It does not, however, tell the agent that derivedTypesLimit=0 yields no results beyond what the schema note already says.
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 types derived from a resolved named type') plus the distinguishing output trait (inheritance distance). It also names the two siblings it is not (get-type-hierarchy, find-implementations), so the agent can select without opening schemas.
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?
Explicit routing: use this for descendants, get-type-hierarchy when base types are also needed, find-implementations for interface member implementations. It also states the interface special case (derived interfaces plus implementing types) and the scope fallback, leaving little to inference.
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 CodeARead-onlyIdempotent
Finds groups of whole executable blocks with identical statement text after whitespace normalisation. Use this to locate duplication candidates for manual inspection; identifiers and literal values remain significant, so this is not semantic clone detection. Scans block-bodied methods, constructors, local functions and accessors in the selected scope, or the loaded solution when scope is omitted; expression bodies and arbitrary statement subsequences are not candidates. minimumStatements defaults to 3 top-level statements per block. Returns groups with statementCount and bounded occurrences containing symbol and location pointers, without source excerpts or edits. Limits default to 25 groups and 100 occurrences per group; check groups.hasMore and each occurrences.hasMore independently.
| 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?
Beyond the readOnly/idempotent annotations, the description discloses enumeration rules (block-bodied methods, constructors, local functions, accessors), the scanning default, and truncation behavior for both groups and per-group occurrences. The instruction to check groups.hasMore and occurrences.hasMore independently is exactly the kind of operational detail annotations cannot carry.
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?
Five tight sentences, front-loaded with purpose before the exclusion note and the return/pagination contract. Dense but nearly every clause carries information; the one mild redundancy is restating the return payload shape (statementCount, symbol pointers, no excerpts) when an output schema already exists.
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 zero-required-parameter, read-only analysis tool with a full output schema and annotations, everything an agent needs is present: what counts as a duplicate, what does not, default scope, default thresholds, and how to page through truncated 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 coverage is already 100%, but the description adds real meaning: minimumStatements counts top-level statements per block (default 3), and the two limit parameters are tied to independent hasMore flags. The scope parameter's fallback to the loaded solution is also clarified. It stops short of describing the scope kind enum values, but the schema handles those.
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 precise verb and resource plus the exact matching rule: groups of whole executable blocks with identical statement text after whitespace normalisation. It immediately bounds the tool with 'this is not semantic clone detection', and 'identifiers and literal values remain significant' lets an agent distinguish it from any fuzzy similarity search among its 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?
Explicitly frames the purpose as locating duplication candidates for manual inspection, and enumerates what is out of scope (expression bodies, arbitrary statement subsequences). It also states the default scope (loaded solution when scope is omitted). No sibling tool is named as an alternative, keeping this short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-implementationsFind ImplementationsARead-onlyIdempotent
Finds implementations of a resolved interface or member and returns symbol references. Use this to locate implementing types or members; use find-overrides for overrides of a virtual or abstract member, or find-references for source usages. Searches projects selected by scope, or the loaded solution when scope is omitted. Returns up to 100 implementations by default; check implementations.hasMore before treating the results as complete.
| 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?
Annotations already declare read-only, idempotent, non-destructive behavior, so safety is covered. The description adds real value beyond that: the default cap of 100 results and the instruction to check implementations.hasMore before treating results as complete — a truncation trait not obvious from the schema. It stops short of describing ordering or whether partial results are stable across snapshots.
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?
Three sentences, front-loaded with purpose, then routing, then scoping/pagination caveat. Every sentence carries information; the only mild redundancy is repeating the solution-scope default already stated in the schema for scope.
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 a rich nested schema and an output schema, this covers everything an agent needs: what it returns (references), how to pick it over siblings, which projects get searched, and how to detect truncation. Return-value detail is correctly delegated to the output 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 coverage is 100% and the schema already documents scope defaults, implementationsLimit default of 100, and zero-means-none behavior. The description restates the scope default and result cap, which reinforces but adds no syntax or constraint detail the schema lacks. 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?
Opens with a specific verb+resource ('Finds implementations of a resolved interface or member') plus the return shape ('returns symbol references'). It explicitly contrasts itself with find-overrides and find-references, so an agent can distinguish it from the closest siblings without reading any 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?
States exactly when to use it ('to locate implementing types or members') and names the two alternatives with the conditions that select them ('overrides of a virtual or abstract member' vs 'source usages'). It also clarifies the scope default (loaded solution when scope is omitted). Nothing 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-overloadsFind OverloadsARead-onlyIdempotent
Lists callable signatures for a resolved method or constructor so you can compare parameter and return types. Requires a callable symbol; use search-symbols to discover one first. Methods are matched by name and method kind within the same containing type; instance constructors include only explicitly declared constructors. The selected callable can appear in the results. This does not resolve a call against arguments or collect inherited overloads. Returns symbol and a bounded overloads collection ordered by parameter count then signature. overloadsLimit defaults to 50; check overloads.hasMore for truncation. Reads symbols without invoking code.
| 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 establish read-only, idempotent, non-destructive behavior, and the description adds substantial context beyond them. It explains matching by name and method kind within the containing type, constructor behavior, possible inclusion of the selected callable, result ordering, the default limit, and hasMore truncation.
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 purpose is front-loaded in the first sentence, and the following sentences add only relevant constraints and behavioral details. Despite covering several nuances, it remains dense and free of filler.
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 output schema and rich annotations, the description supplies the remaining behavioral context an agent needs: matching rules, exclusions, result ordering, truncation behavior, and the requirement to resolve a symbol first. Nothing essential 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 the baseline is 3. The description adds some useful context around overloadsLimit and hasMore, but most parameter meaning is already carried by the schema, including workspace, symbol, and snapshot fields.
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 and resource: it lists callable signatures for a resolved method or constructor. It clearly distinguishes the tool from symbol discovery by saying a callable symbol is required and pointing to search-symbols first.
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 explicitly states the prerequisite (a callable symbol) and names search-symbols as the way to obtain one. It also gives exclusions: it does not resolve a call against arguments and does not collect inherited overloads, which helps select against related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-overridesFind OverridesARead-onlyIdempotent
Finds distinct overriding methods, properties or events for a resolved member. Use this to follow virtual or abstract member overrides; use find-implementations for interface implementations or find-derived-types for type inheritance. Searches the selected projects, or the loaded solution when scope is omitted; a document scope searches its containing project. Returns the selected symbol and a bounded overrides collection of symbol references. overridesLimit defaults to 100; check overrides.hasMore before treating the list as complete. This is a read-only symbol search and does not execute the 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 carry readOnlyHint/idempotentHint/destructiveHint=false, yet the description still adds real behavior: scope resolution rules ('a document scope searches its containing project', omitted searches the loaded solution), the 100-item default, the need to check overrides.hasMore, and that the member is not executed. It stops short of describing result ordering or performance characteristics, so a 4 rather than a 5.
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 first, then routing to alternatives, then scope semantics, then return/pagination note. Five tight sentences with no filler; every clause carries information an agent needs to call the tool correctly.
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 the description needn't enumerate return fields, and it doesn't; it covers the pieces the schema can't — when to choose this vs. siblings, how scope defaults resolve, and the pagination caveat. 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 scope, symbol, workspace, overridesLimit and expectedSnapshot are already documented in structured form. The description restates the scope-resolution and limit defaults but adds little that the schema doesn't already say (the zero-limit edge case is also in the schema), 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 precise verb and resource: 'Finds distinct overriding methods, properties or events for a resolved member.' It immediately disambiguates against the two nearby siblings (find-implementations, find-derived-types), so an agent can pick it without opening any 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?
Explicit routing: 'Use this to follow virtual or abstract member overrides; use find-implementations for interface implementations or find-derived-types for type inheritance.' It names both alternatives and the condition selecting each, which is exactly what a sibling-rich tool listing needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-referencesFind ReferencesARead-onlyIdempotent
Finds source usages of a resolved symbol, with locations, containing symbols and access classification where available. Use this to locate usages or inspect writes; use find-callers when you need incoming calls grouped by calling symbol. Searches the selected scope, or the loaded solution when scope is omitted. Declarations are included by default and share the default 100-occurrence limit with references. Check references.hasMore before treating the results as complete.
| 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?
Beyond the readOnly/idempotent annotations, it discloses that declarations are included by default, that declarations and references share the 100-occurrence limit, and that results may be truncated — with an instruction to check references.hasMore. Some of this restates schema defaults (includeDefinitions, referencesLimit), but the truncation warning is genuine added 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?
Four short sentences, front-loaded with the purpose, then the alternative, then scope defaults, then the truncation caveat. Efficient overall, though the declaration/limit sentence partially duplicates schema-documented defaults.
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 spelled out, and the description still flags the hasMore field that matters for completeness. For a nested 7-parameter tool with a required symbol identity, the guidance is sufficient, with only minor overlap against 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%, so the schema already explains scope, symbol, includeContext, referencesLimit, includeDefinitions, and expectedSnapshot. The description only echoes the scope default and the declaration/limit behavior, adding little syntax or semantics beyond the structured fields.
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 usages of a resolved symbol') plus what the results contain (locations, containing symbols, access classification). It explicitly distinguishes itself from the closest sibling, find-callers, so an agent can route without opening either 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?
Gives explicit when-to-use ('locate usages or inspect writes') and names the alternative with its selecting condition ('use find-callers when you need incoming calls grouped by calling symbol'). It also states the default scope behavior when the scope argument is omitted.
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 SymbolsARead-onlyIdempotent
Uses only compiler diagnostics CS0168, CS0169 and CS0219 to identify candidate unused symbols. Use this to review potentially removable locals and private members; inspect find-references before removing code, or get-diagnostics for the underlying warnings. includeInternal widens the accessibility filter; generated-looking documents are excluded by default. Searches the selected scope, or the loaded solution when scope is omitted. Returns up to 50 candidates by default; check candidates.hasMore before treating the candidate list as complete.
| 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?
The annotations already say the tool is readOnly, idempotent, non-destructive, and closed-world. The description adds meaningful behavior beyond them: candidates are based only on three diagnostics, generated-looking documents are excluded by default, includeInternal widens the accessibility filter, scope defaults to the loaded solution, and the result is capped at 50 by default. The warning to check candidates.hasMore is a critical completeness caveat.
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 front-loaded with the core method and scope, then moves efficiently into usage warnings and parameter defaults. It is dense but not wasteful; every sentence carries operational value, though it could be split for easier scanning.
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 that an output schema exists and annotations cover safety traits, the description supplies everything an agent needs for correct invocation: diagnostic basis, scope default, generated/internal filtering, result limit, and the hasMore caveat. 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 description coverage is 100%, so the schema itself handles the basics. The description still adds useful semantics that the schema does not state clearly: includeInternal widens the accessibility filter, generated documents are excluded by default, scope falls back to the loaded solution when omitted, and candidatesLimit defaults to 50 with a hasMore indicator. These are real clarifications beyond the schema's terse parameter descriptions.
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 ('identify candidate unused symbols') and grounds it in exact compiler diagnostics (CS0168, CS0169, CS0219). It clearly distinguishes itself from siblings by naming find-references and get-diagnostics as related but separate operations.
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 explicitly says when to use this tool ('review potentially removable locals and private members') and directs the agent to alternatives before acting: inspect find-references before removing code, or get-diagnostics for the underlying warnings. This is explicit when/when-not and alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format-documentFormat DocumentADestructive
Stages Roslyn formatting for one document in the active transaction, using its workspace formatting options. Use this for formatting; use rename-symbol or code actions for semantic transformations. Requires document and the current expectedSnapshot. Omit range to format the whole document, or provide a zero-based start and length within the document to select the region passed to the formatter. Already formatted text produces no change. Successful staging returns mutation details and a new snapshot for subsequent requests. Inspect transaction-preview, or transaction-review in approval-required mode, before transaction-commit; transaction-rollback discards the staged work. This tool does not write source files directly or create a Git commit.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | The optional range to format. | |
| document | Yes | Target document. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | Yes | 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?
Goes well beyond the annotations: it discloses that work is staged rather than written ("does not write source files directly or create a Git commit"), which reconciles the destructiveHint=true / readOnlyHint=false profile with a agent's expectations. It also states the no-op case ("Already formatted text produces no change") and that a successful call returns mutation details plus a new snapshot.
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-loaded with the purpose, and every sentence carries information (scope, alternatives, preconditions, range semantics, return contract, workflow, negative scope). Slightly long, and the return-value sentence partly duplicates the output schema, which keeps it out of the top band.
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 mutating, transaction-scoped, nested-object tool with an output schema, the description covers preconditions, idempotent no-op behavior, transactional lifecycle, and what it explicitly does not do. Nothing an agent needs in order to call it safely 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 baseline would be 3; the description adds real meaning by explaining that omitting range formats the entire document and that a supplied range is a zero-based start/length selecting the region passed to the formatter. It also names document and expectedSnapshot as required, though it does not add much on the snapshot echo semantics beyond the schema text.
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 and resource ("Stages Roslyn formatting for one document") plus the scoping constraint ("in the active transaction") and the option source (workspace formatting options). It explicitly separates itself from rename-symbol and code actions, so an agent can route without opening a 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?
Explicitly says when to use this tool ("Use this for formatting") and what to use instead for other needs ("rename-symbol or code actions for semantic transformations"). It also states the required preconditions (document, expectedSnapshot, active transaction) and the surrounding workflow: preview or review before commit, rollback discards.
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 SurfaceARead-onlyIdempotent
Lists API declarations from source in the selected scope, with symbol references, accessibility and obsolete status. Use this to inventory accessible types and members; use search-symbols to locate declarations by name, or get-symbol-info to inspect one symbol. Omitted scope searches the loaded solution. Defaults to Public accessibility, includes obsolete symbols and returns up to 100 symbols. Check symbols.hasMore before treating the inventory as complete.
| 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 cover readOnly, idempotent and non-destructive, and the description goes further by disclosing the operating defaults: omitted scope means the loaded solution, Public minimum accessibility, obsolete symbols included, and a 100-symbol cap with a hasMore flag. It stops short of saying how the surface is shaped (flat list vs hierarchy by type/member) or whether inherited/private members are excluded, which matters for an inventory 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?
Three sentences, front-loaded with purpose then routing then defaults, with no filler. The final sentence is dense, stacking four separate defaults plus the hasMore caveat, which would read better split.
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 shape needn't be restated, and the description still flags the one return property the agent must act on (symbols.hasMore). For a zero-required-parameter, read-only inventory tool with rich annotations, nothing an agent needs in order to call 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 coverage is 100%, so the baseline is 3, and the description adds genuine semantics beyond the schema: the meaning of an omitted scope ('searches the loaded solution'), the default accessibility threshold, and the fact that obsolete symbols are included by default (the schema gives includeObsolete no default). It does not explain scope.kind selection trade-offs beyond that, so not a full 5.
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 API declarations from source in the selected scope') and enumerates what each entry carries: symbol references, accessibility and obsolete status. It then explicitly differentiates itself from search-symbols (name lookup) and get-symbol-info (single-symbol inspection), so an agent can pick it without opening either 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?
Gives an explicit use case ('inventory accessible types and members') and names the two alternatives it is not, with the condition that selects each. The closing instruction ('Check symbols.hasMore before treating the inventory as complete') tells the agent how to use the result correctly, not just when to call it.
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 ImpactARead-onlyIdempotent
Summarises source references, method callers, overrides, implementing types for interfaces and a public-surface indicator for a resolved symbol. Use this as static relationship evidence when planning a symbol change; use get-symbol-dependents for the referencing symbols themselves, or get-dependency-graph for a scoped graph. Counts reflect the selected scope, or the loaded solution when scope is omitted. Supporting source-reference locations are limited to 100 by default, independently of the counts; check locations.hasMore before treating the returned locations as complete.
| 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 readOnly, idempotent and non-destructive, so the bar is lower, yet the description adds real behavioral detail beyond them: counts follow the selected scope or the loaded solution, and source locations are truncated at 100 independently of counts. The instruction to check locations.hasMore before treating results as complete is exactly the kind of caveat an agent cannot get from annotations or 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?
Four sentences, each earning its place: purpose, routing, scope fallback, truncation caveat. The opening sentence is a dense enumeration but the ordering is front-loaded and purposeful. Minor density cost in the first sentence 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 present, the description needn't explain return values, and it still covers scope fallback and truncation semantics that affect interpretation of the result. Annotations cover the safety profile, so nothing an agent needs to call this 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 coverage is 100%, so baseline is 3; the description adds the semantic that counts and locations are governed independently and that omitting scope falls back to the loaded solution, which frames how the scope and locationsLimit parameters interact. Some of this overlaps the existing schema descriptions, so it is not fully additive.
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 first sentence names a specific verb (summarises) and enumerates the exact resources returned: source references, callers, overrides, implementing types, and a public-surface indicator, all scoped to a resolved symbol. It is clearly distinguishable from the graph and dependents siblings by name.
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?
Explicitly states when to use it ('static relationship evidence when planning a symbol change') and routes to two named alternatives, get-symbol-dependents and get-dependency-graph, with the condition that distinguishes each. No inference is left to the agent.
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 ContextARead-onlyIdempotent
Reads source around a location, returning the resolved location, text, enclosingSymbols and diagnostics. Use this to inspect a search result or diagnostic in context; use get-symbol-info for symbol details or get-diagnostics for broader diagnostic analysis. Includes all lines touched by the selection plus 10 lines before and after by default; beforeLines and afterLines each accept 0 to 100 and are clipped at document boundaries. Enclosing symbols and compiler diagnostics are opt-in via includeEnclosingSymbols and includeDiagnostics, both false by default. Diagnostics cover the selected span, not the expanded text window or project analysers. Limits default to 16 enclosing symbols and 50 diagnostics; check each collection.hasMore. Reads the loaded workspace without modifying source.
| 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 establish read-only, idempotent, non-destructive behavior, and the description adds substantial operational detail beyond them. It explains the default 10-line window, 0-100 before/after line limits clipped at document boundaries, opt-in enclosing symbols and diagnostics, diagnostics scope limited to the selected span, per-collection limits with hasMore, and that source is not modified.
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 front-loaded with purpose and use guidance, then efficiently covers defaults, limits, opt-in behavior, and diagnostics scope. Every sentence adds operational value, and the slightly longer length is justified by the tool's nine parameters and many sibling alternatives.
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's complexity, rich input schema, output schema, and annotations, the description is complete enough for an agent to invoke it correctly. It covers purpose, alternatives, key defaults, limits, scope boundaries, and read-only behavior without needing to repeat return-schema details.
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 parameters well; the description still adds meaningful semantics about clipping at document boundaries, opt-in defaults for includeEnclosingSymbols and includeDiagnostics, diagnostics covering only the selected span, and checking collection.hasMore. It does not add much about workspace, expectedSnapshot, or the location selector, but those are covered by 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?
The description states a specific verb and resource: it reads source around a location and returns resolved location, text, enclosingSymbols, and diagnostics. It also explicitly distinguishes itself from get-symbol-info and get-diagnostics, so an agent can tell which tool to select.
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 states exactly when to use this tool: to inspect a search result or diagnostic in context. It also names alternatives and their purposes, get-symbol-info for symbol details and get-diagnostics for broader diagnostic analysis.
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 GraphARead-onlyIdempotent
Builds a Roslyn control-flow graph for a source symbol or the executable body enclosing a source location, with basic blocks, reachability, successor ordinals, operations and flow regions. Use this to inspect branching across an executable body; use analyze-control-flow for reachability and exits of an exact statement region, or get-operation-tree for nested semantic operations. Defaults to 64 blocks, 32 regions and 32 operations per block, bounded independently. Check blocks.hasMore, regions.hasMore and each block operations.hasMore; successor ordinals may refer to blocks omitted by the block limit. 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 readOnly/idempotent/non-destructive, and the description goes beyond them by disclosing truncation behavior: independent defaults of 64 blocks, 32 regions, 32 operations per block, the hasMore flags to check, and the subtle caveat that successor ordinals may point at blocks omitted by the block limit. That caveat is genuinely non-obvious and prevents misreading results. It stops short of describing ordering or how the graph is rooted, so it is not a full 5.
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?
Four sentences, each doing distinct work: purpose, sibling routing, truncation semantics, input constraint. The core purpose and the alternative routing are front-loaded, and the caveats follow in the order an agent would need them.
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 7-parameter tool with nested objects and an output schema, the description covers what the schema cannot: which sibling to prefer, how the three limits interact, and how to detect truncation. Return-value shape is delegated to the output schema, which is appropriate.
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, but the description adds real semantics: the three limits are bounded independently, and the per-block operation cap interacts with the top-level block cap. The symbol-vs-location exclusivity is reinforced in prose. It does not explain what a symbol or location must resolve to (e.g. whether a non-executable symbol errors), so it is short of 5.
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 ('Builds a Roslyn control-flow graph') plus the exact input alternatives (a symbol, or the executable body enclosing a location) and the payload contents (basic blocks, reachability, successor ordinals, operations, flow regions). This is clearly distinguishable from analyze-control-flow and get-operation-tree, which are named separately.
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 when-to-use ('inspect branching across an executable body') and routes the agent away with named alternatives and the conditions that select them: analyze-control-flow for reachability/exits of an exact statement region, get-operation-tree for nested semantic operations. The 'exactly one of symbol or location' constraint closes the remaining selection ambiguity.
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 GraphARead-onlyIdempotent
Builds a dependency graph at Project, Namespace, Type or Symbol granularity, with edges directed from dependents to dependencies. Use this to inspect relationships across a scope; use get-symbol-dependencies or get-symbol-dependents for one symbol, or get-change-impact for a symbol-centred count summary. Project granularity uses selected projects; other granularities use selected source documents. Omitted scope covers the loaded solution. Defaults to Type granularity, 200 nodes and 400 edges. Check both nodes.hasMore and edges.hasMore; omitted nodes also exclude their connected edges.
| 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?
Beyond the readOnly, idempotent, and non-destructive annotations, the description discloses defaults, pagination requirements, and a subtle truncation rule: omitted nodes also exclude their connected edges. That is exactly the kind of behavioral context an agent needs before calling the 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?
The description is dense but well structured, with the core purpose and sibling routing front-loaded. The later sentences cover scope, defaults, and pagination without wasteful repetition.
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?
Even though an output schema exists, the description supplies the crucial operational details an agent needs: default limits, how to detect truncation via nodes.hasMore and edges.hasMore, and the connected-edge exclusion behavior. Nothing important is missing for correct invocation.
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 already 100%, so the schema carries most parameter documentation. The description still adds useful cross-parameter meaning: Project granularity uses selected projects, other granularities use selected source documents, omitted scope covers the loaded solution, and defaults are restated.
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 builds a dependency graph at Project, Namespace, Type, or Symbol granularity. It also specifies edge direction, which is meaningful domain detail, and explicitly distinguishes itself from get-symbol-dependencies, get-symbol-dependents, and get-change-impact.
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 explicitly says when to use this tool: inspecting relationships across a scope. It also names the alternatives for single-symbol inspection and symbol-centred count summaries, and clarifies how scope granularity determines whether selected projects or source documents are used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-diagnosticsGet DiagnosticsARead-onlyIdempotent
Returns compiler diagnostics and diagnostics from analysers referenced by the selected projects. Use this for general diagnostic inspection; use analyze-async for the additional bundled AsyncFixer rule set, or get-document-options to inspect document configuration. Omitted scope searches the loaded solution. Document scope keeps diagnostics whose primary source location belongs to that document; broader scopes can include findings without source locations. Requested diagnostic IDs and severities filter results before the default 200-diagnostic limit. Check diagnostics.hasMore before treating the report as complete.
| 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, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context: scope semantics (document scope keeps diagnostics whose primary source location belongs to that document; broader scopes can include findings without source locations), filter-before-limit ordering, the 200 default cap, and the hasMore truncation warning. That is above the annotation baseline but stops short of return-format or cost/latency detail, so a 3 is fair.
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-loaded with the core purpose, then alternatives, then scope semantics, then filtering/limit caveats. Every sentence carries information an agent would otherwise have to infer; nothing is repeated from the schema or annotations.
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 described, yet the description still flags the one thing that matters operationally: check diagnostics.hasMore before treating the report as complete. With five optional parameters, 100% schema coverage, and a matching safety annotation set, nothing an agent needs in order to call 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 coverage is 100%, so the baseline is 3. The description does add value beyond the schema by explaining that omitted scope means the loaded solution, how document scope narrows results, and that IDs/severities filter before the limit is applied — but it does not document the individual scope kinds or workspace selection beyond what the schema already states.
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 compiler diagnostics and diagnostics from analysers referenced by the selected projects') and explicitly contrasts itself with two sibling tools, analyze-async and get-document-options. An agent can distinguish this from the many other analysis tools in the list without opening any 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?
Gives explicit routing rules: general diagnostic inspection goes here, AsyncFixer's bundled rule set goes to analyze-async, document configuration goes to get-document-options. It also names the alternative and the condition that selects it, plus the default scope when the parameter is omitted.
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 OptionsARead-onlyIdempotent
Inspects configuration for one selected document, returning language version and project-level nullable context. Use this to understand configuration behind diagnostic results; use get-diagnostics for findings or get-project-details for broader project configuration. Source nullable directives can override the reported project-level context. Detailed parse options and analyser configuration are omitted by default: request includeParseOptions for documentation mode and preprocessor symbols, or includeAnalyzerConfig for project configuration-file paths and syntax-tree analyser options.
| 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 read-only, idempotent, non-destructive profile, and the description adds meaningful behavior beyond them: source nullable directives can override the reported project-level context, and detailed parse/analyser data is omitted unless includeParseOptions or includeAnalyzerConfig is set. This tells the agent what the default view hides and why to request the optional enrichments.
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 front-loaded with purpose, then alternatives, then behavioral caveats and optional flags. Every sentence carries useful routing or interpretation information, with no filler.
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, output schema, and annotations, the description provides everything an agent needs: what is returned by default, what is omitted, how to request more detail, and which sibling tools cover related but distinct tasks.
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 defines the parameters, but the description adds real semantic value by explaining what includeParseOptions and includeAnalyzerConfig expose: documentation mode and preprocessor symbols, versus project configuration-file paths and syntax-tree analyser options. It also notes the nullable-directive override behavior, which helps interpret the returned configuration.
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 precise verb and resource: it inspects configuration for a selected document and returns language version and project-level nullable context. It also distinguishes itself from adjacent tools by naming get-diagnostics and get-project-details as alternatives for different needs.
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 explicit routing guidance: use this tool to understand the configuration behind diagnostic results, use get-diagnostics for findings, and use get-project-details for broader project configuration. The alternatives and selection conditions are clear.
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 OutlineARead-onlyIdempotent
Returns a semantic declaration tree for one document, with names, kinds, locations and nested children. Use this to navigate the structure of a known file; use search-symbols to discover declarations across documents, or get-symbol-info for detailed symbol metadata. Members are included by default. Defaults to 200 projected nodes below the document root and 16 hierarchy levels. Check truncated for content omitted by the node or depth limit; root may be null when syntax or semantic information is unavailable.
| 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, idempotentHint and destructiveHint=false, so safety is covered. The description adds non-obvious behavior beyond that: default node (200) and depth (16) caps, the truncated flag signaling omitted content, and root being null when syntax/semantic info is unavailable. It does not explain ordering or identity of nodes, keeping it short of a 5.
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-loaded with the core statement, then alternatives, then defaults and edge cases; nearly every clause carries information. It is dense but not padded, though the final sentence stacks three separate facts that could be split more cleanly.
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 description covers the remaining unknowns for a read-only outline tool: defaults, truncation, and the null-root failure mode. Nothing an agent needs to call 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 coverage is 100%, so the baseline would be 3. The description nonetheless adds meaning to nodesLimit and maxDepth by tying them to the truncation flag and framing them as defaults rather than fixed limits, which is context the schema's raw max/min does not convey.
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 a semantic declaration tree for one document') plus the shape of the result (names, kinds, locations, nested children). It explicitly names the sibling tools it is not (search-symbols, get-symbol-info), so an agent can distinguish it without opening schemas.
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 selection rule: use this for navigating the structure of a known file, use search-symbols to discover declarations across documents, and get-symbol-info for detailed symbol metadata. Both alternatives and the condition that selects them are named.
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 or resource-read 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 cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds genuinely new context: results are temporary, may contain paths and user-authored identifiers, and must not leave the machine. It stops short of saying how long 'temporary' lasts or what happens when a correlationId has expired.
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 what is returned, followed by the sensitivity and restriction clauses. No filler and every clause carries information.
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 description covers audience and data-sensitivity concerns. The remaining gap is edge behavior (unknown or expired correlationId) which an agent would want before calling.
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 correlationId parameter is fully documented in the schema as coming from the failed invocation. The description adds no syntax, format, or failure semantics beyond that, 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 (returns) and resource (temporary local diagnostic details) scoped to an unexpected tool or resource-read failure, which distinguishes it from general diagnostic tools like get-diagnostics. It does not name its closest siblings prepare-error-report and submit-error-report, so the reader must infer the split between fetching, preparing, and submitting an error report.
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 a clear trigger (after an unexpected tool or resource-read failure) and a hard restriction (never submit externally, trusted local agent only), but it never explicitly points to prepare-error-report or submit-error-report as the follow-up path. Usage is implied rather than instructed.
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 TreeARead-onlyIdempotent
Projects a semantic IOperation tree with operation kinds, types, constant-value presence and source locations. Use this to inspect the semantic structure at a source location; use analyze-data-flow for variable-flow sets or get-control-flow-graph for branches and successors. If the selected syntax node has no operation, the first immediate child with an operation is used. Echo the current expectedSnapshot. Defaults to 200 total nodes and maxDepth 8, counting the root at depth zero. Check the result and node truncated flags; nodesLimit zero returns a null root.
| 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 readOnly/idempotent/non-destructive, so the description's added value is real behavioral detail beyond that: fallback to the first immediate child when the selected node has no operation, default 200 nodes and maxDepth 8 with root at depth zero, truncation flags to check in the result, null-root behavior when nodesLimit is zero, and the requirement to echo the current expectedSnapshot. These are non-obvious edge cases an agent would otherwise get wrong.
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 capability statement, then alternatives, then edge-case behaviors, with no filler sentences. It is dense — five distinct behavioral claims packed into a short block — but nearly every clause carries actionable information, so it earns its length.
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 the description needn't explain return values and correctly does not. It instead covers what the schema cannot: node selection fallback, depth/limit counting conventions, truncation flags to check, and the snapshot-echo contract. For a nested 5-parameter tool with an output schema, this is 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 baseline is 3. The description earns above baseline by interpreting parameters: it explains that maxDepth counts the root at depth zero, that defaults are 200 total nodes and maxDepth 8, and that nodesLimit of zero returns a null root — semantics not present in the schema's terse field descriptions. It does not add anything for the location/selection or workspace parameters, which the schema covers.
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 ('Projects a semantic IOperation tree') and immediately enumerates what the projection contains (operation kinds, types, constant-value presence, source locations). This makes it clearly distinguishable from siblings like get-control-flow-graph, which are named 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?
Gives an explicit use case ('inspect the semantic structure at a source location') and then routes to alternatives by name and purpose: analyze-data-flow for variable flow sets, get-control-flow-graph for branches and successors. When-to-use and when-to-use-something-else are both stated.
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 DeclarationsARead-onlyIdempotent
Returns source declaration locations for a resolved symbol, ordered by document path and source position. Use this to navigate split partial type declarations; use get-symbol-info for symbol metadata or find-references for usages. Only declarations belonging to the resolved symbol are returned: partial method definition and implementation parts are not combined automatically. Metadata-only or implicitly declared symbols may return no declarations. Defaults to 32 locations; check declarations.hasMore before treating the results as complete.
| 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 readOnly/idempotent/non-destructive, and the description still adds substantial behavioral context: partial definition and implementation parts are not combined automatically, metadata-only or implicitly declared symbols may return zero results, and results are capped with a hasMore flag the caller must check. These are exactly the non-obvious traits an agent 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 first, then sibling routing, then edge cases, then pagination caveat — a clean front-loaded progression. Every sentence contributes a distinct fact; nothing restates the title or annotations.
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 with a rich input schema, an output schema, and full annotations, this description covers the remaining gaps: zero-result cases, why partial parts are not merged, and result truncation. An agent can invoke it correctly and interpret empty or truncated responses.
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 carries the parameter documentation burden and a baseline 3 applies. The description goes slightly beyond by tying the default 32-location cap to the hasMore field, telling the agent how to detect truncation, though it adds no detail on the symbol selector or expectedSnapshot parameters.
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 source declaration locations for a resolved symbol") plus the ordering guarantee (document path, source position). This is clearly distinguishable from siblings like get-symbol-info and find-references, which the description names 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?
Names the primary use case ("navigate split partial type declarations") and routes the agent to two named alternatives with their respective conditions (get-symbol-info for metadata, find-references for usages). No inference required to pick the right tool.
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 DetailsARead-onlyIdempotent
Inspects one selected project, returning target frameworks, compilation and parse options, project references, metadata references and analyzers. Use get-solution-structure to discover projects, then use this to inspect project configuration and dependencies. Document references are opt-in through includeDocuments and do not include file contents; use get-document-outline to inspect declarations in one document. Collections are bounded independently, including a default 200-document limit when requested. Check each returned collection for hasMore before treating it as complete.
| 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 the description adds behavior those annotations cannot: documents are opt-in and exclude file contents, each collection is bounded independently, and callers must check hasMore per collection before treating results as complete. That truncation/pagination disclosure is exactly the non-obvious trait a consumer needs and is nowhere in 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?
Front-loaded with purpose and routing guidance, then behavior, then the hasMore caveat — a sensible ordering with little waste. The sentence about collection bounds partially duplicates the per-parameter default values already in the schema, and 'bounded independently' is slightly opaque, keeping 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?
For a read-only inspection tool with an output schema, everything an agent needs is present: how to locate the project, what comes back, that documents are opt-in without contents, and that per-collection hasMore must be checked. No expected-to-know detail is left to inference.
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 baseline is 3; the description goes beyond it by explaining the semantic consequence of includeDocuments ('do not include file contents') rather than restating the schema's 'Whether documents should be included.' It still doesn't explain how project identity fields (projectId vs name vs path) are disambiguated or what happens on a limit of 0, so it stays below a 5.
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 ('Inspects one selected project') and immediately enumerates the returned facets: target frameworks, compilation/parse options, project and metadata references, analyzers. It explicitly names the sibling tools it is not (get-solution-structure, get-document-outline), so an agent can distinguish it without opening any 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?
Gives an explicit workflow: 'Use get-solution-structure to discover projects, then use this to inspect project configuration and dependencies.' It also names the alternative for document-level inspection ('use get-document-outline'), and states that document references are opt-in via includeDocuments — covering when-not to use the documents path.
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 StructureARead-onlyIdempotent
Maps the loaded solution into solution folders and projects with workspace-relative paths, target frameworks and direct project references. Use this first to discover project and document selectors; use get-dependency-graph for a dependency graph or get-code-context to read a selected source region. Documents are omitted unless includeDocuments=true. Independent limits default to 200 folders, 100 projects, 50 references per project and 200 documents per project. Returns solutionPath and bounded folders and projects collections; check their hasMore flags and those on each projectReferences or documents collection for truncation. This read-only query can report ProjectStructureUnavailable if hierarchy or target-framework information cannot be obtained.
| 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 cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description adds real behavioral value: documents omitted by default, independent default caps, hasMore truncation flags per collection, and the ProjectStructureUnavailable failure mode. Slightly short of 5 only because it doesn't characterize cost/latency or ordering of results.
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-loaded with the primary mapping statement, then usage routing, then limits and return/error behavior. Dense but every sentence carries information; mild density cost from packing limits and truncation semantics into one paragraph.
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, zero-required read tool with an output schema, the description covers purpose, alternatives, default-inclusion behavior, truncation signaling, and the named error case. Nothing an agent needs in order 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 coverage is 100%, so the baseline is 3; the description goes beyond by restating the four independent default limits and flagging that documents are excluded unless includeDocuments=true. It does not explain the workspace parameter's identifier resolution or the guidance for choosing smaller limits, so it adds meaningful but not complete semantic value.
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: maps the loaded solution into folders/projects with workspace-relative paths, target frameworks and direct project references. It explicitly differentiates itself from sibling tools (get-dependency-graph, get-code-context), so an agent can select it 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?
Gives explicit positioning ('Use this first to discover project and document selectors') and names two alternatives with their selecting conditions. Also states the includeDocuments prerequisite for returning documents, which is a concrete when/when-not rule.
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 AttributesARead-onlyIdempotent
Inspects attributes attached to a resolved symbol, returning their types, inherited flags and rendered constructor and named arguments. Use this for attribute metadata; use get-symbol-info for general symbol details. Defaults to directly declared attributes. includeInherited follows base types or overridden methods, properties and events, honours Inherited and AllowMultiple settings, and does not traverse interface declarations. Returns symbol and a bounded attributes collection; attributesLimit defaults to 50. Check attributes.hasMore for truncation. Reads Roslyn metadata without instantiating attributes or executing their constructors.
| 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 readOnly/idempotent/non-destructive, but the description adds genuinely new behavioral facts: attributes are not instantiated and their constructors are not executed, results are bounded with attributes.hasMore signalling truncation, and interface declarations are never traversed. The Inherited/AllowMultiple handling is a subtle correctness detail an agent could not infer from 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?
Purpose and the sibling distinction are front-loaded, and the following sentences each carry distinct information (inheritance semantics, limit/truncation, no-instantiation guarantee). The result is dense but slightly overpacked, with several clauses chained into single sentences.
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 shape needs no prose, yet the description still covers truncation signalling via attributes.hasMore and the inheritance edge cases. For a read-only, five-parameter, nested-schema tool, nothing an agent needs to call 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 coverage is 100%, so the baseline is 3, but the description goes beyond the schema's one-liner for includeInherited by defining its traversal rules (base types, overridden methods, properties and events; honours Inherited and AllowMultiple; excludes interfaces) and by restating the attributesLimit default of 50 with the hasMore truncation signal. The symbol selector, workspace and expectedSnapshot parameters get no added explanation, keeping this from a 5.
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?
Opens with a specific verb and resource ('Inspects attributes attached to a resolved symbol') and enumerates what is returned (types, inherited flags, rendered constructor and named arguments). It explicitly separates itself from get-symbol-info, so an agent can distinguish the two without opening a 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?
Names the sibling alternative ('use get-symbol-info for general symbol details') and states the default scope ('Defaults to directly declared attributes'), which tells the agent what happens if it omits includeInherited. It stops short of stating prerequisites such as needing a resolved symbol from resolve-symbol first, which is implied 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.
get-symbol-dependenciesGet Symbol DependenciesARead-onlyIdempotent
Lists distinct direct dependencies found in a resolved symbol signature and supported executable operations, including referenced types and members. Use this for outgoing relationships; use get-symbol-dependents to find source symbols that reference the selected symbol, or get-dependency-graph for relationships across a scope. Dependencies may include metadata symbols. Containing assembly names are included by default. Returns up to 100 dependencies by default; check dependencies.hasMore before treating the inventory as complete.
| 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 readOnly/idempotent/non-destructive/closed-world, so safety is covered; the description adds real behavioral context beyond that: default page cap of 100, the 'check dependencies.hasMore before treating the inventory as complete' completeness caveat, and assemblies being included by default. It does not discuss cost, latency, or what happens for unresolved symbols, keeping it short of a 5.
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-loaded with the definition, then routing, then behavioral caveats — a sensible information order with no filler. It runs five sentences and mixes return-shape and caveat concerns; slightly tighter phrasing would read better, but every sentence carries information.
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; given that, the description covers what an agent still needs: scope (direct, outgoing), alternatives, metadata inclusion, assembly inclusion, and pagination completeness. Nothing required to invoke or interpret the call 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 baseline is 3; the description still adds meaning the schema lacks, notably that includeAssemblies defaults to on and that results are capped at 100 unless a limit is set. It does not help with the heavier selector semantics (span vs selection, expectedSnapshot), but those are fully documented in 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 distinct direct dependencies') and scopes it to a resolved symbol signature and supported executable operations. It names the exact siblings it must be distinguished from (get-symbol-dependents, get-dependency-graph) and clarifies that metadata symbols may appear, so an agent knows precisely what inventory it gets.
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?
Explicitly says 'Use this for outgoing relationships' and then routes the agent to the correct alternative for the reverse direction (get-symbol-dependents) and for cross-scope traversal (get-dependency-graph). Both the when and the when-not are present with the selecting condition stated.
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 DependentsARead-onlyIdempotent
Finds distinct enclosing symbols at source references to a resolved symbol. Use this to identify incoming dependencies; use get-symbol-dependencies for outgoing dependencies, find-references for individual source occurrences, or get-change-impact for relationship counts. Searches the selected documents or projects, or the loaded solution when scope is omitted. Returns up to 100 dependent symbol references by default; check dependents.hasMore before treating the results as complete.
| 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 establish read-only, idempotent, non-destructive, closed-world behavior, so the description need not restate safety. It adds real operational context beyond them: a default cap of 100 dependents and the instruction to check dependents.hasMore before treating results as complete — a truncation behavior an agent would otherwise miss. It stops short of explaining what 'distinct enclosing symbol' collapses (e.g., multiple references in one method) or how snapshot staleness is surfaced.
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?
Four sentences, each doing distinct work: definition, sibling routing, scope default, result-completeness warning. The most decision-relevant content (what it finds and which sibling to prefer) is front-loaded with zero filler.
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 shape need not be explained, and the description still flags the one output property that changes agent behavior (hasMore). For a read-only query with a nested but fully documented schema, nothing needed 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 scope, symbol, workspace, dependentsLimit and expectedSnapshot are already documented in structured fields — and the description's scope and limit sentences largely restate those. The one added nuance is framing the limit as a completeness hazard via hasMore, but no new meaning is given for the symbol selector or expectedSnapshot 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 — 'Finds distinct enclosing symbols at source references to a resolved symbol' — which is precise enough to distinguish it from find-references (raw occurrences) and get-symbol-dependencies (outgoing edges). The name-plus-description pair leaves no ambiguity about what is returned: dependent symbols, not 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?
Explicitly routes the agent: 'use get-symbol-dependencies for outgoing dependencies, find-references for individual source occurrences, or get-change-impact for relationship counts.' That is a named alternative for each plausible confusion, plus a stated default-scope rule ('the loaded solution when scope is omitted').
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 InfoARead-onlyIdempotent
Inspects one resolved symbol, returning accessibility, modifiers, associated type and source declaration locations, plus method parameters and return type when applicable. Use this after search-symbols or resolve-symbol to understand a chosen declaration; use find-references for its usages or get-symbol-members to enumerate type members. XML documentation is opt-in through includeDocumentation. Defaults to 32 declarations and 64 method parameters, bounded independently; check declarations.hasMore and parameters.hasMore when present. Metadata-only symbols may have no source declarations.
| 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 true and destructiveHint false, so the safety profile is covered by structured data. The description adds genuine behavioral context beyond that: XML docs are opt-in via includeDocumentation, results are bounded by independent declaration/parameter limits, truncation is signalled through declarations.hasMore and parameters.hasMore, and metadata-only symbols may return no source declarations. It does not address snapshot/expectedSnapshot concurrency semantics, but with annotations and an output schema present this is a solid contribution rather than an exceptional one.
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-loaded with the purpose, then alternatives, then pagination and an edge case, so ordering is sensible and every sentence carries information. It is somewhat dense, packing limits, hasMore flags and the documentation flag into single clauses, but nothing is filler.
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 no explanation, and annotations cover safety. The description still supplies the things structured fields cannot: upstream tool sequencing, sibling routing, independent bound defaults, truncation signals, and the metadata-only-symbol edge case. An agent has everything needed 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%, so the baseline is 3. The description still adds meaning beyond the schema: it explains that includeDocumentation is an opt-in switch for XML docs, that declarations and parameters are bounded independently (32/64), and how hasMore flags signal truncation. It says nothing about the symbol selector, workspace, or expectedSnapshot parameters, which the schema already handles via its own descriptions.
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 ('Inspects') plus a precisely scoped resource ('one resolved symbol'), followed by an enumeration of what is returned: accessibility, modifiers, associated type, declaration locations, parameters and return type. It also explicitly distinguishes itself from siblings by noting it operates on an already-resolved declaration, which the agent can tell apart from search-symbols or get-symbol-members without opening either 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?
States the sequencing ('Use this after search-symbols or resolve-symbol') and names two alternatives with the conditions that select them ('use find-references for its usages or get-symbol-members to enumerate type members'). Both when-to-use and when-not-to-use are covered explicitly.
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 members of a resolved named type to inspect its declaration surface. Use get-api-surface for an accessibility-filtered API inventory or get-symbol-info for details about one member. Defaults to explicitly declared members of the selected type, including non-public members. includeInherited adds base-type members except private, implicit and constructor/destructor members. includeExplicitInterface adds declarations from all implemented or inherited interfaces, not just explicit implementations on the selected type. Both options default to false. Returns symbol and a distinct, bounded members collection; membersLimit defaults to 100. Check members.hasMore for truncation. Reads the loaded workspace without modifying source.
| 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?
Goes well beyond the annotations by specifying exactly what includeInherited pulls in and what it excludes (private, implicit, constructor/destructor members), what includeExplicitInterface widens to, that both default to false, and that the members collection is bounded with a hasMore truncation signal. The closing "reads the loaded workspace without modifying source" is mildly redundant with readOnlyHint, but the rest is substantive non-obvious 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?
Front-loaded with purpose, then alternatives, then per-option semantics, then return/truncation behavior. Every sentence carries information an agent needs; there is no filler and no restatement of the tool name.
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 selector objects and an output schema, the description covers the decision-relevant surface: scope defaults, flag semantics, bounded results and truncation handling. Return-shape detail is correctly deferred to the output 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 coverage is 100%, so the baseline would be 3, but the description supplies semantics the schema flags lack: the schema only says "Whether inherited members should be included," while the description spells out the inherited-member exclusions and the all-interfaces-vs-explicit-implementations distinction. It also states membersLimit defaults to 100 and points at members.hasMore for truncation.
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?
Opens with a specific verb+resource pair ("Lists members of a resolved named type") and states the intent ("to inspect its declaration surface"), which is a distinct purpose from any sibling. An agent can differentiate it from get-api-surface, get-symbol-info, and find-implementations without opening a 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?
Explicitly names two alternatives and the condition that selects each: get-api-surface for an accessibility-filtered API inventory, get-symbol-info for details about one member. It also establishes the default scope (explicitly declared members, including non-public), so the agent knows what it gets if it passes no flags.
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 ImpactARead-onlyIdempotent
Suggests tests to inspect after changing a resolved symbol, using static direct references to the target or its owning type. This heuristic can include tests that use another member of that type and misses indirect helper-call dependencies; it is not a coverage report or a guarantee of the tests affected. Candidate methods are selected by type names ending in Test, Tests, Spec or Specs, or method names starting GIVEN_ or containing _THEN_Should; test attributes alone do not select candidates. testScope limits candidate documents or projects and defaults to the loaded solution. Returns symbol and a bounded tests collection with test symbols and locations; includeReasons defaults to false. testsLimit defaults to 100; check tests.hasMore for truncation. Does not execute tests.
| 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 declare read-only/idempotent/non-destructive, and the description goes well beyond: it discloses the heuristic's failure modes (may include tests using other members of the type, misses indirect helper-call dependencies), the exact candidate-selection rules (type name suffixes, GIVEN_ / _THEN_Should), that attributes alone don't select, scope defaulting, truncation signaling via tests.hasMore, and that tests are never executed. This is unusually rich behavioral 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?
The description is dense but front-loaded: purpose first, then caveats, then candidate rules, then parameter defaults and return behavior. Every sentence carries information, though the candidate-selection sentence is heavy and could be tightened.
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 heuristic analysis tool with a nested 6-parameter schema, an output schema, and rich annotations, this covers what an agent needs: what it returns, how truncation appears, and what it explicitly does not do. Only the workspace/expectedSnapshot concurrency parameters are left unexplained.
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 parameters; the baseline would be 3. The description adds real value on top: testScope defaults to the loaded solution, testsLimit defaults to 100 with zero returning nothing, includeReasons defaults to false and doesn't change matching, and hasMore must be checked for truncation. Minor gaps remain (workspace and expectedSnapshot aren't explained).
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?
Opening clause states a specific verb and resource: 'Suggests tests to inspect after changing a resolved symbol, using static direct references.' This is clearly distinct from reference-lookup siblings like find-references. It doesn't explicitly name an alternative sibling such as get-change-impact, which keeps 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?
The description clearly frames the use case (after changing a symbol, to pick tests to inspect) and gives strong exclusion guidance: 'not a coverage report or a guarantee of the tests affected' and 'Does not execute tests.' It stops short of naming which sibling to use for actual coverage or execution, so no explicit alternative routing.
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
Inspects the inheritance neighbourhood of a resolved named type, returning type, baseTypes, interfaces and derivedTypes. Use this for a combined hierarchy view; use find-derived-types when you need a scoped descendant search. Derived types are included by default and searched across the loaded solution; includeDerived=false omits that collection. maxDepth defaults to 3 for base and derived types, with direct relationships at depth 1; it does not limit the transitive interface list. Independent result limits default to 16 base types, 64 interfaces and 100 derived types. Check each collection.hasMore for result truncation; base and derived counts describe only the requested depth. Read-only; no code is executed.
| 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 cover readOnly/idempotent/destructive, and the description reinforces with 'no code is executed'. Beyond that it discloses scope behavior (search across the loaded solution), default inclusion of derived types, truncation via collection.hasMore, and that base/derived counts reflect only the requested depth — genuine context not in 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?
Front-loaded with purpose and the sibling routing before diving into depth and limit semantics. Dense but organized; only the restated limit defaults are marginally redundant with 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 needn't be explained, yet the description still flags the critical truncation signal (collection.hasMore) and the depth-scoped counting caveat. For an 8-parameter tool with nested symbol selectors, nothing essential is left ambiguous.
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 baseline is 3; the description earns more by clarifying that maxDepth 'does not limit the transitive interface list' and that includeDerived defaults to inclusion, which is not obvious from the schema's untyped boolean. It also restates the 16/64/100 defaults already present in 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 ('Inspects the inheritance neighbourhood of a resolved named type') and enumerates exactly what is returned (type, baseTypes, interfaces, derivedTypes). It immediately distinguishes itself from find-derived-types, which appears in the sibling list.
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?
Explicitly routes the agent: 'Use this for a combined hierarchy view; use find-derived-types when you need a scoped descendant search.' Both the affirmative case and the alternative with its selecting condition are named.
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
Locates declaration sites for a resolved symbol, preferring its source definition in the loaded solution. Use this to navigate to a declaration; use find-references for usages or find-implementations for concrete implementations. Returns symbol and a bounded definitions collection, which can contain multiple source locations for partial declarations. If no source location exists, returns a metadata definition record rather than decompiled source. definitionsLimit defaults to 32; check definitions.hasMore for truncation. Reads the workspace without modifying files.
| 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 cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them by disclosing non-obvious behavior: multiple source locations for partial declarations, and the fallback to a metadata definition record instead of decompiled source when no source exists. It also flags truncation via definitions.hasMore.
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-loaded with purpose, then alternatives, then return behavior, then limits — a sensible ordering with no wasted sentences. The closing 'Reads the workspace without modifying files' is largely redundant with readOnlyHint/destructiveHint annotations, the one minor inefficiency.
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 four-parameter tool with nested symbol selectors and an output schema, the description supplies the selection guidance, the fallback semantics, and the truncation signal. Nothing an agent needs to call it correctly is missing, and return-value detail is properly delegated to the output 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%, so the schema already documents all four parameters including definitionsLimit's default and bounds. The description only restates the default of 32 and the hasMore check, adding little semantic value beyond what structured fields provide; 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 ('Locates declaration sites for a resolved symbol') plus the resolution policy ('preferring its source definition in the loaded solution'). It also explicitly names the sibling tools it is not, so an agent can distinguish it from find-references and find-implementations without opening a 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?
'Use this to navigate to a declaration; use find-references for usages or find-implementations for concrete implementations' gives an explicit when-to-use with named alternatives. The qualifier 'resolved symbol' implicitly signals that resolve-symbol should run first.
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 ActionsARead-only
Discovers applicable Roslyn Code Fixes and refactorings for a document, selection or caret. Use this to choose an actionId for stage-code-action in mutation-enabled modes, or a Code Fix with advertised fixAllScopes for prepare-fix-all. Echo the current expectedSnapshot. Omitted range selects the whole document; a zero-length range selects a caret, using zero-based UTF-16 positions. Returns up to 50 action leaves by default; check actions.hasMore. Action IDs are temporary, process-local and tied to the exact workspace snapshot: rediscover after changes or expiry. Listing stores references but does not stage changes or write source files.
| 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?
With readOnlyHint and destructiveHint already declared, the description still adds substantial behavioral context: default limit of 50 action leaves, a hasMore flag, temporary process-local action IDs tied to the exact workspace snapshot, and the fact that listing stores references but does not stage changes or write files. This is exactly the kind of extra context annotations cannot 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?
The description is dense but front-loaded: purpose first, then usage routing, then range semantics, then pagination and action-ID lifetime, then a clarifying non-mutation statement. Every sentence carries operational information, and there is no filler.
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 Roslyn discovery tool with nested snapshot, document, and workspace parameters, the description covers what an agent needs: how to select the target range, how to route the result to the next tool, how pagination works, and why IDs expire. An output schema exists, so it appropriately does not enumerate return fields, though it does mention actions.hasMore.
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, but the description adds real meaning beyond the schema: an omitted range means the whole document, a zero-length range means a caret, and positions are zero-based UTF-16. It also reinforces the expectedSnapshot echo and the limit/hasMore interaction. It does not elaborate on kinds, diagnosticIds, includeProvenance, or workspace disambiguation, which keeps it from a 5.
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: 'Discovers applicable Roslyn Code Fixes and refactorings for a document, selection or caret.' It also distinguishes the tool from siblings by naming its downstream consumers, stage-code-action and prepare-fix-all, so an agent can identify its role in the workflow.
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?
Explicitly says when to use it: to choose an actionId for stage-code-action in mutation-enabled modes, or a Code Fix with advertised fixAllScopes for prepare-fix-all. It also gives the precondition to echo expectedSnapshot and the invalidation rule to rediscover after changes or expiry. That is close to a complete when/when-not/alternative guide.
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
Evaluates one supported Document, Project or Solution Fix All operation for a Code Fix from list-code-actions, without staging or writing source files. Supply the originating actionId, an advertised fixAllScopes value and the matching expectedSnapshot; refactorings and already-prepared Fix All references are not accepted. Rejects operations exceeding maxChanges source documents, default 50. The affectedDocuments preview is limited separately to 20 identities by default; check its hasMore and totalCount. Returns a new temporary actionId for stage-code-action in mutation-enabled modes: use this prepared ID, not the originating ID, with the same snapshot. Staging revalidates the exact prepared change set.
| 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 readOnly/non-destructive, and the description adds substantial behavior beyond that: rejection above maxChanges (default 50), the separate 20-identity preview cap with hasMore/totalCount, the returned temporary actionId, and revalidation at staging. This is exactly the kind of operational context annotations cannot express.
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 action and the no-write guarantee, then layers constraints and the staging handoff. Dense and information-bearing throughout, though the single long paragraph could be split for easier scanning.
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 an output schema and rich annotations, the description still covers the pieces an agent needs: lifecycle position (prepare → stage), rejection limits, preview truncation, and the ID handoff. Nothing essential to 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 coverage is 100%, so the schema already documents parameters; the description nevertheless adds meaning the schema does not — that actionId must be the originating reference, scope must be an 'advertised' value, and expectedSnapshot must match the state used to build the request. Slightly held back only because it does not detail the workspace parameter.
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 ('Evaluates ... Fix All operation for a Code Fix from list-code-actions') and resource, and explicitly distinguishes itself from staging/writing ('without staging or writing source files'). An agent can immediately tell this apart from list-code-actions and the staging step.
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 explicit when-to-use inputs ('Supply the originating actionId, an advertised fixAllScopes value and the matching expectedSnapshot') and explicit exclusions ('refactorings and already-prepared Fix All references are not accepted'). It also routes to the downstream tool and warns which ID to use there, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename-symbolRename SymbolADestructive
Stages a Roslyn symbol rename and reference updates across the current transaction solution. Use this for a resolved symbol rename; use code-action discovery for provider-specific transformations. Requires an active transaction, symbol, newName and the current expectedSnapshot. renameOverloads, renameInStrings, renameInComments and renameFile all default to false; renameFile asks Roslyn to rename the containing file for type symbols and stages the resulting path change. An unchanged name produces no change. Successful staging returns mutation details and a new snapshot for subsequent requests. Inspect transaction-preview, or transaction-review in approval-required mode, then commit or roll back promptly. Source files are written only by transaction-commit; this tool does not create a Git commit.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The symbol selector. | |
| newName | Yes | The new symbol name. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| renameFile | No | Whether the containing file should be renamed for type symbols. | |
| renameInStrings | No | Whether matching identifiers in string literals should also be renamed. | |
| renameOverloads | No | Whether overloads should also be renamed. | |
| expectedSnapshot | Yes | Echo the snapshot returned with the data or transaction state used to construct this request. | |
| renameInComments | No | Whether matching identifiers in comments should also be renamed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it explains that changes are merely staged, that source files are written only by transaction-commit, that this tool creates no Git commit, that an unchanged name produces no change, and that success returns mutation details plus a new snapshot. The 'staged, not applied' semantics are the single most important thing an agent needs here and they are stated plainly.
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-loaded with purpose and the sibling distinction before prerequisites and behavior. It is dense — several clauses per sentence — but essentially every clause carries actionable information (defaults, workflow, no-commit guarantee). A minor trim would make it crisper.
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 destructive, non-idempotent, nested-schema mutation with 8 parameters, the description covers purpose, prerequisites, safe workflow, flag defaults, return shape, and the blast-radius boundary. With an output schema present it correctly does not re-explain return values, only that a new snapshot is returned for subsequent requests.
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, but the description adds real value the schema lacks: the default (false) for renameOverloads, renameInStrings, renameInComments and renameFile, and the specific behavior of renameFile as requesting Roslyn to rename the containing file for type symbols and staging the resulting path change. expectedSnapshot is also characterized as 'the current' snapshot.
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 — 'Stages a Roslyn symbol rename and reference updates' — and immediately scopes it against 'code-action discovery for provider-specific transformations'. An agent can distinguish this from stage-code-action and resolve-symbol without opening any 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?
Explicit about selection ('use this for a resolved symbol rename; use code-action discovery for provider-specific transformations') and about prerequisites ('Requires an active transaction, symbol, newName and the current expectedSnapshot'). It also states the mandatory follow-up workflow: inspect transaction-preview/transaction-review, then commit or roll back promptly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve-symbolResolve SymbolARead-onlyIdempotent
Resolves the symbol at a source location or selection, returning a symbol reference, a reusable selector when available and bounded source declarations. Use this to turn a known location into a target for symbol inspection; use search-symbols when only a name is known, or get-symbol-info for detailed metadata. Echo the location snapshot in expectedSnapshot to reject stale locations. Returns up to 32 source declarations by default; check declarations.hasMore. Metadata-only symbols may have no source declarations.
| 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 already cover safety (readOnly, idempotent, non-destructive), yet the description adds real behavior: passing expectedSnapshot rejects stale locations, the default cap is 32 declarations with hasMore signaling, and metadata-only symbols may return no declarations. The only gap is that it doesn't mention workspace/snapshot prerequisites for obtaining the snapshot in the first place.
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?
Five tight sentences, front-loaded with purpose and immediately followed by disambiguation. The opening sentence is dense with parallel return artifacts but no sentence is padding; minor cost in readability only.
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?
Annotations carry the safety profile and an output schema exists, so the description need not explain returns — yet it flags the pagination field and the metadata-only edge case an agent would otherwise miss. Nothing material 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 coverage is 100%, so baseline is 3; the description still adds rationale the schema lacks, namely why expectedSnapshot matters (rejecting stale locations) and what declarationsLimit bounds (source declarations, default 32). It says nothing extra about location.span vs location.selection or workspace, which the schema already handles.
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 source location or selection) plus the three artifacts returned: symbol reference, reusable selector, bounded source declarations. It also names the sibling tools it is not (search-symbols, get-symbol-info), so an agent can distinguish it without opening a 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?
Gives an explicit when-to-use clause (turn a known location into a target for symbol inspection) and names two alternatives with the conditions that select them: search-symbols when only a name is known, get-symbol-info for detailed metadata. Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-symbolsSearch SymbolsARead-onlyIdempotent
Finds source type and member declarations using a Roslyn name pattern and optional semantic filters. Use this to discover symbols by name; use resolve-symbol for a known source location, then get-symbol-info to inspect a chosen symbol. Searches the selected document or projects, or the loaded solution when scope is omitted. Filters narrow the candidate set. Returns symbol references, capped at 100 by default; check symbols.hasMore before treating the results as complete. 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 readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description adds genuinely useful behavior beyond that: results are capped at 100 by default and the agent must check symbols.hasMore before treating results as complete, and it clarifies scope fallback. It stops short of describing result shape or ranking, keeping it at 4.
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 usage/routing, then scope and result-cap behavior. Dense but every sentence carries routing or behavioral information; the closing 'Input: Provide query, metadataName, or both' is slightly redundant with 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?
With annotations covering safety, an output schema covering return values, and a description covering routing, scope default, and pagination via hasMore, an agent has everything needed to select and invoke the tool 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 the schema already documents every parameter, including the query/metadataName interplay. The description only restates the 'query, metadataName, or both' rule and that filters narrow candidates, adding little semantic depth beyond the structured fields. 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 type and member declarations') plus the matching mechanism (Roslyn name pattern) and semantic filters. It explicitly distinguishes itself from resolve-symbol and get-symbol-info, so an agent can separate it from the many sibling symbol tools without opening a 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?
Gives explicit when-to-use ('discover symbols by name') and names the alternatives with their conditions ('resolve-symbol for a known source location, then get-symbol-info to inspect a chosen symbol'). It also explains scope selection and its default (loaded solution when omitted).
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
Reports Host health without requiring a loaded workspace. Use this to diagnose startup, component availability, tool publication or effective operational policy; use workspace-status for one workspace and get-diagnostics for source findings. detail defaults to Minimal, returning server/Roslyn versions, MSBuild and Code Action component status and toolCount. Full additionally returns effective non-sensitive configuration, startup warnings, plugin status and unfinished recovery records; Standard currently has the same projection as Minimal. This read-only query does not load a workspace, run source diagnostics or repair recovery state. 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 the read-only/idempotent/non-destructive profile, yet the description still adds substantive behavior: that no workspace is loaded, no diagnostics are run, and recovery state is not repaired, plus that "Full" redacts to non-sensitive configuration. These are operational facts an agent cannot get from the annotation block alone.
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?
Routing guidance is front-loaded and the detail-level breakdown follows logically. The closing "Result: ..." sentence largely restates the projection list already enumerated, costing some tightness in an otherwise dense paragraph.
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 did not need explaining, yet the description still characterizes the projection per detail level and what the tool deliberately will not do. For a single-optional-parameter diagnostic read, 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 coverage is already 100%, so the baseline is 3, but the description goes further by spelling out what each enum value projects (Minimal = versions, MSBuild and Code Action component status, toolCount; Full = configuration, warnings, plugin status, recovery records) and notes Standard currently equals Minimal. That is meaning the one-line schema property description does not convey.
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 opens with a specific verb and resource ("Reports Host health") and immediately adds a scope qualifier ("without requiring a loaded workspace") that separates it from workspace-bound tools. It then explicitly names the siblings it is not (workspace-status, get-diagnostics), so an agent can discriminate without opening any 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 positive routing guidance ("use this to diagnose startup, component availability, tool publication or effective operational policy") and pairs each sibling with the condition that would select it instead. It also states exclusions clearly ("does not load a workspace, run source diagnostics or repair recovery state").
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stage-code-actionStage Code ActionADestructive
Revalidates and stages one selected Code Fix, refactoring or prepared Fix All operation in the active transaction without writing source files. Start the transaction before discovery or preparation, then supply the actionId from list-code-actions or the new prepared ID from prepare-fix-all with its matching expectedSnapshot. Prepared Fix All staging must match the exact prepared change set and document limit. Successful staging consumes the reference; use the returned snapshot and rediscover before selecting another action. Inspect transaction-preview, or transaction-review in approval-required mode, then transaction-commit to write files or transaction-rollback to discard staged work.
| Name | Required | Description | Default |
|---|---|---|---|
| actionId | Yes | The opaque action reference. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | Yes | 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?
Beyond annotations, the description discloses that staging does not write source files, successful staging consumes the action reference, and the returned snapshot must be used before selecting another action. It also states that prepared Fix All staging must match the exact prepared change set and document limit. It does not cover failure modes or authorization requirements, but the annotations already carry the safety profile.
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 action is front-loaded in the first sentence, followed by transactional sequencing and constraints. Despite covering a complex workflow, every sentence provides operational guidance and there is no obvious filler.
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 annotations, a nested input schema, and an output schema, the description is complete enough for correct invocation. It explains the transaction lifecycle context, actionId sourcing, snapshot matching, and next-step alternatives without needing to restate return-value details.
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 parameters are already well documented. The description adds useful meaning by explaining that actionId comes from list-code-actions or prepare-fix-all and that expectedSnapshot must match the state used to construct the request, including the prepared change set and document limit for Fix All.
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 specific verb and resource: it revalidates and stages a selected Code Fix, refactoring, or prepared Fix All operation in the active transaction. It clearly distinguishes this staging step from discovery via list-code-actions, preparation via prepare-fix-all, and later transaction-preview/commit/rollback actions.
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 explicitly says to start the transaction before discovery or preparation, where to get actionId, and how to use prepare-fix-all output with the matching expectedSnapshot. It also names the correct inspection and completion alternatives: transaction-preview or transaction-review, then transaction-commit or transaction-rollback.
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
Submits a reviewed unexpected-failure report through the configured provider. First use prepare-error-report and review its destination, payloadJson and payloadDigest, then supply its unexpired submissionHandle. Use get-error-details for local investigation instead. Prompt consent (default) requests client approval and offers exception-message removal; Always consent skips the prompt. Declined or unavailable approval sends nothing; declining also discards the handle. Success means provider acceptance: Sentry queues an external event, while the Logging provider writes locally. It does not confirm remote delivery or offer retraction. Reusing a retained successful handle returns its receipt without dispatching again; an expired handle requires a new prepared report. Result: Returns the dispatcher, provider report reference and dispatched 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?
Goes well beyond the annotations: declining discards the handle, success means provider acceptance rather than remote delivery, there is no retraction, expired handles require a fresh prepared report, and reusing a retained successful handle returns the prior receipt without re-dispatching (which explains the idempotentHint). These are exactly the side-effect and irreversibility facts an agent needs given destructiveHint=true.
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-loaded with the action, then prerequisites, consent semantics, failure modes, and result. Dense and largely waste-free, though the closing 'Result:' sentence partially restates what the output schema already returns.
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?
Covers prerequisites, consent branching, no-op/decline outcomes, idempotent replay, expiry recovery, and what 'success' actually guarantees for each provider. Even though an output schema exists, the delivery-vs-acceptance caveat is behavioral, not structural, so it belongs here.
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 is already documented as an opaque handle. The description still adds real meaning: the handle must be unexpired, must originate from prepare-error-report for the exact reviewed payload, and its reuse/expiry behavior changes the outcome.
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 a specific resource (a reviewed unexpected-failure report via the configured provider). It also distinguishes itself from the two nearest siblings by naming prepare-error-report as the prerequisite and get-error-details as the local-investigation alternative.
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 call sequence (prepare first, review destination/payloadJson/payloadDigest, then pass the unexpired handle), an explicit exclusion (use get-error-details for local investigation), and an explicit decision rule for the consent modes: Prompt requests approval, Always skips it, Declined/unavailable sends nothing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transaction-commitTransaction CommitADestructive
Writes the active transaction changes to source files. Inspect transaction-preview first; use transaction-rollback to discard changes instead. Supply the current expectedSnapshot. Transactional mode requests client-mediated confirmation unless already approved for this Host session; autonomous-trusted mode does not prompt. A completed write ends the transaction; check committed and the returned transaction state, because an empty revision returns NoChange and leaves the transaction active. Keep commit-owned paths free of concurrent edits during file application. This does not create a Git commit.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | Yes | 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 destructiveHint=true and idempotentHint=false, but the description goes well beyond them: it explains confirmation prompts in transactional vs autonomous-trusted mode, that a completed write ends the transaction, and that an empty revision yields NoChange while leaving the transaction active.
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-loaded with the action, then alternatives, parameters, approval model, completion semantics, and a concurrency caveat. Every sentence carries distinct operational information with no filler.
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 destructive, non-idempotent, client-confirmation-gated mutation, this covers approval flow, failure modes, state transitions, and concurrency hazards. An output schema exists, so the description rightly only points to the fields worth checking rather than enumerating return values.
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 schema already documents expectedSnapshot's echoed-snapshot semantics, so the baseline is 3. The description adds value by tying the snapshot to call outcomes — the expected snapshot must be current, and a stale or empty revision produces NoChange.
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?
Opens with a specific verb and resource: 'Writes the active transaction changes to source files.' It also disambiguates from a similarly named concept with 'This does not create a Git commit,' so an agent will not confuse it with version-control operations.
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?
Explicitly routes to siblings: inspect transaction-preview first, use transaction-rollback to discard. It also states the preconditions for a successful call (supply current expectedSnapshot, avoid concurrent edits on commit-owned paths) and the mode-dependent confirmation behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transaction-historyTransaction HistoryADestructive
Undoes or redoes one staged revision within the active transaction, changing the in-memory solution without writing source files. Use this to revise staged work; use transaction-rollback to discard the entire transaction. Supply the current expectedSnapshot and use the returned snapshot for subsequent mutations. The returned transaction reports canUndo and canRedo; a move beyond available history is rejected. A conflicted transaction must be rolled back before history can change.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | Direction to move through transaction history: Undo or Redo. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| expectedSnapshot | Yes | 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 declare destructiveHint=true and idempotentHint=false, but the description adds materially: mutations are in-memory and do not write source files, snapshot chaining semantics (use the returned snapshot for subsequent mutations), canUndo/canRedo reporting, and rejection beyond history. This goes well beyond the structured safety flags.
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-loaded with the core action, followed by alternative routing, snapshot contract, and preconditions. Every sentence carries distinct information with no redundancy.
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 details needn't be fully explained, yet the description still covers the snapshot contract and canUndo/canRedo reporting. For a destructive, snapshot-dependent mutation tool, the description gives everything an agent needs to 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 the baseline is 3. The description adds real meaning beyond the schema by explaining the purpose of expectedSnapshot as a chaining token ('use the returned snapshot for subsequent mutations') and framing direction as a move through history, which the enum alone does not convey.
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 precise verb pair (undoes/redoes) and a precise resource (one staged revision within the active transaction), scoped to in-memory state. It explicitly names the sibling transaction-rollback and the contrasting behavior, so an agent can distinguish it from the other transaction tools without inspecting schemas.
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?
Explicitly routes between alternatives: 'Use this to revise staged work; use transaction-rollback to discard the entire transaction.' It also states the precondition that a conflicted transaction must be rolled back first and that a move beyond available history is rejected — clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transaction-previewTransaction PreviewARead-onlyIdempotent
Inspects the active transaction against its captured baseline before committing, returning transaction state, changed documents and mutation provenance. Available in mutation modes that do not require a review receipt; approval-required mode exposes transaction-review instead. includeDiff defaults to false; set it to true and supply document for a detailed diff of that document, with contextLines defaulting to 3 unchanged lines per hunk. The document selector controls the detailed diff, not the overall changed-document summary. This read-only preview does not authorise or persist changes. Inspect it, then use transaction-commit to write the staged changes or transaction-rollback to discard them.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Document whose detailed diff should be returned; provide it when includeDiff is true. | |
| workspace | No | Provide workspaceId, alias, path, or any combination. | |
| includeDiff | No | Whether to include a detailed diff. | |
| contextLines | No | Number of unchanged context lines around each diff hunk when includeDiff is 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 readOnly/idempotent/non-destructive, and the description adds context beyond them: mode-gated availability, the fact that it neither authorises nor persists changes, and the defaults for includeDiff and contextLines. It also explains what is returned, which is useful context even though an output schema exists.
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-loaded with purpose and return contents, then mode gating, then parameter behaviour, then workflow routing. Dense but nearly every sentence carries information; the one slightly redundant line is 'This read-only preview does not authorise or persist changes', which partly restates readOnlyHint.
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 workflow-stage tool with sibling alternatives and mode gating, the description covers availability conditions, output contents, parameter coupling, safety semantics, and next steps. With an output schema present, nothing further is needed for correct invocation.
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, but the description adds a genuinely clarifying rule not in the schema: 'the document selector controls the detailed diff, not the overall changed-document summary', plus the coupling of includeDiff=true with supplying document. It repeats the documented defaults, which earns no extra credit.
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 ('Inspects the active transaction against its captured baseline') plus the return contents (transaction state, changed documents, mutation provenance). This clearly separates it from transaction-commit, transaction-rollback and transaction-review without needing 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?
Explicitly states the mode condition under which it applies ('mutation modes that do not require a review receipt') and names the alternative that takes over in approval-required mode (transaction-review). It also gives the follow-up path: inspect, then transaction-commit to write or transaction-rollback to discard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transaction-rollbackTransaction RollbackADestructive
Discards the active transaction and all its staged revisions, restoring its in-memory baseline without changing files on disk. Use this to abandon staged work or clear a conflicted transaction; use transaction-history to undo or redo individual staged revisions. Rollback ends the transaction, so its staged history cannot be restored with redo. It cannot undo an earlier commit. If the returned state is WorkspaceOutOfDate after a conflicted rollback, call workspace-reload before continuing.
| 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 flag destructiveHint=true and idempotentHint=false, yet the description adds the semantics annotations cannot: staged revisions are permanently lost (no redo), disk is untouched, and the transaction is terminated. It also gives a recovery branch for a WorkspaceOutOfDate result, which is real operational guidance 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?
Four sentences, each carrying a distinct fact: what is discarded, when to use it, the irreversible consequence, and the error recovery. The destructive consequence is front-loaded in sentence one rather than 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?
For a destructive mutation with an output schema already covering return shape, the description supplies exactly the missing pieces: irreversibility, non-persistence to disk, transaction termination, and the conflicted-rollback follow-up. Nothing an agent needs to call it safely is absent.
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 workspace parameter is fully documented in the schema, so the baseline is 3. The description adds slight value by framing the call as operating on 'the active transaction', implying the workspace selector identifies which transaction context is discarded, but it does not elaborate on identifier forms.
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 ('Discards the active transaction and all its staged revisions') plus the crucial scope boundary: it restores the in-memory baseline without changing files on disk. This immediately separates it from transaction-commit, transaction-preview, and transaction-history, which share the same object.
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?
Names two concrete triggers ('abandon staged work', 'clear a conflicted transaction') and explicitly routes per-revision undo/redo to transaction-history. It also states the exclusion that rollback cannot undo an earlier commit, which prevents a common misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transaction-startTransaction StartA
Starts an isolated staged transaction from the loaded workspace snapshot, returning transaction identity and revision zero. Use this before rename-symbol, format-document or mutating code actions, then pass the returned snapshot as expectedSnapshot to mutation requests. Only one workspace may own an active transaction in this Host; commit or roll back existing work before starting another. Reload an out-of-date workspace first. Check workspace-status and do not mutate a workspace that is or may be in use elsewhere unless mutation ownership has been coordinated. Starting a transaction does not write source files. Keep each transaction focused, inspect its preview or review, and finish promptly with transaction-commit or transaction-rollback.
| 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?
Goes well beyond the annotations by clarifying that starting a transaction does not write source files, that only one workspace may own an active transaction, and that ownership must be coordinated when the workspace may be in use elsewhere. It also explains the lifecycle handoff to preview, commit, or rollback.
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 purpose and lifecycle are front-loaded, followed by constraints and alternatives. The length is largely justified by the transactional complexity, though the final advisory sentence about keeping transactions focused and reviewing previews is slightly less essential.
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 in detail. The description covers the important missing context: prerequisites, workspace ownership, non-writing behavior at start, and the required commit or rollback follow-up.
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 optional workspace object is already documented in the schema. The description alludes to workspace ownership and snapshot context but does not add parameter syntax or format details beyond what the schema provides, 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: starts an isolated staged transaction from the loaded workspace snapshot, and returns transaction identity and revision zero. It clearly distinguishes this preparatory operation from transaction-commit and transaction-rollback.
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?
Explicitly says to use this before rename-symbol, format-document, or mutating code actions. It also gives alternatives and prerequisites: commit or roll back existing work first, reload an out-of-date workspace, and check workspace-status before mutating a workspace that may be in use elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace-closeWorkspace CloseA
Closes the selected workspace and releases its loaded solution, file watching and Host resources without changing source files. Use this when finished with a workspace; use workspace-reload to refresh an out-of-date workspace and continue working. An active or conflicted transaction blocks close: commit or roll it back first. Use workspace-open to load the workspace again.
| 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?
Adds real context beyond the annotations: what gets released, that source files are untouched, and the transaction precondition that blocks the call. The annotations already declare destructiveHint=false and idempotentHint=false, so part of the safety story is pre-covered; the description doesn't discuss unsaved in-memory edits or what the response reports, which keeps it just below a 5.
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?
Four tight sentences, front-loaded with the action and its effects, then usage routing, then the blocking precondition. No sentence is filler; each carries distinct operational information.
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 lifecycle tool with an output schema and fully covered parameters, the description supplies everything the agent needs: effects, reversibility path (workspace-open), alternatives, and the transaction precondition. Return values need not be explained since an output schema exists.
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 nested workspace object already documents path, alias, and workspaceId with the "any combination" guidance. The description only says "the selected workspace" and adds no syntax or disambiguation value, 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 ("Closes the selected workspace") plus the concrete effects: releases the loaded solution, file watching and Host resources. It explicitly distinguishes itself from workspace-reload and workspace-open, so an agent can pick the right sibling without opening any 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?
"Use this when finished with a workspace; use workspace-reload to refresh an out-of-date workspace" gives an explicit when-to-use plus the named alternative. It also states a hard precondition (no active or conflicted transaction) and the remedy (commit or roll back), and points to workspace-open for re-entry.
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 workspaces currently loaded in this Host, returning their identities and transactionOwnerWorkspaceId when a transaction is active. Use this to discover workspaceId, alias or path selectors before workspace-status or other workspace tools; use workspace-open to load a new workspace. Takes no workspace selector and can return an empty list. This read-only inventory does not discover repositories on disk or workspaces loaded only by other Host processes. Use workspace-status for lifecycle, reload requirements and advisory cross-instance information.
| 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?
Goes well beyond the read-only/idempotent annotations: it warns the result can be empty, that it takes no workspace selector, that it does not scan repositories on disk, and that workspaces loaded by other Host processes are invisible to it — all real gotchas for interpreting an empty result.
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?
Content is front-loaded with the core behavior and the primary alternative early. It runs four sentences and the closing pointer to workspace-status slightly overlaps the earlier mention of that sibling, but nothing is padding.
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 handling return shape and annotations covering safety, the description supplies exactly the missing pieces: empty-result possibility, disk/process scope limits, and sibling routing. Nothing an agent needs to call or interpret it is absent.
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 schema has zero parameters, so the baseline is 4. The description adds the useful clarification that it 'takes no workspace selector,' but there is little else to document on the parameter side.
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 workspaces currently loaded in this Host') and even names the returned identity fields including transactionOwnerWorkspaceId. It is clearly separable from workspace-open (which loads) and workspace-status (which reports lifecycle), so an agent can pick it 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?
Explicitly says to use it to discover workspaceId, alias or path selectors before workspace-status or other workspace tools, and names workspace-open as the alternative when a new workspace must be loaded. It also carves out what to use instead for lifecycle and cross-instance questions.
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 workspace for inspection and, when enabled by Host policy, staged mutation. 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 analysers 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?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) by disclosing that loading evaluates MSBuild project logic, that external linked/package documents become queryable, that analysers can execute with Host permissions on later operations, and that documents outside workspaceRoot stay read-only. It also warns about staleness and mutation ownership when the workspace is shared — the exact risk context an agent needs before a non-idempotent load.
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?
Three sentences, front-loaded with the core action before the trust caveat and the concurrency caveat. The final sentence is dense but every clause carries risk information; a little tightening would still be possible without losing content.
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 only needs to cover trust, side effects and coordination — and it does exactly that, including analyser execution and staleness expectations. Nothing material to invoking this load safely 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, but the description adds real meaning to workspaceRoot by tying it to read-only scope and transaction boundaries, and to the MSBuild properties by explaining they drive evaluation. It stops short of describing 'alias' or the artifact/configuration interplay, so it is an enhancement rather than full compensation.
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 ('Loads an additional workspace') plus the two modes it enables: inspection and, conditionally, staged mutation. This clearly separates it from siblings such as workspace-list, workspace-status, workspace-reload and workspace-close, which all operate on workspaces but with different intent.
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 explicit conditions: open only fully trusted workspaces, and if instance status reports the workspace is or may be in use elsewhere, restrict to necessary queries and coordinate mutation ownership. It does not point to workspace-list as the discovery path or state when to prefer workspace-reload versus a fresh open, but the when-to-use and when-to-be-cautious guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace-reloadWorkspace ReloadA
Recreates an out-of-date loaded workspace from its current on-disk solution or project inputs. Use this after workspace-status reports reloadRequired or a query reports WorkspaceOutOfDate; use workspace-open for a workspace not yet loaded. An active transaction blocks reload: finish it first, rolling back if conflicted. A workspace that is not out of date is rejected with WorkspaceReloadNotRequired. Preserves workspaceId and alias, but replaces the loaded solution with a new workspace epoch and snapshot; resolve document, symbol and action references again before reuse. Returns workspace identity, project/document counts and load diagnostics. Reload evaluates trusted MSBuild project logic with Host permissions; it does not apply staged source changes.
| 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?
Goes well beyond the annotations: discloses the transaction prerequisite, the WorkspaceReloadNotRequired rejection, that workspaceId/alias are preserved while the solution is replaced with a new epoch and snapshot, that existing references are invalidated, that MSBuild logic runs with Host permissions, and that staged changes are not applied.
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-loaded with purpose then usage routing, and every sentence carries distinct information. It is dense and long, but no sentence is filler; a slightly tighter grouping of the behavioral facts would improve scannability.
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 state-mutating reload tool this covers prerequisites, error cases, identity/epoch semantics, reference invalidation, and side effects, and an output schema already documents return values. Nothing an agent needs to call it safely 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% and the description adds real semantics about the workspace parameter — that identity and alias are preserved across the reload — but it doesn't clarify the path-vs-id-vs-alias resolution beyond what the schema states.
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+scope: 'Recreates an out-of-date loaded workspace from its current on-disk solution or project inputs.' It explicitly distinguishes itself from workspace-open, so an agent can route correctly without opening schemas.
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 explicit triggers ('after workspace-status reports reloadRequired or a query reports WorkspaceOutOfDate'), a named alternative condition for workspace-open, and a preclusion (an active transaction blocks reload; a non-out-of-date workspace is rejected with WorkspaceReloadNotRequired).
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
Inspects a loaded workspace, returning its lifecycle state, identity, project/document counts, active transaction, reloadRequired, detected external change and other live instances. Use this before mutation or after external edits; use server-status for Host configuration and component health. detail defaults to Standard; Full also includes workspace load diagnostics. Advisory instance-status diagnostics can appear at any detail level. Checking status detects external input changes and can mark the workspace out of date or its transaction conflicted. 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; coordinate mutation ownership first. No source files are written.
| 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?
Although annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, the description adds important operational behavior: checking status can detect external changes and can mark the workspace out of date or a transaction conflicted. It also warns that results can go stale and that source files are not written, which is exactly the kind of context an agent needs before invoking a status 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?
The description is front-loaded with purpose and usage guidance, then layers in the important caveats. Every sentence adds operational value, and despite covering several nuances it remains a compact, readable paragraph.
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 output schema exists, so return values need not be fully restated, and annotations already cover safety properties. The description completes the picture with lifecycle fields, detail-level behavior, side effects, staleness warnings, and coordination advice, leaving no material gap for an agent invoking 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 the schema already documents both parameters, making the baseline 3. The description adds useful meaning for the detail enum by stating that Standard is the default and Full includes workspace load diagnostics, plus that advisory diagnostics can appear at any detail level.
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 and resource: it inspects a loaded workspace and enumerates the status fields returned. It explicitly distinguishes itself from server-status by assigning Host configuration and component health to that sibling.
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 concrete usage guidance: call it before mutation or after external edits, and use server-status instead for Host configuration. It also adds cautions about workspaces in use elsewhere and coordinating mutation ownership, which goes beyond a simple alternative pointer.
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.
8 tool updates
v1.0.6- Added
format-document - Added
rename-symbol - Added
stage-code-action - Added
transaction-commit - Added
transaction-history - Added
transaction-preview - Added
transaction-rollback - Added
transaction-start
34 tool updates
v1.0.5- Changed
analyze-async10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
analyze-control-flow7 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "description": "Disambiguates documents with matching paths or IDs.", + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + } +} - added
Input schema / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / location / properties / span / properties / document / typeRemoved value: -"object"
- Changed
analyze-data-flow7 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "description": "Disambiguates documents with matching paths or IDs.", + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + } +} - added
Input schema / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / location / properties / span / properties / document / typeRemoved value: -"object"
- Changed
analyze-disposables10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
analyze-nullability16 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/scope/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/scope/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-callees10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "location": { + "properties": { + "selection": { + "properties": { + "contextAfter": { + "type": [ + "string", + "null" + ] + }, + "contextBefore": { + "type": [ + "string", + "null" + ] + }, + "document": { + "$ref": "#/$defs/document", + "description": "Provide exactly one of path or documentId." + }, + "selectedText": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "document", + "selectedText" + ], + "type": "object" + }, + "span": { + "properties": { + "document": { + "$ref": "#/$defs/document", + "description": "Provide exactly one of path or documentId." + }, + "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" + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / location / $refAdded value: +"#/$defs/location" - removed
Input schema / properties / location / propertiesRemoved value: -{ - "selection": { - "$ref": "#/properties/symbol/properties/location/properties/selection" - }, - "span": { - "$ref": "#/properties/symbol/properties/location/properties/span" - } -} - removed
Input schema / properties / location / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / $refAdded value: +"#/$defs/location" - removed
Input schema / properties / symbol / properties / location / propertiesRemoved value: -{ - "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" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/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" - }, - "span": { - "properties": { - "document": { - "description": "Provide exactly one of path or documentId.", - "properties": { - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "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" - } -} - removed
Input schema / properties / symbol / properties / location / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-callers17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - changed
Input schema / properties / scope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-dependency-cycles10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-derived-types17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - changed
Input schema / properties / scope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-duplicate-code10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-implementations17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - changed
Input schema / properties / scope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-overloads10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-overrides17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - changed
Input schema / properties / scope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-references17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - changed
Input schema / properties / scope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
find-unused-symbols10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-api-surface10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-change-impact17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - changed
Input schema / properties / scope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-code-context7 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "description": "Disambiguates documents with matching paths or IDs.", + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + } +} - added
Input schema / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / location / properties / span / properties / document / typeRemoved value: -"object"
- Changed
get-control-flow-graph10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "location": { + "properties": { + "selection": { + "properties": { + "contextAfter": { + "type": [ + "string", + "null" + ] + }, + "contextBefore": { + "type": [ + "string", + "null" + ] + }, + "document": { + "$ref": "#/$defs/document", + "description": "Provide exactly one of path or documentId." + }, + "selectedText": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "document", + "selectedText" + ], + "type": "object" + }, + "span": { + "properties": { + "document": { + "$ref": "#/$defs/document", + "description": "Provide exactly one of path or documentId." + }, + "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" + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / location / $refAdded value: +"#/$defs/location" - removed
Input schema / properties / location / propertiesRemoved value: -{ - "selection": { - "$ref": "#/properties/symbol/properties/location/properties/selection" - }, - "span": { - "$ref": "#/properties/symbol/properties/location/properties/span" - } -} - removed
Input schema / properties / location / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / $refAdded value: +"#/$defs/location" - removed
Input schema / properties / symbol / properties / location / propertiesRemoved value: -{ - "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" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/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" - }, - "span": { - "properties": { - "document": { - "description": "Provide exactly one of path or documentId.", - "properties": { - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "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" - } -} - removed
Input schema / properties / symbol / properties / location / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-dependency-graph10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-diagnostics10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-error-details1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "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" - } -]New value: +[ + { + "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": "Operation 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 operation, such as server, plugin, Code Action or Resource.", + "type": "string" + }, + "expiresAt": { + "description": "Time at which this locally retained error record expires.", + "format": "date-time", + "type": "string" + }, + "failureTime": { + "description": "Time at which the MCP operation 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": "Published tool name, or resources/read for a resource-read failure.", + "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" + } +]
- Changed
get-operation-tree7 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "description": "Disambiguates documents with matching paths or IDs.", + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + } +} - added
Input schema / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / location / properties / span / properties / document / typeRemoved value: -"object"
- Changed
get-partial-declarations10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-symbol-attributes10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-symbol-dependencies10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-symbol-dependents17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - changed
Input schema / properties / scope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-symbol-info10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-symbol-members10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-test-impact17 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -] - changed
Input schema / properties / testScope / properties / document / properties / project / $refPrevious value: -"#/properties/symbol/properties/location/properties/span/properties/document/properties/project"New value: +"#/$defs/project" - added
Input schema / properties / testScope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / testScope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / testScope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / testScope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / testScope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / testScope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
- Changed
get-type-hierarchy10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
go-to-definition10 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "$ref": "#/$defs/project", + "description": "Disambiguates documents with matching paths or IDs." + } + }, + "type": "object" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / symbol / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / symbol / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / symbol / properties / location / properties / span / properties / document / typeRemoved value: -"object" - added
Input schema / properties / symbol / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / symbol / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / symbol / properties / project / typeRemoved value: -[ - "object", - "null" -]
- Changed
resolve-symbol7 fields changed- added
Input schema / $defsAdded value: +{ + "document": { + "properties": { + "documentId": { + "description": "Workspace-local document ID.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "project": { + "description": "Disambiguates documents with matching paths or IDs.", + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } + }, + "type": "object" + } +} - added
Input schema / properties / location / properties / selection / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / selection / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "$ref": "#/properties/location/properties/span/properties/document/properties/project", - "description": "Disambiguates documents with matching paths or IDs." - } -} - removed
Input schema / properties / location / properties / selection / properties / document / typeRemoved value: -"object" - added
Input schema / properties / location / properties / span / properties / document / $refAdded value: +"#/$defs/document" - removed
Input schema / properties / location / properties / span / properties / document / propertiesRemoved value: -{ - "documentId": { - "description": "Workspace-local document ID.", - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "project": { - "description": "Disambiguates documents with matching paths or IDs.", - "properties": { - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } - }, - "type": [ - "object", - "null" - ] - } -} - removed
Input schema / properties / location / properties / span / properties / document / typeRemoved value: -"object"
- Changed
search-symbols10 fields changed- added
Input schema / $defsAdded value: +{ + "project": { + "properties": { + "name": { + "type": "string" + }, + "path": { + "description": "Workspace-relative path.", + "type": "string" + }, + "projectId": { + "type": "string" + }, + "targetFramework": { + "type": "string" + } + }, + "type": [ + "object", + "null" + ] + } +} - added
Input schema / properties / scope / properties / document / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / document / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / document / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / project / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / project / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / project / typeRemoved value: -[ - "object", - "null" -] - added
Input schema / properties / scope / properties / projects / items / $refAdded value: +"#/$defs/project" - removed
Input schema / properties / scope / properties / projects / items / propertiesRemoved value: -{ - "name": { - "type": "string" - }, - "path": { - "description": "Workspace-relative path.", - "type": "string" - }, - "projectId": { - "type": "string" - }, - "targetFramework": { - "type": "string" - } -} - removed
Input schema / properties / scope / properties / projects / items / typeRemoved value: -[ - "object", - "null" -]
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 56 tools
The tool set is generally well-differentiated, with descriptions explicitly pointing to related alternatives for symbol navigation, diagnostics, control/data flow, and transactions. However, with 56 tools, several clusters still require careful reading to avoid misselection, such as get-change-impact vs get-symbol-dependents vs get-dependency-graph, and analyze-control-flow vs get-control-flow-graph.
Names are consistently kebab-case and mostly follow a predictable verb-noun pattern such as find-references, get-diagnostics, and stage-code-action. The main deviation is the noun-action convention used for workspace-* and transaction-* families, which is still readable and internally consistent but prevents a perfect score.
At 56 tools, the surface is far beyond a practical selection scope for an MCP server, even for a broad Roslyn workbench. Many niche analysis and relationship tools could likely be collapsed or grouped to reduce tool-selection burden without losing core capability.
Coverage is broad and coherent across workspace lifecycle, symbol discovery and navigation, diagnostics, code actions, Fix All preparation, transactional mutation, and error reporting. A notable gap is that transaction-review is referenced for approval-required mode but is not present in the tool list, leaving that workflow incomplete.
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 Code6770MIT
- 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.6239MIT
- 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