[
{
"name": "format_document",
"title": "Format Document",
"description": "Format document with language-specific rules. Returns text edits for indentation, spacing, and style. `positions_degraded: \"response\"` (non-UTF-16 servers only) means some returned `character` offsets may be inexact.",
"inputSchema": {
"$defs": {
"TabSize": {
"default": 4,
"maximum": 32,
"minimum": 1,
"type": "integer"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"insert_spaces": {
"default": true,
"description": "Whether to use spaces instead of tabs (default: true).",
"type": "boolean"
},
"tab_size": {
"$ref": "#/$defs/TabSize",
"default": 4,
"description": "Tab size for formatting (1 to 32, default: 4)."
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"TextEdit": {
"description": "A text edit operation.",
"properties": {
"new_text": {
"description": "New text.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range to replace."
}
},
"required": [
"range",
"new_text"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"edits": {
"description": "List of edits to format the document.",
"items": {
"$ref": "#/$defs/TextEdit"
},
"type": "array"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
}
},
"required": [
"edits"
],
"type": "object"
},
"annotations": {
"title": "Format Document",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "format_range",
"title": "Format Range",
"description": "Format only a range with language-specific rules. Returns text edits the server reports for that range; edits are not filtered or applied. A line past the end of the file is rejected. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact.",
"inputSchema": {
"$defs": {
"TabSize": {
"default": 4,
"maximum": 32,
"minimum": 1,
"type": "integer"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"end_character": {
"description": "End character (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"end_line": {
"description": "End line (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"insert_spaces": {
"default": true,
"description": "Whether to use spaces instead of tabs (default: true).",
"type": "boolean"
},
"start_character": {
"description": "Start character (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"start_line": {
"description": "Start line (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"tab_size": {
"$ref": "#/$defs/TabSize",
"default": 4,
"description": "Tab size for formatting (1 to 32, default: 4)."
}
},
"required": [
"file_path",
"start_line",
"start_character",
"end_line",
"end_character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"TextEdit": {
"description": "A text edit operation.",
"properties": {
"new_text": {
"description": "New text.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range to replace."
}
},
"required": [
"range",
"new_text"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"edits": {
"description": "List of edits to format the document.",
"items": {
"$ref": "#/$defs/TextEdit"
},
"type": "array"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
}
},
"required": [
"edits"
],
"type": "object"
},
"annotations": {
"title": "Format Range",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_cached_diagnostics",
"title": "Cached Diagnostics",
"description": "Cached diagnostics from server notifications. Faster than the pull-model diagnostics tool, no new analysis. Errors with a retryable `ServerInitializing` while the file's server is still starting, and with `ServerFailedToStart` if it failed to start, instead of returning an empty list. `availability`: `published` (an empty list means clean), `pending` (nothing published yet) or `evicted` (a publish was dropped); an empty list next to `pending` or `evicted` is not clean. `indexing_in_progress: true` means the routed server was indexing at some point during this read, so results may be incomplete. `push_notifications_degraded: true` means the routed server crashed and was restarted, so push-only diagnostics (e.g. flycheck) are missing. `positions_degraded: \"response\"` (non-UTF-16 servers only) means some returned `character` offsets may be inexact.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Diagnostic": {
"description": "A single diagnostic.",
"properties": {
"code": {
"type": [
"string",
"null"
]
},
"message": {
"description": "Diagnostic message.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range"
},
"severity": {
"$ref": "#/$defs/DiagnosticSeverity"
}
},
"required": [
"range",
"severity",
"message"
],
"type": "object"
},
"DiagnosticSeverity": {
"description": "Diagnostic severity.",
"oneOf": [
{
"const": "error",
"description": "Error diagnostic.",
"type": "string"
},
{
"const": "warning",
"description": "Warning diagnostic.",
"type": "string"
},
{
"const": "information",
"type": "string"
},
{
"const": "hint",
"description": "Hint diagnostic.",
"type": "string"
}
]
},
"DiagnosticsAvailability": {
"description": "Whether the diagnostics cache has an answer for a file.",
"oneOf": [
{
"const": "published",
"type": "string"
},
{
"const": "pending",
"type": "string"
},
{
"const": "evicted",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"availability": {
"$ref": "#/$defs/DiagnosticsAvailability",
"description": "Whether the cache has an answer; an empty list with `pending` or `evicted` is not a clean file."
},
"diagnostics": {
"description": "List of diagnostics for the document.",
"items": {
"$ref": "#/$defs/Diagnostic"
},
"type": "array"
},
"indexing_in_progress": {
"description": "`true` if the routed server reported workspace indexing in progress during this read.",
"type": "boolean"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"push_notifications_degraded": {
"description": "`true` if this file's diagnostics server crashed and was restarted; push-only diagnostics are lost.",
"type": "boolean"
}
},
"required": [
"diagnostics",
"availability",
"push_notifications_degraded",
"indexing_in_progress"
],
"type": "object"
},
"annotations": {
"title": "Cached Diagnostics",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_code_actions",
"title": "Code Actions",
"description": "Code actions for range. Returns quick fixes, refactorings, and source actions with edits. Capped at a fixed maximum; `truncated: true` on the result means some actions, diagnostics, or edits were left out. An action's `edit.dropped` field, when non-empty, means some of that edit's changes were withheld (e.g. out-of-workspace files). The end line must exist in the file; a line past the end is rejected as invalid params. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"end_character": {
"description": "End character (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"end_line": {
"description": "End line (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"kind_filter": {
"description": "Optional filter by action kind, in any case; sent to the server in its canonical spelling.",
"enum": [
"quickfix",
"refactor",
"refactor.extract",
"refactor.inline",
"refactor.move",
"refactor.rewrite",
"source",
"source.organizeimports",
"source.fixall",
null
],
"type": [
"string",
"null"
]
},
"start_character": {
"description": "Start character (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"start_line": {
"description": "Start line (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"start_line",
"start_character",
"end_line",
"end_character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"CodeAction": {
"description": "A single code action.",
"properties": {
"command": {
"anyOf": [
{
"$ref": "#/$defs/CommandDescription"
},
{
"type": "null"
}
],
"description": "Command to execute."
},
"diagnostics": {
"description": "Diagnostics that this action resolves.",
"items": {
"$ref": "#/$defs/Diagnostic"
},
"type": "array"
},
"edit": {
"anyOf": [
{
"$ref": "#/$defs/WorkspaceEditDescription"
},
{
"type": "null"
}
],
"description": "Workspace edit to apply."
},
"is_preferred": {
"default": false,
"description": "Whether this is the preferred action.",
"type": "boolean"
},
"kind": {
"description": "Kind of code action (quickfix, refactor, etc.).",
"type": [
"string",
"null"
]
},
"title": {
"description": "Title of the code action.",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"CommandDescription": {
"description": "Description of a command.",
"properties": {
"arguments": {
"description": "Command arguments.",
"items": true,
"type": "array"
},
"command": {
"description": "Command identifier.",
"type": "string"
},
"title": {
"description": "Title of the command.",
"type": "string"
}
},
"required": [
"title",
"command"
],
"type": "object"
},
"Diagnostic": {
"description": "A single diagnostic.",
"properties": {
"code": {
"type": [
"string",
"null"
]
},
"message": {
"description": "Diagnostic message.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range"
},
"severity": {
"$ref": "#/$defs/DiagnosticSeverity"
}
},
"required": [
"range",
"severity",
"message"
],
"type": "object"
},
"DiagnosticSeverity": {
"description": "Diagnostic severity.",
"oneOf": [
{
"const": "error",
"description": "Error diagnostic.",
"type": "string"
},
{
"const": "warning",
"description": "Warning diagnostic.",
"type": "string"
},
{
"const": "information",
"type": "string"
},
{
"const": "hint",
"description": "Hint diagnostic.",
"type": "string"
}
]
},
"DocumentChanges": {
"description": "Changes to a document.",
"properties": {
"edits": {
"description": "List of edits to apply.",
"items": {
"$ref": "#/$defs/TextEdit"
},
"type": "array"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"edits"
],
"type": "object"
},
"DroppedEdits": {
"properties": {
"exceeds_item_cap": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"out_of_workspace": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"shadowed_by_changes": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"unsupported_file_operation": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"unsupported_snippet_edit": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"TextEdit": {
"description": "A text edit operation.",
"properties": {
"new_text": {
"description": "New text.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range to replace."
}
},
"required": [
"range",
"new_text"
],
"type": "object"
},
"WorkspaceEditDescription": {
"description": "Description of a workspace edit.",
"properties": {
"changes": {
"description": "Changes to apply to documents.",
"items": {
"$ref": "#/$defs/DocumentChanges"
},
"type": "array"
},
"dropped": {
"$ref": "#/$defs/DroppedEdits",
"description": "Entries withheld from `changes` -- see [`DroppedEdits`]."
}
},
"required": [
"changes"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"actions": {
"description": "Available code actions.",
"items": {
"$ref": "#/$defs/CodeAction"
},
"type": "array"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `actions`, their diagnostics or their edits were capped below the server's response.",
"type": "boolean"
}
},
"required": [
"actions"
],
"type": "object"
},
"annotations": {
"title": "Code Actions",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_completions",
"title": "Completions",
"description": "Completion suggestions at position. Returns methods, functions, variables, types, and snippets. `positions_degraded: \"request\"` (non-UTF-16 servers only) means the queried position was sent unconverted, so the result may not match the position asked about and should not be trusted.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"description": "Character/column number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"trigger": {
"description": "Optional trigger character (e.g., '.', ':', '->'), 1 to 8 bytes.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path",
"line",
"character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Completion": {
"description": "A completion item.",
"properties": {
"detail": {
"description": "Detail information.",
"type": [
"string",
"null"
]
},
"documentation": {
"description": "Documentation.",
"type": [
"string",
"null"
]
},
"kind": {
"description": "LSP numeric completion-item kind (e.g. 3 for Function).",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"label": {
"description": "Label of the completion.",
"type": "string"
}
},
"required": [
"label"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"items": {
"description": "List of completion items.",
"items": {
"$ref": "#/$defs/Completion"
},
"type": "array"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
}
},
"required": [
"items"
],
"type": "object"
},
"annotations": {
"title": "Completions",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_definition",
"title": "Go to Definition",
"description": "Definition location of a symbol. Returns file path, line, and character where declared. Capped at a fixed maximum for a pathological case; `truncated: true` on the result means more locations exist than are returned. Aim it with `line` + `character`, or with `symbol_name` (optionally narrowed by `symbol_kind` and `container`) for a symbol defined in the file: the result then carries `resolved_symbol` with the position that was queried. A name matching several symbols, none, or an unverifiable position fails with the candidates or the reason instead of guessing. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. Pass `context: \"enclosing_symbol\"` to attach `enclosing_symbol` to each item: `status` `resolved` (with `name_path`, `kind`, `range`, `fidelity`), `top_level` (no symbol contains it), `not_computed` or `unavailable` (with a `reason`; nothing is known, never read as top level). Costs one documentSymbol request per distinct file, capped per call; `enrichment` reports files enriched or skipped and `cut_short`. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"ResultContext": {
"description": "Extra context a tool can attach to each returned item.",
"oneOf": [
{
"const": "none",
"type": "string"
},
{
"const": "enclosing_symbol",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"default": null,
"description": "Character/column number (1-based). Give with `line`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"container": {
"default": null,
"description": "With `symbol_name`: keep only symbols inside a container (type, impl, class, module) of this name.",
"type": [
"string",
"null"
]
},
"context": {
"$ref": "#/$defs/ResultContext",
"default": "none",
"description": "Extra context: `none` (default) or `enclosing_symbol` (innermost symbol, one request per file)."
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"default": null,
"description": "Line number (1-based). Give with `character`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"symbol_kind": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "With `symbol_name`: keep only symbols of this kind, by name (function, method, class, struct, ...)"
},
"symbol_name": {
"default": null,
"description": "Name of a symbol defined in this file, instead of `line`/`character`.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"ContextualLocation": {
"description": "An item optionally carrying its enclosing symbol.",
"properties": {
"enclosing_symbol": {
"$ref": "#/$defs/EnclosingSymbolOutcome"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"range"
],
"type": "object"
},
"EnclosingSymbol": {
"description": "The innermost symbol containing an item.",
"properties": {
"fidelity": {
"$ref": "#/$defs/SymbolFidelity"
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name_path": {
"items": {
"type": "string"
},
"type": "array"
},
"range": {
"$ref": "#/$defs/Range"
}
},
"required": [
"name_path",
"kind",
"range",
"fidelity"
],
"type": "object"
},
"EnclosingSymbolOutcome": {
"description": "What is known about the enclosing symbol of one item.",
"oneOf": [
{
"$ref": "#/$defs/EnclosingSymbol",
"properties": {
"status": {
"const": "resolved",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"properties": {
"status": {
"const": "top_level",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The lookup was skipped.",
"properties": {
"reason": {
"$ref": "#/$defs/NotComputedReason",
"description": "Why it was skipped."
},
"status": {
"const": "not_computed",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
},
{
"properties": {
"reason": {
"$ref": "#/$defs/UnavailableReason",
"description": "Why it failed."
},
"status": {
"const": "unavailable",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
}
]
},
"EnrichmentSummary": {
"description": "Result-level statement about how complete the enrichment is.",
"properties": {
"cut_short": {
"type": "boolean"
},
"files_enriched": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"files_skipped": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"required": [
"files_enriched",
"files_skipped",
"cut_short"
],
"type": "object"
},
"NotComputedReason": {
"description": "Why an item's enclosing symbol was not looked up.",
"oneOf": [
{
"const": "file_cap",
"type": "string"
},
{
"const": "out_of_workspace",
"type": "string"
},
{
"const": "tracker_limit",
"type": "string"
},
{
"const": "deadline",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"PositionSource": {
"description": "Where the queried position of a name-addressed call came from.",
"oneOf": [
{
"const": "selection_range",
"type": "string"
},
{
"const": "inferred",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"ResolvedSymbol": {
"properties": {
"container": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"position": {
"$ref": "#/$defs/Position2D"
},
"position_source": {
"$ref": "#/$defs/PositionSource"
}
},
"required": [
"name",
"kind",
"position",
"position_source"
],
"type": "object"
},
"SymbolFidelity": {
"description": "How much ancestry an [`EnclosingSymbol`] name path carries.",
"oneOf": [
{
"const": "hierarchical",
"type": "string"
},
{
"const": "flat",
"type": "string"
}
]
},
"UnavailableReason": {
"description": "Why a lookup was attempted but yielded no symbol tree.",
"oneOf": [
{
"const": "capability_absent",
"type": "string"
},
{
"const": "request_failed",
"type": "string"
},
{
"const": "timed_out",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"enrichment": {
"$ref": "#/$defs/EnrichmentSummary",
"description": "Set only with `context: \"enclosing_symbol\"`: how many files were enriched or skipped."
},
"locations": {
"description": "Locations found.",
"items": {
"$ref": "#/$defs/ContextualLocation"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"resolved_symbol": {
"anyOf": [
{
"$ref": "#/$defs/ResolvedSymbol"
},
{
"type": "null"
}
],
"description": "Set only for a name-addressed call."
},
"truncated": {
"description": "Whether `locations` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"locations"
],
"type": "object"
},
"annotations": {
"title": "Go to Definition",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_diagnostics",
"title": "Diagnostics",
"description": "Diagnostics for a file. Returns errors, warnings, and hints with severity and location. `origin`: `pull`, `push_cache` when the server has no pull provider, or `cache_after_failed_pull` when the pull failed and the cache answered. `availability`: `published` (an empty list means clean), `pending` (nothing published yet) or `evicted` (a publish was dropped); an empty list next to `pending` or `evicted` is not clean. `indexing_in_progress: true` means the routed server was indexing at some point during this read, so results may be incomplete. `push_notifications_degraded: true` means the routed server crashed and was restarted, so push-only diagnostics (e.g. flycheck) are missing. `positions_degraded: \"response\"` (non-UTF-16 servers only) means some returned `character` offsets may be inexact. Pass `context: \"enclosing_symbol\"` to attach `enclosing_symbol` to each item: `status` `resolved` (with `name_path`, `kind`, `range`, `fidelity`), `top_level` (no symbol contains it), `not_computed` or `unavailable` (with a `reason`; nothing is known, never read as top level). Costs one documentSymbol request per distinct file, capped per call; `enrichment` reports files enriched or skipped and `cut_short`. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"ResultContext": {
"description": "Extra context a tool can attach to each returned item.",
"oneOf": [
{
"const": "none",
"type": "string"
},
{
"const": "enclosing_symbol",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"context": {
"$ref": "#/$defs/ResultContext",
"default": "none",
"description": "Extra context: `none` (default) or `enclosing_symbol` (innermost symbol, one request per file)."
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"ContextualDiagnostic": {
"description": "An item optionally carrying its enclosing symbol.",
"properties": {
"code": {
"description": "Optional diagnostic code.",
"type": [
"string",
"null"
]
},
"enclosing_symbol": {
"$ref": "#/$defs/EnclosingSymbolOutcome",
"description": "Present only when `context: \"enclosing_symbol\"` was requested."
},
"message": {
"description": "Diagnostic message.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range where the diagnostic applies."
},
"severity": {
"$ref": "#/$defs/DiagnosticSeverity",
"description": "Severity of the diagnostic."
}
},
"required": [
"range",
"severity",
"message"
],
"type": "object"
},
"DiagnosticSeverity": {
"description": "Diagnostic severity.",
"oneOf": [
{
"const": "error",
"description": "Error diagnostic.",
"type": "string"
},
{
"const": "warning",
"description": "Warning diagnostic.",
"type": "string"
},
{
"const": "information",
"type": "string"
},
{
"const": "hint",
"description": "Hint diagnostic.",
"type": "string"
}
]
},
"DiagnosticsAvailability": {
"description": "Whether the diagnostics cache has an answer for a file.",
"oneOf": [
{
"const": "published",
"type": "string"
},
{
"const": "pending",
"type": "string"
},
{
"const": "evicted",
"type": "string"
}
]
},
"DiagnosticsOrigin": {
"description": "Where a `get_diagnostics` answer came from.",
"oneOf": [
{
"const": "pull",
"description": "A `textDocument/diagnostic` pull, merged with the push cache.",
"type": "string"
},
{
"const": "push_cache",
"description": "The push cache alone, because the server advertises no pull provider.",
"type": "string"
},
{
"const": "cache_after_failed_pull",
"description": "The pull request failed, so the push cache and the last stored pull answered.",
"type": "string"
}
]
},
"EnclosingSymbol": {
"description": "The innermost symbol containing an item.",
"properties": {
"fidelity": {
"$ref": "#/$defs/SymbolFidelity"
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name_path": {
"items": {
"type": "string"
},
"type": "array"
},
"range": {
"$ref": "#/$defs/Range"
}
},
"required": [
"name_path",
"kind",
"range",
"fidelity"
],
"type": "object"
},
"EnclosingSymbolOutcome": {
"description": "What is known about the enclosing symbol of one item.",
"oneOf": [
{
"$ref": "#/$defs/EnclosingSymbol",
"properties": {
"status": {
"const": "resolved",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"properties": {
"status": {
"const": "top_level",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The lookup was skipped.",
"properties": {
"reason": {
"$ref": "#/$defs/NotComputedReason",
"description": "Why it was skipped."
},
"status": {
"const": "not_computed",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
},
{
"properties": {
"reason": {
"$ref": "#/$defs/UnavailableReason",
"description": "Why it failed."
},
"status": {
"const": "unavailable",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
}
]
},
"EnrichmentSummary": {
"description": "Result-level statement about how complete the enrichment is.",
"properties": {
"cut_short": {
"type": "boolean"
},
"files_enriched": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"files_skipped": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"required": [
"files_enriched",
"files_skipped",
"cut_short"
],
"type": "object"
},
"NotComputedReason": {
"description": "Why an item's enclosing symbol was not looked up.",
"oneOf": [
{
"const": "file_cap",
"type": "string"
},
{
"const": "out_of_workspace",
"type": "string"
},
{
"const": "tracker_limit",
"type": "string"
},
{
"const": "deadline",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"SymbolFidelity": {
"description": "How much ancestry an [`EnclosingSymbol`] name path carries.",
"oneOf": [
{
"const": "hierarchical",
"type": "string"
},
{
"const": "flat",
"type": "string"
}
]
},
"UnavailableReason": {
"description": "Why a lookup was attempted but yielded no symbol tree.",
"oneOf": [
{
"const": "capability_absent",
"type": "string"
},
{
"const": "request_failed",
"type": "string"
},
{
"const": "timed_out",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"availability": {
"$ref": "#/$defs/DiagnosticsAvailability",
"description": "Whether the cache has an answer; an empty list with `pending` or `evicted` is not a clean file."
},
"diagnostics": {
"description": "List of diagnostics for the document.",
"items": {
"$ref": "#/$defs/ContextualDiagnostic"
},
"type": "array"
},
"enrichment": {
"$ref": "#/$defs/EnrichmentSummary",
"description": "Set only with `context: \"enclosing_symbol\"`: how many files were enriched or skipped."
},
"indexing_in_progress": {
"description": "`true` if the routed server reported workspace indexing in progress during this read.",
"type": "boolean"
},
"origin": {
"$ref": "#/$defs/DiagnosticsOrigin",
"description": "How the answer was produced: `pull`, `push_cache` or `cache_after_failed_pull`."
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"push_notifications_degraded": {
"description": "`true` if this file's diagnostics server crashed and was restarted; push-only diagnostics are lost.",
"type": "boolean"
}
},
"required": [
"diagnostics",
"availability",
"origin",
"push_notifications_degraded",
"indexing_in_progress"
],
"type": "object"
},
"annotations": {
"title": "Diagnostics",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_document_highlights",
"title": "Document Highlights",
"description": "Occurrences of the symbol at position within the same file, each marked `read`, `write` or `text`. A file-local subset of get_references. Capped at a fixed maximum; `truncated: true` on the result means more exist than are returned. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"description": "Character/column number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"line",
"character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"DocumentHighlightEntry": {
"description": "One occurrence of a symbol within a document.",
"properties": {
"kind": {
"$ref": "#/$defs/DocumentHighlightKind",
"description": "How the occurrence uses the symbol."
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the occurrence."
}
},
"required": [
"range",
"kind"
],
"type": "object"
},
"DocumentHighlightKind": {
"description": "How a document highlight occurrence uses its symbol.",
"oneOf": [
{
"const": "text",
"description": "A textual occurrence; also what a server that omits the kind means.",
"type": "string"
},
{
"const": "read",
"description": "A read access, such as reading a variable.",
"type": "string"
},
{
"const": "write",
"description": "A write access, such as assigning a variable.",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"highlights": {
"description": "Occurrences of the symbol at the position within the file.",
"items": {
"$ref": "#/$defs/DocumentHighlightEntry"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `highlights` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"highlights"
],
"type": "object"
},
"annotations": {
"title": "Document Highlights",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_document_symbols",
"title": "Document Symbols",
"description": "Symbols in a file. Returns hierarchical outline with functions, classes, structs, and locations. `positions_degraded: \"response\"` (non-UTF-16 servers only) means some returned `character` offsets may be inexact.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"Symbol": {
"description": "A document symbol.",
"properties": {
"children": {
"description": "Child symbols.",
"items": {
"$ref": "#/$defs/Symbol"
},
"type": [
"array",
"null"
]
},
"kind": {
"description": "LSP numeric symbol kind (e.g. 12 for Function).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selection_range": {
"$ref": "#/$defs/Range",
"description": "Selection range (identifier location)."
}
},
"required": [
"name",
"kind",
"range",
"selection_range"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"symbols": {
"description": "List of symbols in the document.",
"items": {
"$ref": "#/$defs/Symbol"
},
"type": "array"
}
},
"required": [
"symbols"
],
"type": "object"
},
"annotations": {
"title": "Document Symbols",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_folding_ranges",
"title": "Folding Ranges",
"description": "Foldable regions of a file (blocks, imports, comments, marked regions): 1-based lines, optional columns, `kind`, collapsed text. Sorted by start line, longest first. Capped at a fixed maximum; `truncated: true` means more exist.",
"inputSchema": {
"$defs": {
"FoldingKindFilter": {
"enum": [
"all",
"comment",
"imports",
"region"
],
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"kind": {
"$ref": "#/$defs/FoldingKindFilter",
"description": "`all` (default), `comment`, `imports` or `region`; regions without a kind match only `all`."
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"FoldingKind": {
"enum": [
"comment",
"imports",
"region",
"unspecified"
],
"type": "string"
},
"FoldingRegion": {
"description": "One foldable region of a file, 1-based.",
"properties": {
"collapsed_text": {
"description": "Text shown in place of the fold, when the server gives it.",
"type": [
"string",
"null"
]
},
"end_character": {
"description": "Where the fold ends, when the server says; absent means line end.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"end_line": {
"description": "Last line.",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"kind": {
"$ref": "#/$defs/FoldingKind",
"description": "Region kind."
},
"start_character": {
"description": "Where the fold starts, when the server says; absent means line end.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"start_line": {
"description": "First line.",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"start_line",
"end_line",
"kind"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"regions": {
"description": "The regions, by ascending start line then descending end line.",
"items": {
"$ref": "#/$defs/FoldingRegion"
},
"type": "array"
},
"truncated": {
"description": "Whether more matching regions exist than are returned. Omitted when\n`false`.",
"type": "boolean"
}
},
"required": [
"regions"
],
"type": "object"
},
"annotations": {
"title": "Folding Ranges",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_hover",
"title": "Hover",
"description": "Type and documentation info for a symbol. Returns signatures, docs, and inferred types. Aim it with `line` + `character`, or with `symbol_name` (optionally narrowed by `symbol_kind` and `container`) for a symbol defined in the file: the result then carries `resolved_symbol` with the position that was queried. A name matching several symbols, none, or an unverifiable position fails with the candidates or the reason instead of guessing. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"default": null,
"description": "Character/column number (1-based). Give with `line`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"container": {
"default": null,
"description": "With `symbol_name`: keep only symbols inside a container (type, impl, class, module) of this name.",
"type": [
"string",
"null"
]
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"default": null,
"description": "Line number (1-based). Give with `character`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"symbol_kind": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "With `symbol_name`: keep only symbols of this kind, by name (function, method, class, struct, ...)"
},
"symbol_name": {
"default": null,
"description": "Name of a symbol defined in this file, instead of `line`/`character`.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"PositionSource": {
"description": "Where the queried position of a name-addressed call came from.",
"oneOf": [
{
"const": "selection_range",
"type": "string"
},
{
"const": "inferred",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"ResolvedSymbol": {
"properties": {
"container": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"position": {
"$ref": "#/$defs/Position2D"
},
"position_source": {
"$ref": "#/$defs/PositionSource"
}
},
"required": [
"name",
"kind",
"position",
"position_source"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"contents": {
"description": "Hover contents as markdown string.",
"type": "string"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"range": {
"anyOf": [
{
"$ref": "#/$defs/Range"
},
{
"type": "null"
}
],
"description": "Optional range the hover applies to."
},
"resolved_symbol": {
"anyOf": [
{
"$ref": "#/$defs/ResolvedSymbol"
},
{
"type": "null"
}
],
"description": "Set only for a name-addressed call."
}
},
"required": [
"contents"
],
"type": "object"
},
"annotations": {
"title": "Hover",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_incoming_calls",
"title": "Incoming Calls",
"description": "Functions calling the specified item. Takes call hierarchy item, returns callers, capped at a fixed maximum; `truncated: true` on the result means more exist than are returned. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"HierarchyItem": {
"additionalProperties": false,
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"additionalProperties": false,
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"Range": {
"additionalProperties": false,
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"item": {
"$ref": "#/$defs/HierarchyItem",
"description": "The call hierarchy item, exactly as a prepare, incoming or outgoing call result gave it."
}
},
"required": [
"item"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"HierarchyItem": {
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"IncomingCall": {
"description": "An incoming call (caller of the current item).",
"properties": {
"from": {
"$ref": "#/$defs/HierarchyItem",
"description": "The item that calls the current item."
},
"from_ranges": {
"description": "Ranges where the call occurs.",
"items": {
"$ref": "#/$defs/Range"
},
"type": "array"
}
},
"required": [
"from",
"from_ranges"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"calls": {
"description": "List of incoming calls.",
"items": {
"$ref": "#/$defs/IncomingCall"
},
"type": "array"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `calls` (with their `from_ranges`) was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"calls"
],
"type": "object"
},
"annotations": {
"title": "Incoming Calls",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_inlay_hints",
"title": "Inlay Hints",
"description": "Inlay hints in range. Returns inferred type/parameter annotations the editor would render inline. Capped at a fixed maximum; `truncated: true` on the result means more hints exist than are returned. The end line must exist in the file; a line past the end is rejected as invalid params. `indexing_in_progress: true`: the routed server was still indexing, so an empty or partial result may be incomplete. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"end_character": {
"description": "End character (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"end_line": {
"description": "End line (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"start_character": {
"description": "Start character (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"start_line": {
"description": "Start line (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"start_line",
"start_character",
"end_line",
"end_character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"InlayHintEntry": {
"description": "A single inlay hint entry.",
"properties": {
"kind": {
"description": "LSP numeric inlay-hint kind (1 = Type, 2 = Parameter, or a\nserver-defined custom value).",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"label": {
"description": "Label text for the hint.",
"type": "string"
},
"padding_left": {
"description": "Whether to add a space before the hint.",
"type": [
"boolean",
"null"
]
},
"padding_right": {
"description": "Whether to add a space after the hint.",
"type": [
"boolean",
"null"
]
},
"position": {
"$ref": "#/$defs/Position2D",
"description": "Position of the hint (1-based MCP)."
},
"tooltip": {
"description": "Tooltip text.",
"type": [
"string",
"null"
]
}
},
"required": [
"position",
"label"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"hints": {
"description": "List of inlay hints.",
"items": {
"$ref": "#/$defs/InlayHintEntry"
},
"type": "array"
},
"indexing_in_progress": {
"description": "`true` if the routed server reported workspace indexing in progress during this read.",
"type": "boolean"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `hints` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"hints",
"indexing_in_progress"
],
"type": "object"
},
"annotations": {
"title": "Inlay Hints",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_outgoing_calls",
"title": "Outgoing Calls",
"description": "Functions called by the specified item. Takes call hierarchy item, returns callees, capped at a fixed maximum; `truncated: true` on the result means more exist than are returned. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"HierarchyItem": {
"additionalProperties": false,
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"additionalProperties": false,
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"Range": {
"additionalProperties": false,
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"item": {
"$ref": "#/$defs/HierarchyItem",
"description": "The call hierarchy item, exactly as a prepare, incoming or outgoing call result gave it."
}
},
"required": [
"item"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"HierarchyItem": {
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"OutgoingCall": {
"description": "An outgoing call (callee from the current item).",
"properties": {
"from_ranges": {
"description": "Ranges where the call occurs.",
"items": {
"$ref": "#/$defs/Range"
},
"type": "array"
},
"to": {
"$ref": "#/$defs/HierarchyItem",
"description": "The item being called."
}
},
"required": [
"to",
"from_ranges"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"calls": {
"description": "List of outgoing calls.",
"items": {
"$ref": "#/$defs/OutgoingCall"
},
"type": "array"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `calls` (with their `from_ranges`) was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"calls"
],
"type": "object"
},
"annotations": {
"title": "Outgoing Calls",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_references",
"title": "Find References",
"description": "References to a symbol, across workspace. Capped at a fixed maximum for an extremely common symbol; `truncated: true` on the result means more references exist than are returned. Aim it with `line` + `character`, or with `symbol_name` (optionally narrowed by `symbol_kind` and `container`) for a symbol defined in the file: the result then carries `resolved_symbol` with the position that was queried. A name matching several symbols, none, or an unverifiable position fails with the candidates or the reason instead of guessing. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. Pass `context: \"enclosing_symbol\"` to attach `enclosing_symbol` to each item: `status` `resolved` (with `name_path`, `kind`, `range`, `fidelity`), `top_level` (no symbol contains it), `not_computed` or `unavailable` (with a `reason`; nothing is known, never read as top level). Costs one documentSymbol request per distinct file, capped per call; `enrichment` reports files enriched or skipped and `cut_short`. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory). On an empty result, `index_coverage` gives `synced_documents` (documents currently synced) and `server_restarted` (once true, stays true); the server may not index other files, so not proof of absence.",
"inputSchema": {
"$defs": {
"ResultContext": {
"description": "Extra context a tool can attach to each returned item.",
"oneOf": [
{
"const": "none",
"type": "string"
},
{
"const": "enclosing_symbol",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"default": null,
"description": "Character/column number (1-based). Give with `line`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"container": {
"default": null,
"description": "With `symbol_name`: keep only symbols inside a container (type, impl, class, module) of this name.",
"type": [
"string",
"null"
]
},
"context": {
"$ref": "#/$defs/ResultContext",
"default": "none",
"description": "Extra context: `none` (default) or `enclosing_symbol` (innermost symbol, one request per file)."
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"include_declaration": {
"default": false,
"description": "Whether to include the declaration in the results.",
"type": "boolean"
},
"line": {
"default": null,
"description": "Line number (1-based). Give with `character`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"symbol_kind": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "With `symbol_name`: keep only symbols of this kind, by name (function, method, class, struct, ...)"
},
"symbol_name": {
"default": null,
"description": "Name of a symbol defined in this file, instead of `line`/`character`.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"ContextualLocation": {
"description": "An item optionally carrying its enclosing symbol.",
"properties": {
"enclosing_symbol": {
"$ref": "#/$defs/EnclosingSymbolOutcome"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"range"
],
"type": "object"
},
"EnclosingSymbol": {
"description": "The innermost symbol containing an item.",
"properties": {
"fidelity": {
"$ref": "#/$defs/SymbolFidelity"
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name_path": {
"items": {
"type": "string"
},
"type": "array"
},
"range": {
"$ref": "#/$defs/Range"
}
},
"required": [
"name_path",
"kind",
"range",
"fidelity"
],
"type": "object"
},
"EnclosingSymbolOutcome": {
"description": "What is known about the enclosing symbol of one item.",
"oneOf": [
{
"$ref": "#/$defs/EnclosingSymbol",
"properties": {
"status": {
"const": "resolved",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"properties": {
"status": {
"const": "top_level",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The lookup was skipped.",
"properties": {
"reason": {
"$ref": "#/$defs/NotComputedReason",
"description": "Why it was skipped."
},
"status": {
"const": "not_computed",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
},
{
"properties": {
"reason": {
"$ref": "#/$defs/UnavailableReason",
"description": "Why it failed."
},
"status": {
"const": "unavailable",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
}
]
},
"EnrichmentSummary": {
"description": "Result-level statement about how complete the enrichment is.",
"properties": {
"cut_short": {
"type": "boolean"
},
"files_enriched": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"files_skipped": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"required": [
"files_enriched",
"files_skipped",
"cut_short"
],
"type": "object"
},
"IndexCoverage": {
"description": "What an empty references or workspace-symbol answer covers.",
"properties": {
"server_restarted": {
"type": "boolean"
},
"synced_documents": {
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"synced_documents"
],
"type": "object"
},
"NotComputedReason": {
"description": "Why an item's enclosing symbol was not looked up.",
"oneOf": [
{
"const": "file_cap",
"type": "string"
},
{
"const": "out_of_workspace",
"type": "string"
},
{
"const": "tracker_limit",
"type": "string"
},
{
"const": "deadline",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"PositionSource": {
"description": "Where the queried position of a name-addressed call came from.",
"oneOf": [
{
"const": "selection_range",
"type": "string"
},
{
"const": "inferred",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"ResolvedSymbol": {
"properties": {
"container": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"position": {
"$ref": "#/$defs/Position2D"
},
"position_source": {
"$ref": "#/$defs/PositionSource"
}
},
"required": [
"name",
"kind",
"position",
"position_source"
],
"type": "object"
},
"SymbolFidelity": {
"description": "How much ancestry an [`EnclosingSymbol`] name path carries.",
"oneOf": [
{
"const": "hierarchical",
"type": "string"
},
{
"const": "flat",
"type": "string"
}
]
},
"UnavailableReason": {
"description": "Why a lookup was attempted but yielded no symbol tree.",
"oneOf": [
{
"const": "capability_absent",
"type": "string"
},
{
"const": "request_failed",
"type": "string"
},
{
"const": "timed_out",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"enrichment": {
"$ref": "#/$defs/EnrichmentSummary",
"description": "Set only with `context: \"enclosing_symbol\"`: how many files were enriched or skipped."
},
"index_coverage": {
"$ref": "#/$defs/IndexCoverage",
"description": "Set only when `locations` is empty: what the routed server's answer covers."
},
"locations": {
"description": "Locations found.",
"items": {
"$ref": "#/$defs/ContextualLocation"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"resolved_symbol": {
"anyOf": [
{
"$ref": "#/$defs/ResolvedSymbol"
},
{
"type": "null"
}
],
"description": "Set only for a name-addressed call."
},
"truncated": {
"description": "Whether `locations` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"locations"
],
"type": "object"
},
"annotations": {
"title": "Find References",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_selection_ranges",
"title": "Selection Ranges",
"description": "Ranges enclosing a position, innermost first, as the server reports them; their values can be passed to get_code_actions or format_range. Capped at a fixed maximum; `truncated: true` means the outermost were dropped. `positions_degraded: \"request\"` (non-UTF-16 servers only) means the queried position was inexact: do not trust the result.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"description": "Character/column number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"line",
"character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when the queried position or some `character` offsets are inexact (non-UTF-16)."
},
"ranges": {
"description": "Ranges enclosing the position, innermost first, as the server reported them.",
"items": {
"$ref": "#/$defs/Range"
},
"type": "array"
},
"truncated": {
"description": "Whether the chain was longer than `MAX_SELECTION_CHAIN` and the\noutermost ranges were dropped.",
"type": "boolean"
}
},
"required": [
"ranges"
],
"type": "object"
},
"annotations": {
"title": "Selection Ranges",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_server_logs",
"title": "Server Logs",
"description": "Recent server log messages. Filter by level (error, warning, info, debug) for debugging.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"limit": {
"default": 50,
"description": "Maximum number of log entries to return (default: 50).",
"format": "uint",
"minimum": 0,
"type": "integer"
},
"min_level": {
"anyOf": [
{
"description": "Log severity level.",
"oneOf": [
{
"const": "error",
"description": "Error log level.",
"type": "string"
},
{
"const": "warning",
"description": "Warning log level.",
"type": "string"
},
{
"const": "info",
"description": "Info log level.",
"type": "string"
},
{
"const": "debug",
"description": "Debug log level.",
"type": "string"
}
]
},
{
"type": "null"
}
],
"description": "Minimum log level to include: error, warning, info, debug."
}
},
"type": "object"
},
"outputSchema": {
"$defs": {
"LogEntry": {
"description": "A log entry from the LSP server.",
"properties": {
"level": {
"description": "Log level.",
"oneOf": [
{
"const": "error",
"description": "Error log level.",
"type": "string"
},
{
"const": "warning",
"description": "Warning log level.",
"type": "string"
},
{
"const": "info",
"description": "Info log level.",
"type": "string"
},
{
"const": "debug",
"description": "Debug log level.",
"type": "string"
}
]
},
"message": {
"description": "Log message.",
"type": "string"
},
"timestamp": {
"description": "Timestamp when the log was received.",
"format": "date-time",
"type": "string"
}
},
"required": [
"level",
"message",
"timestamp"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"logs": {
"description": "List of log entries.",
"items": {
"$ref": "#/$defs/LogEntry"
},
"type": "array"
}
},
"required": [
"logs"
],
"type": "object"
},
"annotations": {
"title": "Server Logs",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_server_messages",
"title": "Server Messages",
"description": "Recent server messages (showMessage notifications). User-facing prompts and status updates.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"limit": {
"default": 20,
"description": "Maximum number of messages to return (default: 20).",
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"outputSchema": {
"$defs": {
"MessageType": {
"description": "Server message type.",
"oneOf": [
{
"const": "error",
"description": "Error message.",
"type": "string"
},
{
"const": "warning",
"description": "Warning message.",
"type": "string"
},
{
"const": "info",
"description": "Info message.",
"type": "string"
},
{
"const": "log",
"description": "Log message.",
"type": "string"
}
]
},
"ServerMessage": {
"description": "A message from the LSP server.",
"properties": {
"message": {
"description": "Message content.",
"type": "string"
},
"message_type": {
"$ref": "#/$defs/MessageType",
"description": "Message type."
},
"timestamp": {
"description": "Timestamp when the message was received.",
"format": "date-time",
"type": "string"
}
},
"required": [
"message_type",
"message",
"timestamp"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"messages": {
"description": "List of server messages.",
"items": {
"$ref": "#/$defs/ServerMessage"
},
"type": "array"
}
},
"required": [
"messages"
],
"type": "object"
},
"annotations": {
"title": "Server Messages",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_signature_help",
"title": "Signature Help",
"description": "Signature help at position. Returns parameter info, active signature/parameter, and documentation while typing a call. `indexing_in_progress: true`: the routed server was still indexing, so an empty or partial result may be incomplete. `positions_degraded: \"request\"` (non-UTF-16 servers only) means the queried position was sent unconverted, so the result may not match the position asked about and should not be trusted.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"description": "Character/column number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"line",
"character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"SignatureInfo": {
"description": "A single signature overload.",
"properties": {
"documentation": {
"description": "Optional documentation for the signature.",
"type": [
"string",
"null"
]
},
"label": {
"description": "Full label of the signature.",
"type": "string"
},
"parameters": {
"description": "Parameters of the signature.",
"items": {
"$ref": "#/$defs/SignatureParameter"
},
"type": "array"
}
},
"required": [
"label",
"parameters"
],
"type": "object"
},
"SignatureParameter": {
"description": "A single parameter in a signature.",
"properties": {
"documentation": {
"description": "Optional documentation for the parameter.",
"type": [
"string",
"null"
]
},
"label": {
"description": "Label of the parameter; absent when the server gave an offset pair that does not resolve.",
"type": [
"string",
"null"
]
}
},
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"active_parameter": {
"description": "Index of the active parameter within the active signature.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"active_signature": {
"description": "Index of the active signature.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"indexing_in_progress": {
"description": "`true` if the routed server reported workspace indexing in progress during this read.",
"type": "boolean"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"signatures": {
"description": "Available signatures.",
"items": {
"$ref": "#/$defs/SignatureInfo"
},
"type": "array"
}
},
"required": [
"signatures",
"indexing_in_progress"
],
"type": "object"
},
"annotations": {
"title": "Signature Help",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_subtypes",
"title": "Subtypes",
"description": "Subtypes (derived classes, implementors) of a type hierarchy item. Takes an item exactly as returned by prepare_type_hierarchy, get_supertypes or get_subtypes; returns one level, capped at a fixed maximum; `truncated: true` on the result means more exist than are returned. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"HierarchyItem": {
"additionalProperties": false,
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"additionalProperties": false,
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"Range": {
"additionalProperties": false,
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"item": {
"$ref": "#/$defs/HierarchyItem",
"description": "The type hierarchy item, exactly as a prepare, supertypes or subtypes result gave it."
}
},
"required": [
"item"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"HierarchyItem": {
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"items": {
"description": "Type hierarchy items at the position, or the supertypes/subtypes of\nthe queried item.",
"items": {
"$ref": "#/$defs/HierarchyItem"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `items` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"items"
],
"type": "object"
},
"annotations": {
"title": "Subtypes",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_supertypes",
"title": "Supertypes",
"description": "Supertypes (base classes, implemented interfaces) of a type hierarchy item. Takes an item exactly as returned by prepare_type_hierarchy, get_supertypes or get_subtypes; returns one level, capped at a fixed maximum; `truncated: true` on the result means more exist than are returned. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"HierarchyItem": {
"additionalProperties": false,
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"additionalProperties": false,
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"Range": {
"additionalProperties": false,
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"item": {
"$ref": "#/$defs/HierarchyItem",
"description": "The type hierarchy item, exactly as a prepare, supertypes or subtypes result gave it."
}
},
"required": [
"item"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"HierarchyItem": {
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"items": {
"description": "Type hierarchy items at the position, or the supertypes/subtypes of\nthe queried item.",
"items": {
"$ref": "#/$defs/HierarchyItem"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `items` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"items"
],
"type": "object"
},
"annotations": {
"title": "Supertypes",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "get_tool_support",
"title": "Tool Support",
"description": "Which tools are usable for which languages in this session, without making a failing call. Call it before using a tool on a new language. Per tool, `coverage` is `all`, `some`, `none`, `unknown` (a server is still initializing) or `always` (needs no language server); `routes` groups the languages (`languages`) that share a `status`: `supported`, `push_only` (no pull provider: `get_diagnostics` answers from the push cache), `capability_not_advertised`, `initializing` or `no_server`. `file_path` restricts the report to that file's language. `supported` means the call will be dispatched to a server advertising the capability, not that it will succeed: indexing, push-only diagnostics and respawn backoff can still fail it.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"file_path": {
"description": "Absolute path to a file; restricts the report to its language.",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"outputSchema": {
"$defs": {
"Capability": {
"description": "LSP server capability the tool is gated on.",
"type": "string"
},
"RouteShape": {
"description": "One route of a tool: the languages that share this support status.",
"oneOf": [
{
"description": "The routed server is registered and advertises the tool's capability.",
"properties": {
"server": {
"$ref": "#/$defs/ServerId",
"description": "The server the call would be dispatched to."
},
"status": {
"const": "supported",
"type": "string"
}
},
"required": [
"status",
"server"
],
"type": "object"
},
{
"description": "Registered and publishing diagnostics, but with no pull provider: answers come from the push cache.",
"properties": {
"server": {
"$ref": "#/$defs/ServerId",
"description": "The server the call would be dispatched to."
},
"status": {
"const": "push_only",
"type": "string"
}
},
"required": [
"status",
"server"
],
"type": "object"
},
{
"description": "The routed server is registered but does not advertise the capability.",
"properties": {
"capability": {
"$ref": "#/$defs/Capability",
"description": "The capability the server does not advertise."
},
"server": {
"$ref": "#/$defs/ServerId",
"description": "The server the call would be dispatched to."
},
"status": {
"const": "capability_not_advertised",
"type": "string"
}
},
"required": [
"status",
"server",
"capability"
],
"type": "object"
},
{
"description": "The routed server has not finished initializing, or its capabilities\nare not known yet.",
"properties": {
"status": {
"const": "initializing",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "No server is routed for this tool.",
"properties": {
"status": {
"const": "no_server",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
}
],
"properties": {
"languages": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
"type": "object"
},
"ServerId": {
"description": "Unique identity of a configured LSP server within a workspace.",
"type": "string"
},
"ToolCoverage": {
"description": "How widely a tool is usable across the languages in the report.",
"oneOf": [
{
"const": "all",
"description": "Supported for every listed language.",
"type": "string"
},
{
"const": "some",
"description": "Supported for some listed languages but not all.",
"type": "string"
},
{
"const": "none",
"description": "Supported for no listed language (or nothing is configured).",
"type": "string"
},
{
"const": "unknown",
"description": "Not supported anywhere yet, but at least one server is still initializing.",
"type": "string"
},
{
"const": "always",
"description": "Answered by mcpls itself; independent of language servers.",
"type": "string"
}
]
},
"ToolEntry": {
"description": "One tool in the report.",
"properties": {
"coverage": {
"$ref": "#/$defs/ToolCoverage"
},
"name": {
"type": "string"
},
"routes": {
"anyOf": [
{
"$ref": "#/$defs/ToolRoutes"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"coverage"
],
"type": "object"
},
"ToolRoutes": {
"items": {
"$ref": "#/$defs/RouteShape"
},
"type": "array"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"languages": {
"items": {
"type": "string"
},
"type": "array"
},
"tools": {
"items": {
"$ref": "#/$defs/ToolEntry"
},
"type": "array"
}
},
"required": [
"languages",
"tools"
],
"type": "object"
},
"annotations": {
"title": "Tool Support",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "go_to_declaration",
"title": "Go to Declaration",
"description": "Declaration location of the symbol at position. Differs from go-to-definition for languages that separate declaration from definition (C/C++ headers, interface members); servers without a declaration concept may return the definition. An empty result is valid. Capped at a fixed maximum; `truncated: true` on the result means more locations exist than are returned. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. Pass `context: \"enclosing_symbol\"` to attach `enclosing_symbol` to each item: `status` `resolved` (with `name_path`, `kind`, `range`, `fidelity`), `top_level` (no symbol contains it), `not_computed` or `unavailable` (with a `reason`; nothing is known, never read as top level). Costs one documentSymbol request per distinct file, capped per call; `enrichment` reports files enriched or skipped and `cut_short`. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"ResultContext": {
"description": "Extra context a tool can attach to each returned item.",
"oneOf": [
{
"const": "none",
"type": "string"
},
{
"const": "enclosing_symbol",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"description": "Character/column number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"context": {
"$ref": "#/$defs/ResultContext",
"default": "none",
"description": "Extra context: `none` (default) or `enclosing_symbol` (innermost symbol, one request per file)."
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"line",
"character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"ContextualLocation": {
"description": "An item optionally carrying its enclosing symbol.",
"properties": {
"enclosing_symbol": {
"$ref": "#/$defs/EnclosingSymbolOutcome"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"range"
],
"type": "object"
},
"EnclosingSymbol": {
"description": "The innermost symbol containing an item.",
"properties": {
"fidelity": {
"$ref": "#/$defs/SymbolFidelity"
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name_path": {
"items": {
"type": "string"
},
"type": "array"
},
"range": {
"$ref": "#/$defs/Range"
}
},
"required": [
"name_path",
"kind",
"range",
"fidelity"
],
"type": "object"
},
"EnclosingSymbolOutcome": {
"description": "What is known about the enclosing symbol of one item.",
"oneOf": [
{
"$ref": "#/$defs/EnclosingSymbol",
"properties": {
"status": {
"const": "resolved",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"properties": {
"status": {
"const": "top_level",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The lookup was skipped.",
"properties": {
"reason": {
"$ref": "#/$defs/NotComputedReason",
"description": "Why it was skipped."
},
"status": {
"const": "not_computed",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
},
{
"properties": {
"reason": {
"$ref": "#/$defs/UnavailableReason",
"description": "Why it failed."
},
"status": {
"const": "unavailable",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
}
]
},
"EnrichmentSummary": {
"description": "Result-level statement about how complete the enrichment is.",
"properties": {
"cut_short": {
"type": "boolean"
},
"files_enriched": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"files_skipped": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"required": [
"files_enriched",
"files_skipped",
"cut_short"
],
"type": "object"
},
"NotComputedReason": {
"description": "Why an item's enclosing symbol was not looked up.",
"oneOf": [
{
"const": "file_cap",
"type": "string"
},
{
"const": "out_of_workspace",
"type": "string"
},
{
"const": "tracker_limit",
"type": "string"
},
{
"const": "deadline",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"SymbolFidelity": {
"description": "How much ancestry an [`EnclosingSymbol`] name path carries.",
"oneOf": [
{
"const": "hierarchical",
"type": "string"
},
{
"const": "flat",
"type": "string"
}
]
},
"UnavailableReason": {
"description": "Why a lookup was attempted but yielded no symbol tree.",
"oneOf": [
{
"const": "capability_absent",
"type": "string"
},
{
"const": "request_failed",
"type": "string"
},
{
"const": "timed_out",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"enrichment": {
"$ref": "#/$defs/EnrichmentSummary",
"description": "Set only with `context: \"enclosing_symbol\"`: how many files were enriched or skipped."
},
"locations": {
"description": "Locations found.",
"items": {
"$ref": "#/$defs/ContextualLocation"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `locations` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"locations"
],
"type": "object"
},
"annotations": {
"title": "Go to Declaration",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "go_to_implementation",
"title": "Go to Implementation",
"description": "Implementation locations of a trait method or interface member. Capped at a fixed maximum for an extremely common trait/interface; `truncated: true` on the result means more implementations exist than are returned. Aim it with `line` + `character`, or with `symbol_name` (optionally narrowed by `symbol_kind` and `container`) for a symbol defined in the file: the result then carries `resolved_symbol` with the position that was queried. A name matching several symbols, none, or an unverifiable position fails with the candidates or the reason instead of guessing. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. Pass `context: \"enclosing_symbol\"` to attach `enclosing_symbol` to each item: `status` `resolved` (with `name_path`, `kind`, `range`, `fidelity`), `top_level` (no symbol contains it), `not_computed` or `unavailable` (with a `reason`; nothing is known, never read as top level). Costs one documentSymbol request per distinct file, capped per call; `enrichment` reports files enriched or skipped and `cut_short`. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"ResultContext": {
"description": "Extra context a tool can attach to each returned item.",
"oneOf": [
{
"const": "none",
"type": "string"
},
{
"const": "enclosing_symbol",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"default": null,
"description": "Character/column number (1-based). Give with `line`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"container": {
"default": null,
"description": "With `symbol_name`: keep only symbols inside a container (type, impl, class, module) of this name.",
"type": [
"string",
"null"
]
},
"context": {
"$ref": "#/$defs/ResultContext",
"default": "none",
"description": "Extra context: `none` (default) or `enclosing_symbol` (innermost symbol, one request per file)."
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"default": null,
"description": "Line number (1-based). Give with `character`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"symbol_kind": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "With `symbol_name`: keep only symbols of this kind, by name (function, method, class, struct, ...)"
},
"symbol_name": {
"default": null,
"description": "Name of a symbol defined in this file, instead of `line`/`character`.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"ContextualLocation": {
"description": "An item optionally carrying its enclosing symbol.",
"properties": {
"enclosing_symbol": {
"$ref": "#/$defs/EnclosingSymbolOutcome"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"range"
],
"type": "object"
},
"EnclosingSymbol": {
"description": "The innermost symbol containing an item.",
"properties": {
"fidelity": {
"$ref": "#/$defs/SymbolFidelity"
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name_path": {
"items": {
"type": "string"
},
"type": "array"
},
"range": {
"$ref": "#/$defs/Range"
}
},
"required": [
"name_path",
"kind",
"range",
"fidelity"
],
"type": "object"
},
"EnclosingSymbolOutcome": {
"description": "What is known about the enclosing symbol of one item.",
"oneOf": [
{
"$ref": "#/$defs/EnclosingSymbol",
"properties": {
"status": {
"const": "resolved",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"properties": {
"status": {
"const": "top_level",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The lookup was skipped.",
"properties": {
"reason": {
"$ref": "#/$defs/NotComputedReason",
"description": "Why it was skipped."
},
"status": {
"const": "not_computed",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
},
{
"properties": {
"reason": {
"$ref": "#/$defs/UnavailableReason",
"description": "Why it failed."
},
"status": {
"const": "unavailable",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
}
]
},
"EnrichmentSummary": {
"description": "Result-level statement about how complete the enrichment is.",
"properties": {
"cut_short": {
"type": "boolean"
},
"files_enriched": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"files_skipped": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"required": [
"files_enriched",
"files_skipped",
"cut_short"
],
"type": "object"
},
"NotComputedReason": {
"description": "Why an item's enclosing symbol was not looked up.",
"oneOf": [
{
"const": "file_cap",
"type": "string"
},
{
"const": "out_of_workspace",
"type": "string"
},
{
"const": "tracker_limit",
"type": "string"
},
{
"const": "deadline",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"PositionSource": {
"description": "Where the queried position of a name-addressed call came from.",
"oneOf": [
{
"const": "selection_range",
"type": "string"
},
{
"const": "inferred",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"ResolvedSymbol": {
"properties": {
"container": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"position": {
"$ref": "#/$defs/Position2D"
},
"position_source": {
"$ref": "#/$defs/PositionSource"
}
},
"required": [
"name",
"kind",
"position",
"position_source"
],
"type": "object"
},
"SymbolFidelity": {
"description": "How much ancestry an [`EnclosingSymbol`] name path carries.",
"oneOf": [
{
"const": "hierarchical",
"type": "string"
},
{
"const": "flat",
"type": "string"
}
]
},
"UnavailableReason": {
"description": "Why a lookup was attempted but yielded no symbol tree.",
"oneOf": [
{
"const": "capability_absent",
"type": "string"
},
{
"const": "request_failed",
"type": "string"
},
{
"const": "timed_out",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"enrichment": {
"$ref": "#/$defs/EnrichmentSummary",
"description": "Set only with `context: \"enclosing_symbol\"`: how many files were enriched or skipped."
},
"locations": {
"description": "Locations found.",
"items": {
"$ref": "#/$defs/ContextualLocation"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"resolved_symbol": {
"anyOf": [
{
"$ref": "#/$defs/ResolvedSymbol"
},
{
"type": "null"
}
],
"description": "Set only for a name-addressed call."
},
"truncated": {
"description": "Whether `locations` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"locations"
],
"type": "object"
},
"annotations": {
"title": "Go to Implementation",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "go_to_type_definition",
"title": "Go to Type Definition",
"description": "Type definition location of an expression or symbol. Distinct from go-to-definition for variable bindings. Capped at a fixed maximum for a pathological case; `truncated: true` on the result means more locations exist than are returned. Aim it with `line` + `character`, or with `symbol_name` (optionally narrowed by `symbol_kind` and `container`) for a symbol defined in the file: the result then carries `resolved_symbol` with the position that was queried. A name matching several symbols, none, or an unverifiable position fails with the candidates or the reason instead of guessing. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. Pass `context: \"enclosing_symbol\"` to attach `enclosing_symbol` to each item: `status` `resolved` (with `name_path`, `kind`, `range`, `fidelity`), `top_level` (no symbol contains it), `not_computed` or `unavailable` (with a `reason`; nothing is known, never read as top level). Costs one documentSymbol request per distinct file, capped per call; `enrichment` reports files enriched or skipped and `cut_short`. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$defs": {
"ResultContext": {
"description": "Extra context a tool can attach to each returned item.",
"oneOf": [
{
"const": "none",
"type": "string"
},
{
"const": "enclosing_symbol",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"default": null,
"description": "Character/column number (1-based). Give with `line`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"container": {
"default": null,
"description": "With `symbol_name`: keep only symbols inside a container (type, impl, class, module) of this name.",
"type": [
"string",
"null"
]
},
"context": {
"$ref": "#/$defs/ResultContext",
"default": "none",
"description": "Extra context: `none` (default) or `enclosing_symbol` (innermost symbol, one request per file)."
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"default": null,
"description": "Line number (1-based). Give with `character`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"symbol_kind": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "With `symbol_name`: keep only symbols of this kind, by name (function, method, class, struct, ...)"
},
"symbol_name": {
"default": null,
"description": "Name of a symbol defined in this file, instead of `line`/`character`.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"ContextualLocation": {
"description": "An item optionally carrying its enclosing symbol.",
"properties": {
"enclosing_symbol": {
"$ref": "#/$defs/EnclosingSymbolOutcome"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"range"
],
"type": "object"
},
"EnclosingSymbol": {
"description": "The innermost symbol containing an item.",
"properties": {
"fidelity": {
"$ref": "#/$defs/SymbolFidelity"
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name_path": {
"items": {
"type": "string"
},
"type": "array"
},
"range": {
"$ref": "#/$defs/Range"
}
},
"required": [
"name_path",
"kind",
"range",
"fidelity"
],
"type": "object"
},
"EnclosingSymbolOutcome": {
"description": "What is known about the enclosing symbol of one item.",
"oneOf": [
{
"$ref": "#/$defs/EnclosingSymbol",
"properties": {
"status": {
"const": "resolved",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"properties": {
"status": {
"const": "top_level",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The lookup was skipped.",
"properties": {
"reason": {
"$ref": "#/$defs/NotComputedReason",
"description": "Why it was skipped."
},
"status": {
"const": "not_computed",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
},
{
"properties": {
"reason": {
"$ref": "#/$defs/UnavailableReason",
"description": "Why it failed."
},
"status": {
"const": "unavailable",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
}
]
},
"EnrichmentSummary": {
"description": "Result-level statement about how complete the enrichment is.",
"properties": {
"cut_short": {
"type": "boolean"
},
"files_enriched": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"files_skipped": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"required": [
"files_enriched",
"files_skipped",
"cut_short"
],
"type": "object"
},
"NotComputedReason": {
"description": "Why an item's enclosing symbol was not looked up.",
"oneOf": [
{
"const": "file_cap",
"type": "string"
},
{
"const": "out_of_workspace",
"type": "string"
},
{
"const": "tracker_limit",
"type": "string"
},
{
"const": "deadline",
"type": "string"
}
]
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"PositionSource": {
"description": "Where the queried position of a name-addressed call came from.",
"oneOf": [
{
"const": "selection_range",
"type": "string"
},
{
"const": "inferred",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"ResolvedSymbol": {
"properties": {
"container": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"position": {
"$ref": "#/$defs/Position2D"
},
"position_source": {
"$ref": "#/$defs/PositionSource"
}
},
"required": [
"name",
"kind",
"position",
"position_source"
],
"type": "object"
},
"SymbolFidelity": {
"description": "How much ancestry an [`EnclosingSymbol`] name path carries.",
"oneOf": [
{
"const": "hierarchical",
"type": "string"
},
{
"const": "flat",
"type": "string"
}
]
},
"UnavailableReason": {
"description": "Why a lookup was attempted but yielded no symbol tree.",
"oneOf": [
{
"const": "capability_absent",
"type": "string"
},
{
"const": "request_failed",
"type": "string"
},
{
"const": "timed_out",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"enrichment": {
"$ref": "#/$defs/EnrichmentSummary",
"description": "Set only with `context: \"enclosing_symbol\"`: how many files were enriched or skipped."
},
"locations": {
"description": "Locations found.",
"items": {
"$ref": "#/$defs/ContextualLocation"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"resolved_symbol": {
"anyOf": [
{
"$ref": "#/$defs/ResolvedSymbol"
},
{
"type": "null"
}
],
"description": "Set only for a name-addressed call."
},
"truncated": {
"description": "Whether `locations` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"locations"
],
"type": "object"
},
"annotations": {
"title": "Go to Type Definition",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "prepare_call_hierarchy",
"title": "Prepare Call Hierarchy",
"description": "Prepare call hierarchy for a symbol. Returns callable items for incoming/outgoing call analysis, capped at a fixed maximum; `truncated: true` on the result means more exist than are returned. Aim it with `line` + `character`, or with `symbol_name` (optionally narrowed by `symbol_kind` and `container`) for a symbol defined in the file: the result then carries `resolved_symbol` with the position that was queried. A name matching several symbols, none, or an unverifiable position fails with the candidates or the reason instead of guessing. `indexing_in_progress: true`: the routed server was still indexing, so an empty or partial result may be incomplete. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"default": null,
"description": "Character/column number (1-based). Give with `line`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"container": {
"default": null,
"description": "With `symbol_name`: keep only symbols inside a container (type, impl, class, module) of this name.",
"type": [
"string",
"null"
]
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"default": null,
"description": "Line number (1-based). Give with `character`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"symbol_kind": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "With `symbol_name`: keep only symbols of this kind, by name (function, method, class, struct, ...)"
},
"symbol_name": {
"default": null,
"description": "Name of a symbol defined in this file, instead of `line`/`character`.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"HierarchyItem": {
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"PositionSource": {
"description": "Where the queried position of a name-addressed call came from.",
"oneOf": [
{
"const": "selection_range",
"type": "string"
},
{
"const": "inferred",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"ResolvedSymbol": {
"properties": {
"container": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"position": {
"$ref": "#/$defs/Position2D"
},
"position_source": {
"$ref": "#/$defs/PositionSource"
}
},
"required": [
"name",
"kind",
"position",
"position_source"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"indexing_in_progress": {
"description": "`true` if the routed server reported workspace indexing in progress during this read.",
"type": "boolean"
},
"items": {
"description": "List of callable items at the position.",
"items": {
"$ref": "#/$defs/HierarchyItem"
},
"type": "array"
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"resolved_symbol": {
"anyOf": [
{
"$ref": "#/$defs/ResolvedSymbol"
},
{
"type": "null"
}
],
"description": "Set only for a name-addressed call."
},
"truncated": {
"description": "Whether `items` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"items",
"indexing_in_progress"
],
"type": "object"
},
"annotations": {
"title": "Prepare Call Hierarchy",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "prepare_rename",
"title": "Prepare Rename",
"description": "Whether the symbol at position can be renamed, before proposing a rename. `status` is `renameable` (with the identifier `range` and, when the server gives it, `placeholder`), `default_behavior` (rename is accepted but the server gives no range) or `not_renameable` (optionally with the server's `server_message`). Unsupported servers are refused with a capability error instead. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"description": "Character/column number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"line",
"character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"description": "The identifier can be renamed.",
"properties": {
"placeholder": {
"description": "Current name of the identifier, when the server supplies it.",
"type": [
"string",
"null"
]
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the identifier that a rename would replace."
},
"status": {
"const": "renameable",
"type": "string"
}
},
"required": [
"status",
"range"
],
"type": "object"
},
{
"description": "The server accepts a rename here but leaves the identifier range to the client.",
"properties": {
"status": {
"const": "default_behavior",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The position cannot be renamed.",
"properties": {
"server_message": {
"description": "The server's own explanation, when it reported one as an error.",
"type": [
"string",
"null"
]
},
"status": {
"const": "not_renameable",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
}
],
"properties": {
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
}
},
"type": "object"
},
"annotations": {
"title": "Prepare Rename",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "prepare_type_hierarchy",
"title": "Prepare Type Hierarchy",
"description": "Prepare type hierarchy at position. Returns type items (classes, interfaces, structs) to pass to get_supertypes / get_subtypes, capped at a fixed maximum; `truncated: true` on the result means more exist than are returned. `indexing_in_progress: true`: the routed server was still indexing, so an empty or partial result may be incomplete. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"description": "Character/column number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"file_path",
"line",
"character"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"HierarchyItem": {
"description": "A call or type hierarchy item.",
"properties": {
"data": {},
"detail": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"description": "Name of the symbol.",
"type": "string"
},
"out_of_workspace": {
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range of the symbol."
},
"selectionRange": {
"$ref": "#/$defs/Range"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"name",
"kind",
"uri",
"range",
"selectionRange"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"indexing_in_progress": {
"description": "`true` if the routed server reported workspace indexing in progress during this read.",
"type": "boolean"
},
"items": {
"description": "Type hierarchy items at the position, or the supertypes/subtypes of\nthe queried item.",
"items": {
"$ref": "#/$defs/HierarchyItem"
},
"type": "array"
},
"positions_degraded": {
"$ref": "#/$defs/PositionDegradation",
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"truncated": {
"description": "Whether `items` was capped below the server's full response.",
"type": "boolean"
}
},
"required": [
"items",
"indexing_in_progress"
],
"type": "object"
},
"annotations": {
"title": "Prepare Type Hierarchy",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "rename_symbol",
"title": "Rename Symbol",
"description": "Rename symbol across workspace. Returns text edits for all files where symbol is used. A non-empty `dropped` field means some edits were withheld (e.g. out-of-workspace files, or `exceeds_item_cap` when a file's edits exceed the fixed maximum) -- the rename is then incomplete even though `changes` is non-empty. Aim it with `line` + `character`, or with `symbol_name` (optionally narrowed by `symbol_kind` and `container`) for a symbol defined in the file: the result then carries `resolved_symbol` with the position that was queried. A name matching several symbols, none, or an unverifiable position fails with the candidates or the reason instead of guessing. An ambiguous name never produces an edit. `positions_degraded` (non-UTF-16 servers only): `\"request\"` means the queried position was sent unconverted, so the result may describe a different symbol and should not be trusted; `\"response\"` means only returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"character": {
"default": null,
"description": "Character/column number (1-based). Give with `line`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"container": {
"default": null,
"description": "With `symbol_name`: keep only symbols inside a container (type, impl, class, module) of this name.",
"type": [
"string",
"null"
]
},
"file_path": {
"description": "Absolute path to the file.",
"type": "string"
},
"line": {
"default": null,
"description": "Line number (1-based). Give with `character`, instead of `symbol_name`.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"new_name": {
"description": "New name for the symbol (non-blank, at most 1000 bytes).",
"type": "string"
},
"symbol_kind": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "With `symbol_name`: keep only symbols of this kind, by name (function, method, class, struct, ...)"
},
"symbol_name": {
"default": null,
"description": "Name of a symbol defined in this file, instead of `line`/`character`.",
"type": [
"string",
"null"
]
}
},
"required": [
"file_path",
"new_name"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"DocumentChanges": {
"description": "Changes to a document.",
"properties": {
"edits": {
"description": "List of edits to apply.",
"items": {
"$ref": "#/$defs/TextEdit"
},
"type": "array"
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"edits"
],
"type": "object"
},
"DroppedEdits": {
"properties": {
"exceeds_item_cap": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"out_of_workspace": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"shadowed_by_changes": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"unsupported_file_operation": {
"format": "uint",
"minimum": 0,
"type": "integer"
},
"unsupported_snippet_edit": {
"format": "uint",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"PositionSource": {
"description": "Where the queried position of a name-addressed call came from.",
"oneOf": [
{
"const": "selection_range",
"type": "string"
},
{
"const": "inferred",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"ResolvedSymbol": {
"properties": {
"container": {
"type": [
"string",
"null"
]
},
"kind": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"position": {
"$ref": "#/$defs/Position2D"
},
"position_source": {
"$ref": "#/$defs/PositionSource"
}
},
"required": [
"name",
"kind",
"position",
"position_source"
],
"type": "object"
},
"TextEdit": {
"description": "A text edit operation.",
"properties": {
"new_text": {
"description": "New text.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range to replace."
}
},
"required": [
"range",
"new_text"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"changes": {
"description": "Changes to apply across documents.",
"items": {
"$ref": "#/$defs/DocumentChanges"
},
"type": "array"
},
"dropped": {
"$ref": "#/$defs/DroppedEdits",
"description": "Entries withheld from `changes` -- see [`DroppedEdits`]."
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"resolved_symbol": {
"anyOf": [
{
"$ref": "#/$defs/ResolvedSymbol"
},
{
"type": "null"
}
],
"description": "Set only for a name-addressed call."
}
},
"required": [
"changes"
],
"type": "object"
},
"annotations": {
"title": "Rename Symbol",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
},
{
"name": "restart_server",
"title": "Restart Server",
"description": "Restart LSP servers: stop the old process (graceful shutdown, then a kill of its whole process group) and start a fresh one, discarding its in-memory state. Use it when a server is wedged or serves a stale index (such as after a manifest edit). Give `servers` (ids) or `all: true`. Per server, `status` is `restarted` (with `indexing_state`; `coalesced: true` if another restart of the same server just finished; `push_notifications_degraded: true` means call it again), `failed` (with a typed `reason`; the server stays registered; `refused` means nothing was stopped and the old process keeps serving, any other reason means it was stopped and the next tool call retries), `throttled` (retry after `retry_in_ms`), `initializing` or `not_running`. Requests in flight on the old process fail with a retryable error. Processes that detach into their own session may survive; shared daemons the server started (e.g. Gradle) are killed. Destructive (it kills processes the server started, which other clients may share), not read-only and not idempotent.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"all": {
"default": false,
"description": "Set to true to restart every configured server.",
"type": "boolean"
},
"servers": {
"default": null,
"description": "Ids of the servers to restart; an unknown id is rejected with the list of configured ids. Non-empty.",
"items": {
"maxLength": 256,
"type": "string"
},
"maxItems": 64,
"type": [
"array",
"null"
]
}
},
"type": "object"
},
"outputSchema": {
"$defs": {
"IndexingState": {
"description": "Workspace-indexing readiness of a routed LSP server.",
"oneOf": [
{
"const": "unknown",
"description": "No recognized workspace-readiness signal has been observed for this\nserver yet.",
"type": "string"
},
{
"const": "loading",
"description": "A recognized signal reported that indexing is still in progress.",
"type": "string"
},
{
"const": "ready",
"description": "A recognized signal reported that the initial workspace load is\ncomplete.",
"type": "string"
}
]
},
"RestartFailure": {
"description": "Why a restart failed.",
"oneOf": [
{
"description": "Refused before the old process was stopped, which keeps serving.",
"properties": {
"kind": {
"const": "refused",
"type": "string"
},
"message": {
"description": "Why the restart was refused.",
"type": "string"
}
},
"required": [
"kind",
"message"
],
"type": "object"
},
{
"description": "The replacement process could not be started.",
"properties": {
"kind": {
"const": "spawn_failed",
"type": "string"
},
"message": {
"description": "Why the spawn failed.",
"type": "string"
}
},
"required": [
"kind",
"message"
],
"type": "object"
},
{
"description": "The replacement started but did not complete the `initialize` handshake.",
"properties": {
"kind": {
"const": "initialize_failed",
"type": "string"
},
"message": {
"description": "Why initialization failed.",
"type": "string"
}
},
"required": [
"kind",
"message"
],
"type": "object"
},
{
"description": "mcpls is shutting down, so no replacement was started.",
"properties": {
"kind": {
"const": "shutting_down",
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
}
]
},
"ServerId": {
"description": "Unique identity of a configured LSP server within a workspace.",
"type": "string"
},
"ServerRestartEntry": {
"description": "One server's entry in a [`RestartServerResult`].",
"oneOf": [
{
"description": "The server runs a freshly initialized process.",
"properties": {
"coalesced": {
"description": "Another restart of this server finished while the request waited, so none was repeated.",
"type": "boolean"
},
"indexing_state": {
"$ref": "#/$defs/IndexingState",
"description": "Indexing readiness of the new process."
},
"push_notifications_degraded": {
"description": "Push diagnostics for this server are still not live.",
"type": "boolean"
},
"status": {
"const": "restarted",
"type": "string"
}
},
"required": [
"status",
"coalesced",
"indexing_state",
"push_notifications_degraded"
],
"type": "object"
},
{
"description": "The restart failed; see [`RestartFailure`].",
"properties": {
"reason": {
"$ref": "#/$defs/RestartFailure",
"description": "Why it failed."
},
"status": {
"const": "failed",
"type": "string"
}
},
"required": [
"status",
"reason"
],
"type": "object"
},
{
"description": "The server was restarted too recently; retry after `retry_in_ms`.",
"properties": {
"retry_in_ms": {
"description": "Milliseconds until a restart is allowed again.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"status": {
"const": "throttled",
"type": "string"
}
},
"required": [
"status",
"retry_in_ms"
],
"type": "object"
},
{
"description": "The server has not finished its initial startup; retry shortly.",
"properties": {
"status": {
"const": "initializing",
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
{
"description": "The server never started (or failed at startup), so there is no\nprocess to restart.",
"properties": {
"message": {
"description": "Why the server is not running.",
"type": "string"
},
"status": {
"const": "not_running",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
],
"properties": {
"server_id": {
"$ref": "#/$defs/ServerId",
"description": "The server this entry reports on."
}
},
"required": [
"server_id"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"servers": {
"description": "Per-server outcomes.",
"items": {
"$ref": "#/$defs/ServerRestartEntry"
},
"type": "array"
}
},
"required": [
"servers"
],
"type": "object"
},
"annotations": {
"title": "Restart Server",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false
}
},
{
"name": "workspace_symbol_search",
"title": "Workspace Symbol Search",
"description": "Search workspace symbols by name. Supports partial matching and fuzzy search. `limit` is capped at a fixed server-side maximum regardless of the value requested; `truncated: true` on the result means more matches exist than are returned. `positions_degraded: \"response\"` (non-UTF-16 servers only) means some returned `character` offsets may be inexact. `out_of_workspace: true` means not provably inside a configured workspace root (lexical, advisory). On an empty result, `index_coverage` gives `synced_documents` (documents currently synced) and `server_restarted` (once true, stays true); the server may not index other files, so not proof of absence.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"kind_filter": {
"anyOf": [
{
"anyOf": [
{
"enum": [
"file",
"module",
"namespace",
"package",
"class",
"method",
"property",
"field",
"constructor",
"enum",
"interface",
"function",
"variable",
"constant",
"string",
"number",
"boolean",
"array",
"object",
"key",
"null",
"enummember",
"struct",
"event",
"operator",
"typeparameter"
]
},
{
"pattern": "^[0-9]+$"
}
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional symbol kind filter: a name (function, class) or the numeric LSP `SymbolKind`."
},
"limit": {
"default": 100,
"description": "Maximum results to return (default: 100).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"query": {
"description": "Search query for symbol names (supports partial matching).",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"outputSchema": {
"$defs": {
"IndexCoverage": {
"description": "What an empty references or workspace-symbol answer covers.",
"properties": {
"server_restarted": {
"type": "boolean"
},
"synced_documents": {
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"synced_documents"
],
"type": "object"
},
"Location": {
"description": "Location in a document.",
"properties": {
"out_of_workspace": {
"description": "Whether this location is not provably inside a configured workspace root (stdlib, a dependency).",
"type": "boolean"
},
"range": {
"$ref": "#/$defs/Range",
"description": "Range within the document."
},
"uri": {
"description": "URI of the document.",
"type": "string"
}
},
"required": [
"uri",
"range"
],
"type": "object"
},
"Position2D": {
"description": "Position in a document (1-based for MCP).",
"properties": {
"character": {
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"line": {
"description": "Line number (1-based).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"required": [
"line",
"character"
],
"type": "object"
},
"PositionDegradation": {
"description": "How a non-UTF-16 server's `character` offsets became inexact in a result.",
"oneOf": [
{
"const": "response",
"type": "string"
},
{
"const": "request",
"type": "string"
}
]
},
"Range": {
"description": "Range in a document (1-based for MCP).",
"properties": {
"end": {
"$ref": "#/$defs/Position2D",
"description": "End position."
},
"start": {
"$ref": "#/$defs/Position2D",
"description": "Start position."
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"WorkspaceSymbol": {
"description": "A workspace symbol.",
"properties": {
"container_name": {
"description": "Optional container name (parent scope).",
"type": [
"string",
"null"
]
},
"kind": {
"description": "LSP numeric symbol kind (e.g. 12 for Function).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"location": {
"$ref": "#/$defs/Location",
"description": "Location of the symbol."
},
"name": {
"description": "Name of the symbol.",
"type": "string"
}
},
"required": [
"name",
"kind",
"location"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"index_coverage": {
"$ref": "#/$defs/IndexCoverage",
"description": "Set only when the server itself answered with no symbols: what its answer covers."
},
"positions_degraded": {
"anyOf": [
{
"$ref": "#/$defs/PositionDegradation"
},
{
"type": "null"
}
],
"description": "Set only when some `character` offsets are inexact (non-UTF-16 servers); omitted otherwise."
},
"symbols": {
"description": "List of symbols found.",
"items": {
"$ref": "#/$defs/WorkspaceSymbol"
},
"type": "array"
},
"truncated": {
"description": "Whether more symbols matched than `symbols` returns.",
"type": "boolean"
}
},
"required": [
"symbols"
],
"type": "object"
},
"annotations": {
"title": "Workspace Symbol Search",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true
}
}
]