Skip to main content
Glama
beruang
by beruang

MCP LSP — Code Intelligence Server

Node.js TypeScript MCP License

A Model Context Protocol (MCP) stdio server that wraps language servers to expose a safe, read-oriented code-intelligence tool surface for coding agents. Supports TypeScript, JavaScript, Python, Go, and Rust — 59 tools across navigation, diagnostics, refactoring, deep understanding, hierarchy, lifecycle, and operations.


Table of Contents


Related MCP server: lsp-tools-mcp

Quick Start

# Prerequisites: install language servers
npm install -g typescript-language-server pyright
# Go and Rust: install gopls and rust-analyzer via your package manager

# Clone and install
git clone https://github.com/beruang/lsp-mcp.git
cd lsp-mcp
pnpm install

# Build
pnpm run build

# Point at a workspace and start
WORKSPACE_PATH=/path/to/your/project node dist/index.js

Connect any MCP client to the server's stdio transport.


Prerequisites

Dependency

Version

Purpose

Node.js

>= 20

Runtime

pnpm

Package management

typescript-language-server

TypeScript/JavaScript LSP backend

pyright-langserver

Python LSP backend

gopls

Go LSP backend

rust-analyzer

Rust LSP backend

Language servers must be on $PATH. The server checks availability via lsp_list_supported_languages.


Installation

pnpm install

Dependencies: @modelcontextprotocol/sdk, vscode-jsonrpc, vscode-languageserver-types, zod, diff.


Configuration

Environment Variables

Variable

Required

Default

Description

WORKSPACE_PATH

No

process.cwd()

Absolute path to the workspace root

Runtime Config (V4)

Variable

Default

Description

LSP_MAX_REFERENCES

200

Max references returned

LSP_MAX_WORKSPACE_SYMBOLS

100

Max workspace symbols

LSP_MAX_DIAGNOSTICS

500

Max diagnostics

LSP_MAX_COMPLETION_ITEMS

50

Max completion items

LSP_MAX_CHANGED_FILES

100

Max files in rename preview

LSP_MAX_EDITS

1000

Max edits in workspace edit

LSP_MAX_CONTEXT_CHARACTERS

20000

Max context characters

LSP_TIMEOUT_HOVER_MS

3000

Hover timeout

LSP_TIMEOUT_DEFINITION_MS

5000

Definition timeout

LSP_TIMEOUT_REFERENCES_MS

10000

References timeout

LSP_REQUEST_LOG_MAX_ENTRIES

500

Request log ring buffer size

LSP_RAW_REQUEST_ENABLED

false

Enable debug raw request tool

LSP_VERBOSE_LOGGING

false

Verbose logging

Use lsp_get_config to inspect effective configuration and lsp_update_runtime_config to adjust limits, timeouts, cache TTLs, and debug flags at runtime (in-memory only).


Architecture

src/
├── index.ts                          # Entry point — MCP server bootstrap
├── config/
│   ├── languageServers.ts            # Language server registry
│   ├── defaults.ts                   # Default runtime config values
│   ├── envConfig.ts                  # Environment variable parsing
│   └── runtimeConfig.ts              # In-memory config merge + validation
├── lsp/
│   ├── LspClient.ts                  # LSP connection: spawn, initialize, request, shutdown
│   ├── LspClientManager.ts           # Per-language client pool + state queries
│   ├── LspState.ts                   # 8-state machine with validated transitions
│   ├── capabilities.ts               # Server capabilities extraction
│   ├── diagnosticsCache.ts           # publishDiagnostics notification cache
│   ├── documentStore.ts              # didOpen/didChange state tracking
│   └── normalize.ts                  # LSP → normalized shape converters
├── mcp/
│   ├── registerTools.ts              # All 59 MCP tool registrations
│   ├── toolErrors.ts                 # Structured error envelope
│   └── schemas.ts                    # Zod schemas
├── navigation/                       # V3: declaration, typeDef, implementation, signatureHelp, completion
├── hierarchy/                        # V3: call hierarchy + type hierarchy (prepare, incoming/outgoing, super/subtypes)
├── workspaceEdit/                    # V2: parse, validate, preview workspace edits
├── codeActions/                      # V2: code action cache + normalization
├── diagnostics/                      # V2: snapshot store, compare, wait-for-diagnostics
├── context/                          # V3: enclosing symbol, symbol context, file outline
├── analysis/                         # V3: change impact, fix candidates, explain diagnostics
├── formatting/                       # V2: format + range format preview
├── refactor/                         # V2: prepare rename, organize imports
├── composite/                        # V1: diagnostics summary, inspect symbol
├── diff/                             # V1: applyTextEdits, workspaceEditToDiff
├── semantic/                         # V3: fixDiagnosticCandidates, explainDiagnostics, analyzeChangeImpact
├── documents/                        # V4: open, close, sync, save, list documents
├── ops/                              # V4: server status, restart, shutdown, readiness, liveness, workspace status
├── observability/                    # V4: request tracker, request log
├── cache/                            # V4: cache status + selective clearing
├── debug/                            # V4: raw request (disabled by default, method denylist)
├── safety/
│   ├── paths.ts                      # Workspace containment check
│   └── limits.ts                     # Truncation caps and timeouts
└── utils/
    ├── asyncTimeout.ts               # Promise race with timeout
    ├── uri.ts                        # URI ↔ path conversion
    ├── symbols.ts                    # Symbol kind normalization
    ├── ids.ts                        # ID generation
    ├── text.ts                       # Text utilities
    └── time.ts                       # Time utilities

API Reference

Every tool returns either a success payload or a structured error:

{
  "error": {
    "code": "path_outside_workspace",
    "message": "Human-readable description",
    "details": {}
  }
}

Navigation & Discovery

Tool

LSP Method

Description

lsp_hover

textDocument/hover

Type information and documentation at cursor

lsp_definition

textDocument/definition

Go-to-definition locations

lsp_references

textDocument/references

Find all references to a symbol

lsp_document_symbols

textDocument/documentSymbol

Symbol outline for a file

lsp_workspace_symbols

workspace/symbol

Workspace-wide symbol search

lsp_declaration

textDocument/declaration

Go-to-declaration

lsp_type_definition

textDocument/typeDefinition

Go-to-type-definition

lsp_implementation

textDocument/implementation

Find implementations

Diagnostics

Tool

Description

lsp_diagnostics

Cached diagnostics for a file or workspace-wide

lsp_diagnostics_summary

Grouped diagnostics with root-cause heuristic

lsp_wait_for_diagnostics

Wait for fresh diagnostics after a change

lsp_snapshot_diagnostics

Save a named diagnostic snapshot for comparison

lsp_compare_diagnostics

Diff two diagnostic snapshots

lsp_explain_diagnostics

Cluster diagnostics and identify root causes

lsp_fix_diagnostic_candidates

Multi-source fix suggestions (hover + code actions + definition)

Refactoring & Editing

Tool

LSP Method

Description

lsp_rename_preview

textDocument/rename

Preview rename via WorkspaceEdit + unified diff

lsp_prepare_rename

textDocument/prepareRename

Check if rename is valid at a position

lsp_code_actions_preview

textDocument/codeAction

Preview code actions with diffs

lsp_resolve_code_action

codeAction/resolve

Resolve a cached code action

lsp_format_preview

textDocument/formatting

Preview formatting with diff

lsp_range_format_preview

textDocument/rangeFormatting

Preview range formatting with diff

lsp_organize_imports_preview

textDocument/organizeImports

Preview import organization with diff

lsp_workspace_edit_preview

Preview any WorkspaceEdit + unified diff

lsp_validate_workspace_edit

Validate WorkspaceEdit safety

Deep Understanding

Tool

LSP Method

Description

lsp_signature_help

textDocument/signatureHelp

Function signature at call site

lsp_completion

textDocument/completion

Code completion suggestions

lsp_inspect_symbol

composite

Aggregate: hover + definition + refs + risk hints

lsp_symbol_context

composite

Surrounding symbols at a position

lsp_enclosing_symbol

composite

Innermost enclosing symbol

lsp_file_outline

composite

File-level symbol outline

Hierarchy & Impact

Tool

LSP Method

Description

lsp_prepare_call_hierarchy

textDocument/prepareCallHierarchy

Prepare call hierarchy for a symbol

lsp_incoming_calls

callHierarchy/incomingCalls

Who calls this symbol

lsp_outgoing_calls

callHierarchy/outgoingCalls

What this symbol calls

lsp_prepare_type_hierarchy

textDocument/prepareTypeHierarchy

Prepare type hierarchy

lsp_supertypes

typeHierarchy/supertypes

Super-types of a symbol

lsp_subtypes

typeHierarchy/subtypes

Sub-types of a symbol

lsp_analyze_change_impact

composite

Cross-file impact analysis for a proposed change

Server Lifecycle

Tool

Description

lsp_server_status

Runtime status for all configured language servers

lsp_restart_server

Restart a language server (reopens docs, clears diagnostics)

lsp_shutdown_server

Graceful shutdown with timeout

lsp_list_supported_languages

Configured languages, extensions, commands, binary availability

lsp_get_capabilities

Normalized LSP capabilities per language

Document Lifecycle

Tool

LSP Method

Description

lsp_open_document

textDocument/didOpen

Register a document with the LSP server

lsp_close_document

textDocument/didClose

Unregister a document

lsp_sync_document

textDocument/didChange

Notify LSP of content changes

lsp_save_document

textDocument/didSave

Notify LSP of a save

lsp_list_open_documents

All currently tracked open documents

Health

Tool

Description

lsp_health_check

Server health and per-language LSP capabilities

lsp_readiness

Workspace + language server availability check

lsp_liveness

Fast liveness check + optional memory stats

Observability & Cache

Tool

Description

lsp_request_log

LSP request history with filtering

lsp_clear_request_log

Clear request log entries

lsp_cache_status

Entry counts for all internal caches

lsp_clear_caches

Selective or full cache clearing

Configuration

Tool

Description

lsp_get_config

Effective config (defaults → env → runtime overrides)

lsp_update_runtime_config

In-memory config updates (limits, timeouts, caches, debug)

Debug

Tool

Description

lsp_raw_request

Raw LSP request with method denylist (disabled by default)

Multi-Workspace

Tool

Description

lsp_list_workspaces

Known workspaces (foundation)

lsp_workspace_status

Status for a specific workspace (foundation)


Error Handling

Every tool returns errors in a uniform envelope:

{
  "error": {
    "code": "path_outside_workspace",
    "message": "Path is outside workspace: /etc/passwd",
    "details": {}
  }
}

Error Codes

Code

Trigger

path_outside_workspace

filePath does not resolve inside WORKSPACE_PATH

unsupported_language

File extension has no registered LSP server

file_not_found

File does not exist on disk

lsp_server_unavailable

Language server binary not on $PATH

lsp_server_not_initialized

Server not initialized

lsp_request_failed

LSP request returned an error

lsp_request_timeout

LSP request exceeded its deadline

lsp_capability_unsupported

Server does not support the capability

declaration_not_supported

Server lacks declaration provider

type_definition_not_supported

Server lacks type definition provider

implementation_not_supported

Server lacks implementation provider

signature_help_not_supported

Server lacks signature help provider

completion_not_supported

Server lacks completion provider

call_hierarchy_not_supported

Server lacks call hierarchy provider

call_hierarchy_item_not_found

Hierarchy item ID not found

call_hierarchy_item_expired

Hierarchy item TTL expired

type_hierarchy_not_supported

Server lacks type hierarchy provider

type_hierarchy_item_not_found

Type hierarchy item ID not found

type_hierarchy_item_expired

Type hierarchy item TTL expired

change_impact_analysis_incomplete

Change impact partial results

diagnostic_not_found

Diagnostic index not found

invalid_config_key

Unknown config key in update

invalid_config_value

Invalid config value (e.g., negative limit)

immutable_config_key

Attempt to change workspacePath at runtime

server_not_found

Language not configured

restart_rate_limited

Too many restarts in window

raw_request_disabled

Debug tool is disabled

method_denied

LSP method blocked by denylist

document_not_found

Document not in open documents store


Safety Model

The server is designed for read-oriented coding agents:

Guard

Mechanism

Workspace containment

Every file path validated against WORKSPACE_PATH

No file writes

All tools are read-only; lsp_rename_preview returns a diff but never applies edits

Result caps

All list results are truncated with configurable limits

Timeouts

Every LSP request has a per-method deadline

Structured errors

All errors use the uniform { error: { code, message, details } } envelope

Request log privacy

Logs method, duration, status — never full file contents (unless verbose logging explicitly enabled)

Method denylist

lsp_raw_request blocks workspace/applyEdit, workspace/executeCommand, and other dangerous methods

Restart rate limiting

Max 3 restarts per 60s per language

State machine validation

Invalid LSP state transitions are logged and rejected


Development

pnpm run typecheck     # TypeScript type-check
pnpm run lint          # ESLint (zero warnings)
pnpm run lint:fix      # ESLint auto-fix
pnpm run dev           # Run with tsx (no build)
pnpm run build         # Build to dist/
pnpm run start         # Start built artifact

Pre-commit Hook

husky + lint-staged:

  1. eslint --fix --max-warnings 0

  2. pnpm run typecheck

  3. pnpm run verify:decoupling

Conventions

  • Module system: ESM ("type": "module", NodeNext)

  • TypeScript: strict, target ES2022

  • Testing: node --test + tsx

  • Linting: ESLint with @typescript-eslint, zero-warnings policy


Testing

pnpm test              # All unit tests
npm run test:safety    # Safety tests
npm run test:integration  # Integration tests (requires language servers)

Coverage

  • 106+ tests across unit, integration, and safety suites

  • 5 languages: TypeScript, JavaScript, Python, Go, Rust

  • V1-V3 regression: all passing with every V4 change


Supported Languages

Language

Extensions

Language Server

Language ID

TypeScript

.ts, .tsx

typescript-language-server --stdio

typescript

JavaScript

.js, .jsx

typescript-language-server --stdio

typescript

Python

.py

pyright-langserver --stdio

python

Go

.go

gopls

go

Rust

.rs

rust-analyzer

rust

Adding a language:

  1. Entry in src/config/languageServers.ts

  2. Binary on $PATH

  3. Optional waitConfig in src/lsp/diagnosticsCache.ts


Troubleshooting

lsp_server_unavailable

which typescript-language-server pyright-langserver gopls rust-analyzer
npm install -g typescript-language-server pyright

Use lsp_list_supported_languages to check binary availability at runtime.

path_outside_workspace

Set WORKSPACE_PATH to the project root. Symlinks are resolved before containment check.

No diagnostics

Diagnostics are cached from publishDiagnostics notifications. For cold cache, use lsp_diagnostics with workspaceWide: true to trigger a warm-up pass, or lsp_wait_for_diagnostics.

Stale diagnostics after external edit

Use lsp_sync_document to notify the LSP of changes, then lsp_wait_for_diagnostics. For bulk recovery, lsp_restart_server with reopenDocuments: true.


Changelog

Version

Focus

Key Additions

V4

Production operations

Server lifecycle, document lifecycle, observability, cache, config, health, debug, multi-workspace (21 tools)

V3

Deep understanding

Hierarchy (call + type), declaration, type definition, implementation, signature help, completion, impact analysis (17 tools)

V2

Safe refactoring

Preview-first editing — rename, code actions, formatting, organize imports, diagnostics snapshots (11 tools)

V1

Semantic navigation

Hover, definition, references, symbols, diagnostics, rename preview, inspect (10 tools)


License

MIT

Available Tools

56 tools
lsp_analyze_change_impactA

Analyze the likely impact of changing a symbol using LSP-only semantic data. Composes hover, definition, type definition, implementation, references, call hierarchy, and diagnostics. Does NOT call AST tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) of the symbol.
changeKindNoType of change being considered.unknown
maxReferencesNoMaximum references to inspect.
includeCalleesNoInclude outgoing call hierarchy.
includeCallersNoInclude incoming call hierarchy.
includeImplementationsNoInclude implementation locations.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It mentions composing multiple LSP calls but does not disclose potential side effects, performance implications, or permissions needed. It adequately describes what it does but not the full behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with purpose, and contains no unnecessary words. Every sentence serves a clear function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters and no output schema, the description could explain what the output looks like (e.g., format or structure of the impact report). It covers the scope but lacks details on return values and full behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond parameter names and defaults; parameters like 'includeCallees' are self-explanatory but no extra context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies it analyzes the likely impact of changing a symbol using LSP-only semantic data, listing components like hover, definition, etc., and explicitly states it does not call AST tools, distinguishing it from many siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides context that it composes multiple LSP features and excludes AST tools, but lacks explicit guidance on when to use vs. not use, or alternatives among the many sibling tools like lsp_inspect_symbol or lsp_references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_cache_statusA

Return entry counts for all registered caches.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states a read operation, but lacks details on side effects, cost, or performance implications. For a monitoring tool, minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with zero wasted words. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should explain the return format. It says 'entry counts' but not whether it's a JSON object, array, or plain text. For a simple tool, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the description does not need to provide parameter semantics. The schema coverage is 100% implicitly, and the description adds no parameter-related info, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns entry counts for all registered caches. The verb 'Return' and resource 'entry counts' are specific and unambiguous. No sibling tool shares this purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. However, since there are no sibling cache tools, the context is self-contained. Implicitly, it's for checking cache status, but no when-not criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_clear_cachesA

Clear specified caches by name. Omit caches to clear all.

ParametersJSON Schema
NameRequiredDescriptionDefault
cachesNoCache names to clear. Omit or empty to clear all.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It states 'clear' (destructive) but doesn't disclose side effects, permissions, or reversibility. Moderately transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with action, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or annotations, but description is minimal yet covers core use case. For a destructive operation, slightly more context may be beneficial. Good enough given sibling context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100% and schema description already covers parameter. Description adds value by explicitly stating 'Omit caches to clear all', reinforcing behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Clear', resource 'caches', and specifies two modes: by name or all. It distinguishes from siblings like lsp_cache_status (status) and others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes when to use (clear caches) and the alternative of omitting to clear all. Does not explicitly say when not to use, but adequate for the tool's simplicity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_clear_request_logA

Clear request log entries. Omit all filters to clear everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNoClear only entries for this method.
statusNoClear only entries with this status.
languageNoClear only entries for this language.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'Clear' which implies destruction but does not mention permanence, reversibility, permissions, or side effects. This is a significant gap for a destructive action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero fluff. The first sentence states the action, the second gives a usage hint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 optional parameters and no output schema, the description is adequate but lacks detail on what happens after clearing (e.g., log is empty), any destructive nature confirmation, or return value. It is minimally viable but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter already has a description. The description adds the insight that omitting all filters clears everything, which reinforces the optional nature but does not add much new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Clear request log entries') and the resource ('request log'), distinguishing it from sibling tools like lsp_request_log (which reads the log) and lsp_clear_caches (which clears caches). The addition about filters adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Omit all filters to clear everything' instructs when to use filters vs. not. There is no explicit when-not-to-use or alternative tools, but the context is clear given the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_close_documentB

Close a document in the LSP server (textDocument/didClose) and remove it from tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
languageYesLanguage server to use.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behaviors. It states that the document is closed and removed from tracking, but does not explain side effects (e.g., loss of unsaved changes, whether the file itself is affected, or if the document must be open beforehand). This is insufficient for an agent to understand the full impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is clear, front-loaded, and free of unnecessary words. It effectively communicates the tool's purpose without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (simple close action) and the absence of output schema or annotations, the description is adequate but falls short of fully complete. It does not state that the document must be open first, nor does it mention the LSP notification aspect, which would be helpful for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters described. The description adds no additional meaning beyond the schema (e.g., filePath is described as 'Absolute or workspace-relative path,' language as 'Language server to use'). Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (close a document), identifies the LSP protocol method (textDocument/didClose), and specifies the effect (remove it from tracking). It effectively distinguishes from sibling tools like lsp_open_document and lsp_save_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks any guidance on when to use this tool versus alternatives (e.g., lsp_save_document, lsp_sync_document). It does not mention prerequisites (e.g., document must be open) or when not to use it (e.g., if unsaved changes exist).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_code_actions_previewA

Return available LSP code actions (quickfixes, refactors, source actions) for a range or diagnostic, with safe edit previews. No commands are executed and no files are written.

ParametersJSON Schema
NameRequiredDescriptionDefault
onlyNoFilter by code action kinds.
rangeNoSelection range.
filePathYesAbsolute or workspace-relative path to the file.
maxActionsNoMax actions to return.
includeDiffNoInclude diffs for edit actions.
diagnosticIndexesNoIndexes of diagnostics to target.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It explicitly states the tool is read-only and previews edits without executing commands or writing files, which is sufficient for a safe preview tool. It could mention that it relies on the LSP server, but that is implied by the tool family.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences. The first sentence states the main action, and the second clarifies safety. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters (including nested objects) and no output schema, the description is somewhat incomplete. It does not describe the return format (e.g., list of code actions with edits and diffs). The mention of 'safe edit previews' hints at the output but is insufficient. The agent would benefit from knowing what to expect in the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions. The description adds value by mentioning 'for a range or diagnostic,' which maps to the range and diagnosticIndexes parameters. This provides context but does not significantly surpass the schema's own descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Return' and the resource 'LSP code actions', enumerates types (quickfixes, refactors, source actions), and specifies the context (for a range or diagnostic). It distinguishes the tool from execution-related siblings like lsp_resolve_code_action by emphasizing safe edit previews and no execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that the tool returns previews without side effects, strongly implying use for reviewing actions before applying. It explicitly states 'No commands are executed and no files are written,' which guides the agent to use other tools (e.g., lsp_resolve_code_action) for actual application. However, it does not explicitly name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_compare_diagnosticsA

Compare two diagnostic snapshots to identify fixed, introduced, and unchanged diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterIdYesSnapshot ID to compare to.
beforeIdYesSnapshot ID to compare from.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description adequately discloses the tool's behavior: it compares snapshots and categorizes changes (fixed, introduced, unchanged). While it doesn't explicitly state if the operation is read-only or the return format, the stated purpose is transparent enough for an agent to understand the side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly conveys the tool's purpose with no extraneous words. It is well-structured and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only two parameters, no annotations, no output schema, and no nested objects, the description is reasonably complete. It explains the core functionality and hints at the output (identifying changes). However, a brief mention of output format or example would improve completeness. Still, for this complexity level, it's near the top.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameters with descriptions ('Snapshot ID to compare from' and 'Snapshot ID to compare to'). The tool description adds no additional semantics beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares two diagnostic snapshots to identify fixed, introduced, and unchanged diagnostics. It uses a specific verb (compare) and resource (diagnostic snapshots), distinguishing it from sibling tools like lsp_snapshot_diagnostics (create snapshots) and lsp_diagnostics (current diagnostics).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., creating snapshots via lsp_snapshot_diagnostics) or scenarios to avoid. This lack of contextual usage instructions limits agent decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_completionA

Return constrained completion candidates at a position without applying them. Maps to textDocument/completion. Read-only — never applies insertText or additionalTextEdits.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) for completion.
maxResultsNoMaximum number of completion items.
includeInsertTextNoInclude insert text in completion items.
includeDocumentationNoInclude documentation in completion items.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses the read-only behavior and explicitly states it never applies insertText or additionalTextEdits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each essential: first states purpose and mapping, second clarifies behavioral constraint. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, read-only nature, and mapping. Lacks output schema, but that is acceptable. Could mention that the file must be open, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage and comprehensive descriptions. The description adds minimal extra meaning beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'return constrained completion candidates at a position without applying them' and identifies the LSP mapping. It differentiates from siblings by emphasizing the read-only nature and that it never applies edits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for previewing completions without applying them, but lacks explicit when-to-use or alternatives guidance compared to other LSP tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_declarationA

Find declarations for a symbol. Maps to textDocument/declaration. Useful for C/C++ header/source split, TypeScript interfaces, Java abstract methods.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) of the symbol.
maxResultsNoMaximum number of results.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It states 'Maps to textDocument/declaration' implying a standard LSP query, but does not explicitly declare read-only behavior, side effects, or permissions. Adequate but could be more explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: purpose, protocol mapping, and usage examples. No fluff, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a nested position parameter and no output schema. The description adequately covers purpose and use cases but does not describe return format. Still sufficient for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no extra parameter meaning beyond the schema, which already documents each parameter clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb-resource pair 'Find declarations for a symbol' and provides specific use cases (C/C++ header/source split, TypeScript interfaces, Java abstract methods) that distinguish it from siblings like lsp_definition and lsp_type_definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool by listing applicable programming language scenarios, but does not explicitly exclude other cases or differentiate from similar tools like lsp_definition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_definitionC

Request textDocument/definition from the LSP server and return normalized locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) in the file.
maxResultsNoMaximum number of results to return.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions 'normalized locations' but does not explain what normalization means or disclose behavioral traits like read-only nature, rate limits, or server dependencies. Since annotations are missing, the description should provide more context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, efficient and front-loaded with the verb and resource. It avoids unnecessary words, though it could be slightly improved by adding a brief usage note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (nested position object, no output schema) and the rich sibling context, the description lacks critical information about the return format (e.g., list of locations) and what 'normalized' means. It is insufficient for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers 100% of parameters with descriptions, so the baseline is 3. The description does not add additional semantic value beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the LSP request type ('textDocument/definition') and the action (request from LSP server and return normalized locations). However, it does not differentiate from similar siblings like lsp_declaration or lsp_type_definition, which may confuse an agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. With many sibling tools for symbol navigation, the description should specify that this is for finding the definition of a symbol, not its declaration or type definition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_diagnosticsA

Return cached diagnostics for a file or the whole workspace. Triggers warm-up if workspaceWide is requested and cache is empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathNoAbsolute or workspace-relative path to a file.
severityNoFilter by severity.all
maxResultsNoMaximum number of results to return.
workspaceWideNoIf true, warm the workspace and return diagnostics for all files.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses cache warm-up behavior but omits prerequisites (e.g., file open) and error handling. Adequate but could be more comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, followed by a crucial behavioral note. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core behavior and warm-up nuance. Lacks error/edge cases and return format details, but sufficient for a simple retrieval tool given schema covers parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds value by linking workspaceWide parameter to warm-up behavior, providing context beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns cached diagnostics for a file or workspace, with a specific condition for warm-up. This verb+resource combination distinguishes it from siblings like lsp_diagnostics_summary or lsp_explain_diagnostics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies it's for cached results but does not compare to sibling tools like lsp_diagnostics_summary or lsp_explain_diagnostics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_diagnostics_summaryA

Return a summary of cached diagnostics grouped by severity, file, source, and message with a likely root cause.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathNoAbsolute or workspace-relative path to a file, or omit for all cached diagnostics.
workspaceWideNoIf true, warm the workspace before summarizing.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates that the tool operates on cached diagnostics and produces a summary with root cause, suggesting a read-only operation. However, without annotations, it does not fully disclose potential side effects, authentication needs, or whether it warms the cache (the workspaceWide parameter hints at warming, but this is not explicitly described as behavioral).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 20 words, conveying the tool's purpose concisely without extraneous information. It is well-structured and front-loaded with the key action and result.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (two optional parameters, no output schema), the description adequately explains what the tool returns (a summary grouped by severity, file, source, message, with root cause). It could mention the return format (e.g., string or object) but is otherwise complete for the tool's scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters. The overall description adds the 'likely root cause' aspect, which is not parameter-specific. Since schema already explains the parameters well, the description provides marginal additional value for parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a summary of cached diagnostics grouped by severity, file, source, and message with a likely root cause. This specific verb and resource distinguishes it from sibling tools like lsp_diagnostics (raw diagnostics) and lsp_explain_diagnostics (explanation of specific diagnostics).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., lsp_diagnostics for raw data, lsp_explain_diagnostics for explanations). The description implies a summary use case but does not explicitly state conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_document_symbolsB

Request textDocument/documentSymbol from the LSP server and return normalized symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It only states it returns normalized symbols without disclosing side effects (read-only), error conditions, or whether the file must be open. This is insufficient for a mutation-free LSP query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently conveys the core purpose without wasted words. However, it could be slightly more structured (e.g., separating purpose from behavior).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema) and many siblings, the description is adequate but missing details like what 'normalized' means or return format. It does not fully compensate for the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter fully described. The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Request', the resource 'textDocument/documentSymbol from the LSP server', and the outcome 'return normalized symbols'. It distinguishes this tool from siblings like lsp_workspace_symbols by specifying document-level scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as lsp_workspace_symbols or lsp_inspect_symbol. No context, prerequisites, or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_explain_diagnosticsA

Explain diagnostics using LSP-only information. Groups diagnostics by root cause and proposes fix order. Does NOT use AST extraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathNoFilter diagnostics to a single file. Omit for workspace-wide.
workspaceWideNoInclude all files when true.
maxDiagnosticsNoMaximum root cause candidates.
includeFixCandidatesNoInclude fix candidates for top diagnostics.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it uses LSP-only information and does not use AST extraction, but no annotations are provided. It does not state if the operation is read-only or destructive, nor any side effects. Partial transparency but adequate for a low-risk operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with the core purpose front-loaded. Every sentence adds value—purpose, grouping behavior, and a key limitation. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output description (e.g., format of grouped diagnostics and fix order). No mention of prerequisites like LSP server state. Given 4 parameters and no output schema, the description falls short of fully specifying the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good parameter descriptions. The tool description adds no additional parameter context beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool explains diagnostics using LSP-only information, groups by root cause, and proposes fix order. It distinguishes from siblings like lsp_diagnostics by specifying it does not use AST extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description hints at usage when LSP-only info is sufficient (no AST), but does not provide explicit when-to-use or when-not-to-use guidance. Siblings like lsp_diagnostics and lsp_diagnostics_summary are not compared, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_fix_diagnostic_candidatesB

Return LSP-based fix candidates for a diagnostic. Composes code actions, hover, definition, and signature help. Does NOT use AST context.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNoRange to find intersecting diagnostic.
filePathYesAbsolute or workspace-relative path to the file.
includeHoverNoInclude hover information.
diagnosticCodeNoDiagnostic code to match.
diagnosticIndexNo0-based index of diagnostic in the file.
includeDefinitionNoInclude definition locations.
includeCodeActionsNoInclude LSP code actions.
includeSignatureHelpNoInclude signature help.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool composes multiple LSP features and explicitly avoids AST context, which is useful behavioral info. However, it omits whether this is a read-only operation, whether it makes multiple LSP requests, or any side effects. The transparency is partial but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, with two sentences that cover the core purpose and a key constraint. It is front-loaded and avoids fluff. However, it could be slightly more informative without becoming verbose, but as a concise statement it works well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (8 parameters, no output schema, no annotations), the description is minimal. It does not describe the return value structure (fix candidates), how they are composed, or how to interpret the result. With many sibling tools, it lacks context on when this composite tool is preferable. The agent is left with significant unknowns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning by stating the tool composes code actions, hover, definition, and signature help, but this is more about purpose than parameter specifics. It does not elaborate on how the include* parameters interact or affect the output, so it adds marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns fix candidates for a diagnostic by composing code actions, hover, definition, and signature help. It also notes it does not use AST context, which helps differentiate. However, it does not fully distinguish from sibling tools like lsp_code_actions_preview or lsp_hover, as it does not explain when to use this composite tool instead of individual features.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or context. It only states what it does, leaving the agent to infer usage from the purpose. Without such guidance, an agent may misuse the tool or overlook more specific siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_format_previewA

Preview formatting changes for a file. Returns a unified diff without writing any files.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabSizeNoTab size.
filePathYesAbsolute or workspace-relative path to the file.
includeDiffNoWhether to include a unified diff.
insertSpacesNoUse spaces instead of tabs.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses non-destructive behavior ('without writing any files') and the output format (unified diff). This gives the agent a clear safety profile, though it omits details like server capabilities required or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence (12 words) that is front-loaded with purpose and outcome. Every word contributes value; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal but covers the essential preview behavior. It lacks prerequisites (e.g., file must be in workspace), details on diff format, and error scenarios. For a tool with no output schema and moderate complexity, it is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all four parameters (filePath, tabSize, includeDiff, insertSpaces). The tool description adds little beyond what the schema already provides, only contextualizing that the output is a diff, which relates to includeDiff.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Preview formatting changes for a file.' It specifies the key behavior ('Returns a unified diff without writing any files'), distinguishing it from other LSP tools that may write changes or preview ranges.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly guide when to use this tool over alternatives like lsp_range_format_preview or lsp_workspace_edit_preview. Usage context is implied by the name and preview behavior, but no when-not or alternative hints are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_get_capabilitiesC

Return normalized LSP capabilities for a language server. Optionally initializes the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesLanguage to query capabilities for.
startIfNeededNoInitialize the server if not already running.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description adds that initialization is optional (startIfNeeded), but does not explain side effects of initialization, what 'normalized' means, or what response to expect. Minimal behavioral disclosure for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is concise and front-loaded. Every word contributes to the purpose. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and many sibling tools, description is incomplete. Does not explain what 'normalized LSP capabilities' include, when to use this vs lsp_get_config or lsp_health_check, or how to interpret the result. Lacks depth.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description does not add meaning beyond what the schema provides (language and startIfNeeded). No extra detail on valid values or format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it returns normalized LSP capabilities and optionally initializes the server. It is specific about the resource (LSP capabilities) but does not explicitly distinguish from siblings like lsp_get_config or lsp_server_status. Many sibling tools exist, but the purpose is clear enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No mention of prerequisites, exclusions, or context for when to set startIfNeeded. Agent must infer usage from the description and param names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_get_configA

Return the effective runtime configuration merged from defaults, environment variables, and runtime overrides.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeEnvNoInclude environment variable overrides.
includeDefaultsNoInclude default config values.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals the tool merges configuration sources, but lacks details on behavior like error handling, response format, or what 'effective' means. No annotations provided to supplement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that efficiently conveys the tool's purpose without redundancy. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple boolean parameters and no output schema, the description adequately explains the tool's function. It could mention output format but is sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the input schema with defaults and descriptions. The tool description does not add further parameter guidance, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the effective runtime configuration, merged from defaults, environment variables, and overrides. It matches the tool name and distinguishes from the sibling 'lsp_update_runtime_config'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. Usage is implied as a read operation, but no guidance on when not to use or specific contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_health_checkB

Return server health status and available LSP capabilities across all registered language servers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It only states what is returned ('health status and available capabilities') but does not indicate side effects, required permissions, or the exact nature of the output. The description is too vague to fully inform the agent of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence that communicates the tool's purpose with no unnecessary words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description provides the minimum viability. However, it fails to elaborate on what 'health status' constitutes or how this tool relates to other health-related siblings, leaving some ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema coverage is 100%, so the description does not need to add parameter details. The baseline is appropriate, and the description does not mislead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns server health status and available LSP capabilities. However, it does not differentiate from similar sibling tools like lsp_liveness, lsp_readiness, or lsp_server_status, which may have overlapping purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. With many similar sibling tools (e.g., lsp_liveness, lsp_server_status), the lack of usage context makes it harder for an agent to select the correct tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_hoverB

Request textDocument/hover from the LSP server and return normalized contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) in the file.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It only mentions 'normalized contents' without clarifying side effects, preconditions (e.g., file must be open), or failure modes. Key behavioral traits are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, succinct sentence that communicates the core action without extraneous words. It is immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is present, and the description does not describe the return value structure or important context such as file open requirements. The tool is simple but the description lacks sufficient detail for an agent to use it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema_description_coverage is 100%; the schema already describes both parameters well. The description adds no extra meaning beyond the schema, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Request textDocument/hover) and the resource (LSP server). It explicitly identifies the tool's purpose among many sibling LSP tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives like lsp_completion or lsp_signature_help. Usage context is only implied by the tool's standard function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_implementationA

Find implementations of an interface, trait, abstract class, or method. Maps to textDocument/implementation. Answers 'who implements this?'

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) of the symbol.
maxResultsNoMaximum number of results.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic function and LSP mapping, omitting details like read-only nature, potential errors (e.g., symbol not found), or system impact. This is insufficient for a safe tool invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at two short sentences, front-loading the action and resource. Every sentence adds value without redundancy, and the structure is clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters, simple semantics) and absence of an output schema, the description provides adequate context for the core function, but it lacks completeness for a production environment. Missing details like result type (list of locations) and prerequisites (active language server) could confuse agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the input schema. The description adds no additional parameter semantics beyond what the schema already provides, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (find implementations) and resource (interface, trait, abstract class, or method). It also maps to LSP and answers the question 'who implements this?', which distinguishes it from related tools like lsp_definition or lsp_references.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for finding implementations but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the many sibling LSP tools. The mapping to textDocument/implementation is a hint but not actionable for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_incoming_callsA

Find callers of a function or method using a cached call hierarchy item ID. Maps to callHierarchy/incomingCalls.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesOpaque item ID from lsp_prepare_call_hierarchy.
maxResultsNoMaximum number of calls.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, but description implies read-only operation. Mentions 'cached' data and maps to standard LSP method. Does not disclose details like sync/async, error conditions, or side effects. Sufficient for a simple query tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste. First sentence delivers core purpose and mechanism, second sentence maps to LSP. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but LSP call hierarchy return format is standard. Description covers purpose, parameters, and prerequisite. For an LSP-savvy agent, it's mostly complete. Could mention return type briefly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions. Description adds 'using a cached call hierarchy item ID', clarifying itemId's origin and purpose beyond schema's 'opaque item ID'. For maxResults, schema already provides meaning. Adds moderate value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'find' and resource 'callers of a function or method', specifies mechanism 'using a cached call hierarchy item ID', and maps to LSP method. Distinguishes from siblings like lsp_outgoing_calls and lsp_prepare_call_hierarchy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Hints at prerequisite (item ID from lsp_prepare_call_hierarchy) but lacks explicit when-to-use vs alternatives like lsp_outgoing_calls or lsp_references. No when-not-to-use guidance. Adequate but not comprehensive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_inspect_symbolB

Return hover, definitions, references, enclosing symbols, and risk hints for a symbol at a position.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) of the symbol to inspect.
maxReferencesNoMaximum number of references to return.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It states the tool returns multiple pieces of information but does not mention side effects, permissions, or whether the document must be open. For a mutation-free tool, more context about read-only nature and server requirements would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately conveys the purpose. It is front-loaded with the action and resource, with no extraneous words. Every part is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description lists the returned items, it lacks details on output structure, error handling, or performance considerations. With no output schema, more context about the format of the return value would aid the agent. However, for a 3-parameter tool, the description is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all properties described. The description does not add any additional meaning beyond the schema, which already clearly explains filePath, position (with line and character), and maxReferences. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Return' and specifies the exact resources: hover, definitions, references, enclosing symbols, and risk hints for a symbol at a position. This effectively distinguishes it from sibling tools like lsp_hover, lsp_definition, and lsp_references which provide single pieces of information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this combined tool versus its more specific sibling tools. It does not mention scenarios where using the individual tools might be preferable, nor does it state any prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_list_open_documentsA

Return all documents currently tracked as open in the LSP servers, optionally filtered by language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoFilter to a specific language. Omit for all.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It states 'Return all documents', implying a read-only, non-destructive operation. It does not mention side effects, but for a retrieval tool, this is sufficient. However, it could be more explicit about safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that front-loads the main purpose. Every word earns its place—no fluff or unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description is complete enough. It covers the main functionality and filtering option, though it omits details like the return format or behavior when no documents are open.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description mentions the optional language filter, but adds no additional meaning beyond what the schema already provides ('Filter to a specific language. Omit for all.').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Return' and the resource 'open documents', with optional filtering by language. It distinguishes from sibling tools like lsp_open_document and lsp_close_document which perform different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives, such as when to list open documents vs. using diagnostics or cache tools. The context (it's a read-only list) is implied but not contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_list_supported_languagesA

Return configured languages with extensions, commands, and binary availability. Does not start language servers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool is read-only (does not start servers) and returns configuration data. This is sufficient for a zero-parameter tool with no destructive potential.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose. Every sentence adds value: the first describes the return, the second explicitly states what it does not do. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and a safe read-only nature, the description is complete. It conveys what is returned and a key behavioral trait. With 58 siblings, it effectively differentiates from tools that start or interact with servers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage (trivially). Per guidelines, baseline is 4 for zero parameters. The description adds no parameter info, which is acceptable as there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns configured languages with details on extensions, commands, and binary availability, and explicitly says it does not start language servers. This verb+resource+scope makes the purpose clear and distinguishes it from siblings like lsp_restart_server or lsp_open_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies safe usage by noting it does not start servers, but lacks explicit guidance on when to use this tool versus alternatives like lsp_list_open_documents or lsp_workspace_symbols. No when-not-to-use or alternative recommendations are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_list_workspacesA

Return the list of known workspaces. Currently single-workspace (foundation for future multi-root).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description fully discloses behavior: a read-only operation returning a list. Additional context about single-workspace nature aids transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded purpose; no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description is largely adequate. It could mention the expected return format (e.g., array of workspace identifiers) but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description need not add parameter info. Baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Return the list of known workspaces' using a specific verb and resource. It distinguishes from sibling tools like lsp_workspace_status and lsp_workspace_symbols.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving workspace list but does not explicitly state when to use versus alternatives or provide when-not conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_livenessA

Fast liveness check. Does not start any language servers. Returns uptime and optional memory stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeMemoryNoInclude memory usage statistics.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description handles transparency well, stating it is fast, does not start servers, and returns uptime with optional memory stats. Could mention if an active connection is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded key information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers the purpose, behavior, and the parameter's effect. Complete for the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description and default for 'includeMemory'. The description adds only 'optional memory stats', which does not provide significant extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a fast liveness check that does not start language servers, distinguishing it from sibling tools like lsp_readiness or lsp_server_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a quick health check without side effects, but does not explicitly state when not to use or compare to alternatives beyond noting it doesn't start servers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_open_documentA

Open a document in the LSP server (textDocument/didOpen). Tracks the document for lifecycle management.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoFile content. Reads from disk if omitted.
filePathYesAbsolute or workspace-relative path to the file.
languageYesLanguage server to use (e.g., typescript, python).

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions 'Tracks the document for lifecycle management' but does not explain what tracking entails, any authorization needs, or potential side effects. This is insufficient for a tool without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no wasted words. The first sentence provides the core purpose, and the second adds a key behavioral note about tracking.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description is somewhat complete but lacks details about prerequisites (e.g., server must be running), the exact lifecycle implications, and what happens if the document is already open. It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description does not add additional semantics beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool opens a document in the LSP server, referencing the specific protocol method (textDocument/didOpen). It distinguishes from sibling tools like lsp_close_document and lsp_save_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating 'Open a document' and mentions lifecycle management, but it does not explicitly state when to use this tool versus alternatives, nor does it provide prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_organize_imports_previewA

Preview import organization changes using source.organizeImports code action. Returns a unified diff without writing files.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
includeDiffNoWhether to include a unified diff.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses that the tool returns a unified diff and does not write files, which is crucial for a preview operation. It does not mention prerequisites or response format details, but the core behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with action and outcome. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and good schema coverage, the description is largely complete. It could mention that the diff is a string, but the context (preview, returns diff) suffices. Sibling tools help situate it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents filePath and includeDiff. The description adds marginal value by tying the diff return to the overall purpose but does not explain parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool previews import organization changes using a specific code action and returns a unified diff without writing files. This distinguishes it from sibling tools like lsp_rename_preview and lsp_code_actions_preview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you want to see import changes without committing. It does not explicitly state when not to use or provide alternatives, but the sibling tool list provides context for differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_outgoing_callsA

Find functions/methods called by a function or method using a cached call hierarchy item ID. Maps to callHierarchy/outgoingCalls.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesOpaque item ID from lsp_prepare_call_hierarchy.
maxResultsNoMaximum number of calls.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool uses a cached item ID and maps to a standard LSP method, implying it is a read-only operation. It does not mention behavior on invalid IDs or cache staleness, but the core behavior is clearly communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and contains no extraneous words. Every sentence is necessary and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 well-documented parameters and no output schema, the description covers the essential purpose and input. It could enhance completeness by hinting at the return format (e.g., list of call locations), but given the LSP context, it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description reinforces that itemId comes from lsp_prepare_call_hierarchy, matching the schema. No additional semantic information is provided beyond what the schema already offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds functions/methods called by a function or method using a cached call hierarchy item ID. It distinguishes from siblings like lsp_incoming_calls by explicitly mentioning outgoing calls and referencing the LSP method callHierarchy/outgoingCalls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage requires a prior call to lsp_prepare_call_hierarchy to obtain the item ID. It does not explicitly state when to use this vs. lsp_incoming_calls, but the directionality is clear from the name and description. Context from sibling tools provides sufficient differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_prepare_call_hierarchyA

Prepare call hierarchy items for a symbol. Returns cached opaque IDs used by lsp_incoming_calls and lsp_outgoing_calls. Maps to textDocument/prepareCallHierarchy.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
maxItemsNoMaximum number of hierarchy items.
positionYesLine/character position (zero-based) of the symbol.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description briefly mentions caching and opaque IDs but lacks detail on side effects, permissions, error handling, or idempotency. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise, front-loaded sentences: purpose, return usage, LSP mapping. No superfluous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Sufficient for 3-param read-like tool with no output schema; explains relationship to siblings. Could note error scenarios, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds no additional meaning to parameters beyond schema definitions; no extra behavioral or format hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specifically states it prepares call hierarchy items for a symbol, distinctly from sibling tools that use its output (lsp_incoming_calls, lsp_outgoing_calls). Maps to standard LSP method for clear identification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicitly establishes usage sequence by stating it returns IDs used by sibling tools, guiding when to call it. Could further clarify prerequisites (e.g., document must be open).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_prepare_renameB

Check rename viability at a position. Returns range and placeholder if the symbol can be renamed.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) of the symbol to check.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. While it states the output (range and placeholder), it does not disclose the behavior when the symbol cannot be renamed (e.g., whether it returns null, throws an error, or returns an empty result). Side effects or required permissions are not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two short sentences that convey the core purpose and output. It is front-loaded with the action and avoids any extraneous words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (2 parameters, no output schema), the description covers the essential information: what it checks and what it returns. It does not explain error scenarios or the full return structure, but for a read-oriented check tool, this is reasonably complete. The schema handles parameter details, and the expected output is stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides comprehensive descriptions for both parameters (filePath and position). The description adds no additional meaning or usage hints beyond what the schema offers, so it meets the baseline expectation for a 100% schema coverage scenario.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: checking rename viability at a given position and returning the range and placeholder if renaming is possible. It uses a specific verb ('Check') and resource ('rename viability'), which distinguishes it from siblings like lsp_rename_preview that likely handle the actual rename rather than the preparation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks any guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., the symbol must be valid), when not to use it, or what to do after. Sibling tools like lsp_rename_preview or other check tools are not referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_prepare_type_hierarchyA

Prepare type hierarchy items for a class, interface, trait, or type. Returns cached opaque IDs used by lsp_supertypes and lsp_subtypes. Maps to textDocument/prepareTypeHierarchy.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
maxItemsNoMaximum number of hierarchy items.
positionYesLine/character position (zero-based) of the symbol.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that results are cached and returns opaque IDs, which is useful behavioral context. However, it does not mention side effects, error behavior (e.g., if symbol not found), or performance characteristics. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the primary action and output, the second maps to the LSP protocol. No redundant words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the purpose and relationship to sibling tools, but lacks explicit detail about the return value format (e.g., is it an array of IDs? a map?). Since there is no output schema, the description should specify the shape of the return value. Additionally, it does not mention what happens if the symbol is not found or if maxItems is exceeded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema fully describes each parameter. The description does not add additional parameter-level information beyond what the schema provides. The baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool prepares type hierarchy items and returns cached opaque IDs for use by lsp_supertypes and lsp_subtypes. It also maps to the LSP method textDocument/prepareTypeHierarchy, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is a prerequisite for lsp_supertypes and lsp_subtypes by stating it returns IDs they use. However, it does not explicitly state when to use it (e.g., 'use this first to get IDs') or when not to use it (e.g., if IDs already available). No alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_range_format_previewA

Preview formatting changes for a range within a file. Returns a unified diff without writing any files.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesRange to format.
tabSizeNoTab size.
filePathYesAbsolute or workspace-relative path to the file.
includeDiffNoWhether to include a unified diff.
insertSpacesNoUse spaces instead of tabs.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It discloses the non-destructive behavior ('without writing any files') and output format (unified diff). However, it does not mention prerequisites like whether the file must be open or other side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, and no redundant information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 params, nested objects) and no output schema, the description adequately covers the return type (unified diff) and non-destructive nature. It lacks details on file open requirements but is sufficient for common usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds little beyond the schema descriptions (e.g., 'Range to format' is already in schema). No additional context on parameter usage or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Preview formatting changes' and the resource 'a range within a file', and distinguishes from sibling tools like lsp_format_preview by specifying range-specificity. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions returning a unified diff without writing files, implying preview usage, but does not explicitly state when to use this tool over alternatives (e.g., lsp_format_preview for entire file) or provide any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_raw_requestA

Send a raw LSP request to a language server. Disabled by default — enable via LSP_RAW_REQUEST_ENABLED env var or update_runtime_config. Dangerous methods are always blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesLSP method name (e.g., textDocument/hover).
paramsNoLSP request parameters.
languageYesLanguage server to send the request to.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses that it's disabled by default and dangerous methods are always blocked—useful safety behavior. However, does not mention authorization needs, side effects, or return behavior (no output schema). Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences. First sentence immediately states action; second provides crucial usage constraint. Every word serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations. Lacks any description of return value format, error behavior, or invocation constraints beyond enabling. For a raw request tool that could be complex, this is insufficient for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have schema descriptions covering 100% of parameters. Description text adds no additional meaning beyond what the schema already provides (method name, params object, language server). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with a clear verb+resource: "Send a raw LSP request to a language server." It distinguishes from sibling tools (which are for specific LSP methods like hover, definition) by indicating this sends any raw request. Also mentions disabled state and dangerous methods blocked.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes when to use (sending raw LSP requests) and, crucially, the enabling requirement (via env var or update_runtime_config). Does not explicitly state when not to use or compare to alternatives, but the unique nature of a raw request implies exclusivity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_readinessB

Check if the MCP LSP server is ready to handle agent work. Optionally initializes language servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoCheck a specific language server only.
initServersNoInitialize configured language servers if not already running.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It mentions optional initialization (a mutation) but does not disclose side effects, error handling, or what 'ready' means. Minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. First sentence states primary purpose, second adds optional behavior. No unnecessary words, well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main action and optional parameter, but lacks description of return value (e.g., boolean, status object). With no output schema, the description should hint at what the response contains to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema: 'Optionally initializes language servers' matches schema description of initServers. No extra details on constraints or format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks LSP server readiness and optionally initializes language servers. However, it does not differentiate from similar sibling tools like lsp_health_check or lsp_liveness, so it's missing explicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., lsp_health_check, lsp_liveness, lsp_server_status). The description implies checking readiness but does not specify context or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_referencesB

Request textDocument/references from the LSP server and return normalized locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) in the file.
maxResultsNoMaximum number of results to return.
includeDeclarationNoWhether to include the declaration in the results.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lacks behavioral details such as whether it requires an open document, is read-only, or performs network calls. Without annotations, the onus is on the description to disclose these traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, efficiently conveying the tool's core action without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the basic purpose, it lacks details on return values (no output schema) and usage context. It is minimally sufficient but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters are fully described in the input schema (100% coverage), so the description adds no additional meaning. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it requests textDocument/references and returns normalized locations. However, it does not differentiate from siblings like lsp_definition or lsp_implementation, which serve similar purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the many similar sibling tools (e.g., lsp_definition, lsp_declaration). An agent would have to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_rename_previewA

Preview a rename operation. Returns the WorkspaceEdit and a unified diff. No files are written to disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
newNameYesThe new name for the symbol.
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) of the symbol to rename.
includeDiffNoWhether to include a unified diff in the response.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It explains that no files are written (safe, read-only) and what is returned, which is good. However, it does not disclose potential error conditions, authentication needs, or server-side behavior changes. It is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the action and then specifying the output and safety. Every sentence is essential and there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a preview tool with 4 parameters and no output schema, the description covers the key aspects: what it does, what it returns, and that it does not modify files. It could be improved by mentioning the return value structure or error handling, but it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond what the schema already provides for parameters. It relies entirely on the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Preview') and resource ('rename operation'), and clearly states the output (WorkspaceEdit and unified diff) and safety (no writes). It distinguishes from potential siblings like lsp_prepare_rename by emphasizing the preview and diff aspects, though not explicitly naming alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a preview of a rename is desired, but does not explicitly state when to use this tool versus alternatives such as lsp_prepare_rename or lsp_workspace_edit_preview. No exclusions or context cues are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_request_logA

Return LSP request log entries with optional filtering by language, method, status, and time.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum entries to return (most recent).
sinceNoISO timestamp — only return entries after this time.
methodNoFilter by LSP method name.
statusNoFilter by request status.
languageNoFilter by language.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral transparency. It only states the action (return) and filtering, but fails to disclose whether this operation is read-only, has side effects, requires permissions, or what the response format is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no wasted words. It efficiently communicates the tool's function and options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple log retrieval tool with 5 optional parameters and no output schema, the description is adequate. It covers the core action and filter dimensions. However, it could benefit from clarifying ordering (already in schema) and the read-only nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents each parameter. The description adds minimal value by summarizing the filtering options but does not provide new details beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns LSP request log entries and lists specific filtering dimensions (language, method, status, time). This distinguishes it from sibling tools like lsp_clear_request_log (which clears logs) and other analysis tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving logs with filters but does not explicitly state when to use this tool versus alternatives (e.g., when to use lsp_diagnostics instead). No guidance on when not to use or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_resolve_code_actionB

Resolve a lazy code action from the cache and return a validated edit preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionIdYesCached action ID from lsp_code_actions_preview.
includeDiffNoWhether to include a unified diff.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It does not disclose whether the tool applies the action or merely previews edits, nor does it specify side effects or permission needs. 'Resolve' is ambiguous—could mean finalize or just retrieve. Insufficient transparency for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Concise but could be slightly more informative without sacrificing brevity. Still earns a high score for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, and description omits crucial details: what a 'validated edit preview' looks like, whether edits are applied, error behavior, and relationship to sibling tools like lsp_workspace_edit_preview. Inadequate for an agent to fully understand usage and outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond parameter names and defaults: 'actionId' and 'includeDiff' are already described in schema. No elaboration on how parameters affect the output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'resolve' and resource 'lazy code action from cache,' clearly indicating the tool's function. It distinguishes from sibling like lsp_code_actions_preview by focusing on resolving a cached action vs previewing. The output 'validated edit preview' further clarifies the return.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives (e.g., lsp_code_actions_preview). No mention of prerequisites like first obtaining a cached action. The description assumes the agent knows the workflow, leaving usage ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_restart_serverA

Restart a language server. Clears stale diagnostics and optionally reopens tracked documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesLanguage server to restart (e.g., typescript, python).
reopenDocumentsNoRe-open tracked documents after restart.
shutdownTimeoutMsNoMax wait for shutdown before force kill.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses clearing stale diagnostics and optional reopening, but does not mention potential side effects like interrupting ongoing operations or loss of unsaved changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with the main action front-loaded. Every part adds value, and there is no unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a restart tool with no output schema and no annotations, the description is minimally complete. It explains the primary effect (clear diagnostics) and optional behavior, but lacks return value info or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema for parameters like language, reopenDocuments, or shutdownTimeoutMs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Restart' and the resource 'language server', and distinguishes it from siblings like lsp_shutdown_server and lsp_open_document by mentioning clearing stale diagnostics and reopening documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as lsp_shutdown_server or lsp_open_document. The description implies use for clearing diagnostics but lacks criteria or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_save_documentA

Notify the LSP server that a document was saved (textDocument/didSave). Does NOT write to disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSaved file content for LSP notification.
filePathYesAbsolute or workspace-relative path to the file.
languageYesLanguage server to use.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses the key behavioral trait (no disk writes) and the nature of the notification, though it could mention prerequisites like document openness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with two focused sentences that deliver the essential message without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple notification tool, the description covers the core behavior and parameter schema is complete. Minor info about prerequisites (e.g., document must be open) could enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters; the tool description adds no extra parameter-level detail beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool notifies the LSP server of a save event (textDocument/didSave) and explicitly says it does NOT write to disk, distinguishing it from unrelated operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the purpose but does not explicitly state when to use this tool vs alternatives like lsp_sync_document or lsp_open_document, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_server_statusB

Return runtime status for all configured language servers. Does not start any server.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoFilter to a specific language. Omit for all.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It correctly states the tool is non-intrusive ('does not start any server'), but does not disclose other behavioral traits such as whether it sends a request to servers, requires authentication, or any error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the core purpose and add a key behavioral note. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and no output schema, the description is functional but minimal. It does not describe the format or content of the returned status, which would aid an agent. However, the context signals indicate low complexity, so a score of 3 is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the 'language' parameter. The tool description adds no additional semantic meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it returns runtime status for language servers and explicitly notes it does not start servers. While it doesn't directly contrast with sibling tools like lsp_health_check or lsp_liveness, the purpose is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over alternatives like lsp_health_check, lsp_liveness, or lsp_readiness. The description does not provide context or exclusion criteria, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_shutdown_serverA

Gracefully shut down a language server. Subsequent code-intelligence calls restart lazily.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesLanguage server to shut down (e.g., typescript, python).
forceTimeoutMsNoMax wait for graceful shutdown before force kill.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It mentions 'gracefully' and the lazy restart behavior, but does not detail the shutdown process, potential impact on ongoing requests, or behavior on timeout.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two well-structured sentences, front-loaded with the core purpose, zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description covers the essential purpose and a key behavioral note. Minor gap: no explanation of 'gracefully' or timeout behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema already provides for the two parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('shut down') and resource ('language server'), and distinguishes from sibling tools like 'lsp_restart_server' by noting that subsequent calls restart lazily.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to gracefully shut down a server) and provides context about lazy restart, but does not explicitly mention alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_signature_helpA

Return function/method call signature information at a position. Maps to textDocument/signatureHelp. Useful for checking wrong arguments, missing parameters, incorrect overloads.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) at the call site.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states the tool maps to textDocument/signatureHelp (standard LSP), implying idempotent read-only behavior, but does not explicitly disclose side effects, permissions, or limitations. The description adds value but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two sentences: first states core purpose, second lists usage contexts. No redundant information, well front-loaded, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description broadly states return type ('function/method call signature information'), but does not detail the exact format (e.g., parameter labels, active parameter). The mapping to LSP standard provides some implicit completeness, but more specificity would help agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both parameters well-described in schema). The description adds no additional parameter details beyond mentioning 'at a position', so it does not increase semantic clarity beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns function/method call signature information at a position, maps to a well-known LSP method, and lists use cases (checking wrong arguments, missing parameters, incorrect overloads). It is specific and distinguishes from siblings like hover or completion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions use cases ('useful for checking wrong arguments...'), providing implicit guidance, but does not explicitly state when not to use this tool or mention alternatives such as lsp_hover or lsp_completion. More explicit guidance would improve score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_snapshot_diagnosticsA

Take a snapshot of current diagnostic state. Returns a snapshot ID for later comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional label for this snapshot.
filePathNoFilter to a single file. Omit for all diagnostics.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. Describes snapshot as non-destructive, but lacks details on persistence, scope, or side effects. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, front-loaded with action and key result. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or annotations; description does not specify return format or how to use snapshot ID with sibling tools like lsp_compare_diagnostics. Could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover both parameters fully (name and filePath). Description adds context about return value but does not enhance parameter understanding beyond schema. Baseline 3 due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action: take a diagnostic snapshot and return a snapshot ID for later comparison. Distinguishes from sibling tools like lsp_diagnostics (current state) and lsp_compare_diagnostics (comparison).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for taking a snapshot for later comparison, but does not explicitly state when to use vs. alternatives (e.g., lsp_diagnostics for immediate view) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_subtypesB

Find subclasses, implementers, child interfaces, or subtypes. Maps to typeHierarchy/subtypes.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesOpaque item ID from lsp_prepare_type_hierarchy.
maxResultsNoMaximum number of results.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, side effects, auth requirements, or rate limits. The LSP call is typically read-only, but not stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. Front-loaded with the action verb 'Find' and includes the protocol mapping.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or return value format described. Lacks prerequisites (e.g., need lsp_prepare_type_hierarchy). For a tool with no annotations, the description is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The tool description adds minimal context beyond the schema (e.g., maps to typeHierarchy/subtypes), but does not significantly enhance understanding of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it finds subclasses, implementers, child interfaces, or subtypes, and maps to the LSP typeHierarchy/subtypes request. This distinguishes it from sibling tools like lsp_supertypes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. It does not mention that a prior call to lsp_prepare_type_hierarchy is required, though the parameter description for itemId hints at it. No exclusions or comparisons with siblings like lsp_implementation or lsp_references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_supertypesA

Find parent classes, implemented interfaces, extended interfaces, parent traits, or supertypes. Maps to typeHierarchy/supertypes.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesOpaque item ID from lsp_prepare_type_hierarchy.
maxResultsNoMaximum number of results.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It adds context about what the tool returns (parent classes, interfaces, etc.) and the LSP mapping, but does not disclose other behavioral traits such as whether it is read-only, requires specific server capabilities, or has rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two front-loaded sentences. It efficiently conveys the tool's purpose and mapping. Minor improvement could be made to combine information, but it's well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two parameters, no output schema, and sibling tools, the description provides sufficient context. It explains the source of the itemId and the types of hierarchy relationships covered. The mapping to LSP method adds completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds minimal value beyond the schema. It reiterates that 'itemId' comes from 'lsp_prepare_type_hierarchy', which is already in the schema description. The baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool finds parent classes, implemented interfaces, extended interfaces, parent traits, or supertypes, using a specific verb and resource. It distinguishes itself from the sibling tool 'lsp_subtypes' by focusing on supertypes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by mentioning the prerequisite 'itemId from lsp_prepare_type_hierarchy', but does not explicitly state when to use this tool versus alternatives like 'lsp_subtypes' or other hierarchy tools. No when-not guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_sync_documentA

Sync document content changes to the LSP server (textDocument/didChange). Auto-opens if not already tracked.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoNew file content. Reads from disk if omitted.
filePathYesAbsolute or workspace-relative path to the file.
languageYesLanguage server to use.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the core behavior (sending didChange and auto-opening) but does not mention side effects, error handling, or prerequisites. Minimal but acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that conveys the essential purpose and a key behavior (auto-open). No redundant words, front-loaded with the action and target.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a sync tool but lacks details on return behavior, error conditions, or how the sync operation is performed (full text vs diff). Given no output schema, more context on what the agent should expect would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters. The description itself adds no additional meaning beyond what is in the schema (text, filePath, language descriptions). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool syncs document content changes to the LSP server via textDocument/didChange, and mentions auto-opening. This distinguishes it from siblings like lsp_open_document and lsp_close_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for syncing changes after modifications, but does not explicitly state when to use vs alternatives (e.g., lsp_open_document for first open, lsp_close_document for closing). The auto-open note gives some context but lacks exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_type_definitionA

Find the definition of the type of a symbol. Maps to textDocument/typeDefinition. Resolves variable types to their type/interface/class definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute or workspace-relative path to the file.
positionYesLine/character position (zero-based) of the symbol.
maxResultsNoMaximum number of results.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations available, so description carries full burden. It only states the protocol mapping but lacks details on side effects (e.g., network call), prerequisites (e.g., document must be open), or error handling. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. First sentence states the core purpose, second adds protocol mapping and elaboration. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description hints at return type ('type/interface/class definitions'). For a focused query tool with many siblings, the description is fairly complete. Missing error conditions or relation to other tools, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so description adds no extra meaning beyond the schema. The tool description does not provide additional context for parameters like typical usage or behavior when maxResults is omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Find' and resource 'definition of the type of a symbol'. It distinguishes from siblings like lsp_definition (finds definition of symbol itself) and lsp_declaration. The protocol mapping further clarifies the specific LSP request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. Usage is implied (when you need the type definition of a symbol's type), but no alternatives or exclusion criteria are mentioned among the numerous similar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_update_runtime_configA

Update runtime configuration in memory. Immutable keys (workspacePath, server commands) are rejected. Changes are lost on restart.

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesPartial runtime config. Immutable keys (workspacePath) are rejected.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: immutable keys are rejected, changes lost on restart. No annotations provided, so description carries full burden. Missing details like side effects, error handling, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose. No wasted words. Efficiently conveys critical info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a mutation tool with one parameter. Covers immutability and volatility. No output schema, but return value not described. Could mention success indicator or validation scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (single config object). Description adds value by explicitly listing 'server commands' as immutable beyond schema's mention of workspacePath. Provides behavioral context for the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Update' and resource 'runtime configuration in memory'. Adds specificity by mentioning immutable keys and non-persistence. Distinct from sibling tools like lsp_get_config.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when updating runtime config, but lacks explicit when-to-use vs alternatives (e.g., lsp_get_config for reading). No when-not or exclusion criteria beyond immutable keys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_validate_workspace_editA

Validate a raw LSP WorkspaceEdit without generating a diff. Returns violations only.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxEditsNoMax edits before rejection.
maxFilesNoMax changed files before rejection.
workspaceEditYesRaw LSP WorkspaceEdit to validate.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It states only that the tool returns violations, but does not disclose whether the operation is read-only, destructive, or requires specific permissions. The behavioral information is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the core purpose. It is concise with no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (validation of nested LSP WorkspaceEdit objects) and no output schema, the description fails to explain what 'violations' means, the return format, or how validation works. The context is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional semantics beyond what the schema already provides for parameters like workspaceEdit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'validate', the resource 'raw LSP WorkspaceEdit', and distinguishes the tool by noting it does not generate a diff. This differentiates it from sibling tools like lsp_workspace_edit_preview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly guides usage by contrasting with diff generation, implying this tool is for validation only. However, it does not explicitly state when to use or not use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_wait_for_diagnosticsA

Wait for diagnostics to arrive after a document sync or external edit. Useful for agent synchronization loops.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathNoFile path to wait for diagnostics on. Omit for workspace-wide.
settleMsNoQuiet period after first event in ms.
timeoutMsNoMax wait time in ms.
workspaceWideNoWait for any diagnostic event workspace-wide.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only states the purpose. It fails to mention key behaviors like blocking, timeout behavior, or what is returned upon completion, leaving the agent uncertain about side effects or cancellation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences immediately convey the core functionality and context, with no wasted words. The structure is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the well-documented schema and no output schema, the description provides minimal extra context. While sufficient for a simple wait operation, lacks behavioral details like return value or timeout behavior, making it slightly incomplete for an agent to fully understand the tool's behavior without additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (all parameters described in schema), so the description adds no additional meaning beyond the schema's descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Wait for diagnostics to arrive') and the context ('after a document sync or external edit'), which distinguishes it from other diagnostics tools like 'lsp_diagnostics' that retrieve current diagnostics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage context ('after a document sync or external edit') and mentions it's useful for 'agent synchronization loops,' but does not explicitly state when not to use it or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_workspace_edit_previewA

Parse, validate, and preview a raw LSP WorkspaceEdit. Returns a unified diff without writing any files to disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxEditsNoMax edits before rejection.
maxFilesNoMax changed files before rejection.
includeDiffNoWhether to include a unified diff.
workspaceEditYesRaw LSP WorkspaceEdit to preview.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the tool does not write files, which is a key safety guarantee. However, it does not mention the optional parameters (maxEdits, maxFiles, includeDiff) or return format details beyond 'unified diff', missing some transparency on limits and output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the main action ('Parse, validate, and preview a raw LSP WorkspaceEdit') and includes a concise caveat about not writing files. Every word earns its place; there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex nested schema and lack of output schema, the description is somewhat minimal. It covers the core function but omits details about optional parameters, return format beyond 'unified diff', and error handling. For a tool with 4 parameters and a rich input schema, a more complete description would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented in the schema. The tool description adds no additional meaning to the parameters; it only mentions the tool's overall purpose. According to the guidelines, when coverage is high, baseline is 3, and no extra value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool parses, validates, and previews a raw LSP WorkspaceEdit, returning a unified diff without writing to disk. This verb+resource combination is specific and distinguishes it from sibling preview tools like lsp_format_preview and lsp_rename_preview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool versus alternatives. It mentions 'without writing any files to disk', which implies a preview use case, but no explicit context, prerequisites, or exclusions are given. Siblings like lsp_validate_workspace_edit could have different behavior, but the description offers no comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_workspace_statusC

Return status for a specific workspace including its language servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspacePathYesAbsolute path to the workspace to query.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present; the description lacks detail on side effects, permissions, or exactly what status information is returned beyond mentioning language servers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and many sibling tools, the description is insufficient; it does not explain the return format or how this status differs from other status tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'workspacePath' is described in the schema, and the description adds no extra meaning, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates the tool returns status for a workspace including its language servers, distinguishing it from other lsp tools like lsp_server_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives such as lsp_server_status or lsp_cache_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lsp_workspace_symbolsC

Request workspace/symbol from the LSP server and return normalized symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query string.
languageNoLanguage to search in, or 'auto' for all.auto
maxResultsNoMaximum number of results to return.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It does not disclose that the operation is read-only, nor does it mention any side effects, permissions, or behavioral traits. The term 'normalized' is left undefined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is direct and free of redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite moderate complexity (3 parameters, no output schema), the description lacks details about the return format or what 'normalized symbols' entails. Users cannot predict the structure of results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The tool description adds no further meaning beyond the schema, achieving baseline adequacy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it requests workspace/symbol from LSP server and returns normalized symbols. However, it does not explicitly differentiate from sibling tools like lsp_document_symbols or lsp_inspect_symbol, leaving ambiguity about when to use which.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. With many symbol-related siblings, such as lsp_document_symbols for document-level search, this omission reduces usability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 56 tool updatesv0.3.0
    • First observedlsp_analyze_change_impact
    • First observedlsp_cache_status
    • First observedlsp_clear_caches
    • First observedlsp_clear_request_log
    • First observedlsp_close_document
    • First observedlsp_code_actions_preview
    • First observedlsp_compare_diagnostics
    • First observedlsp_completion
    • First observedlsp_declaration
    • First observedlsp_definition
    • First observedlsp_diagnostics
    • First observedlsp_diagnostics_summary
    • First observedlsp_document_symbols
    • First observedlsp_explain_diagnostics
    • First observedlsp_fix_diagnostic_candidates
    • First observedlsp_format_preview
    • First observedlsp_get_capabilities
    • First observedlsp_get_config
    • First observedlsp_health_check
    • First observedlsp_hover
    • First observedlsp_implementation
    • First observedlsp_incoming_calls
    • First observedlsp_inspect_symbol
    • First observedlsp_list_open_documents
    • First observedlsp_list_supported_languages
    • First observedlsp_list_workspaces
    • First observedlsp_liveness
    • First observedlsp_open_document
    • First observedlsp_organize_imports_preview
    • First observedlsp_outgoing_calls
    • First observedlsp_prepare_call_hierarchy
    • First observedlsp_prepare_rename
    • First observedlsp_prepare_type_hierarchy
    • First observedlsp_range_format_preview
    • First observedlsp_raw_request
    • First observedlsp_readiness
    • First observedlsp_references
    • First observedlsp_rename_preview
    • First observedlsp_request_log
    • First observedlsp_resolve_code_action
    • First observedlsp_restart_server
    • First observedlsp_save_document
    • First observedlsp_server_status
    • First observedlsp_shutdown_server
    • First observedlsp_signature_help
    • First observedlsp_snapshot_diagnostics
    • First observedlsp_subtypes
    • First observedlsp_supertypes
    • First observedlsp_sync_document
    • First observedlsp_type_definition
    • First observedlsp_update_runtime_config
    • First observedlsp_validate_workspace_edit
    • First observedlsp_wait_for_diagnostics
    • First observedlsp_workspace_edit_preview
    • First observedlsp_workspace_status
    • First observedlsp_workspace_symbols

TDQS

A3.6/5.0
Disambiguation4/5

Tools are mostly distinct, each targeting a specific LSP operation or management task. Some overlap exists among preview tools (format, rename, code action, etc.) and diagnostic tools, but descriptions clarify their differences.

Naming Consistency5/5

All tools follow the 'lsp_' prefix with a consistent verb_noun pattern (e.g., lsp_hover, lsp_definition, lsp_rename_preview). Minor plural/singular variations (e.g., lsp_references vs lsp_definition) are acceptable and do not break consistency.

Tool Count3/5

56 tools is on the high side, reflecting the comprehensive LSP protocol coverage. While each tool has a clear purpose, the large number may overwhelm agents and suggests some operations could be consolidated. Still within a reasonable range for a complex domain.

Completeness5/5

The tool set covers all major LSP features (hover, definition, references, completion, diagnostics, code actions, renaming, formatting, call/type hierarchies) plus lifecycle and configuration management. There are no obvious gaps for standard code intelligence workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A TypeScript-aware MCP server that provides coding agents with repository discovery, code intelligence, and web project context for local codebases. It enables deep symbol navigation, diagnostic reporting, and structural analysis of monorepos without requiring full IDE integration.
    7
    12
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Exposes Language Server Protocol (LSP) tools such as diagnostics, goto definition, find references, symbols, and rename as a stdio MCP server.
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A self-hosted MCP and HTTP server for TypeScript code intelligence, providing AI agents with fast semantic code navigation tools like finding definitions, references, implementations, file outlines, dependency graphs, and search.
    749
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that exposes LSP-backed code navigation and editing tools to LLM agents using a single global config file to route file extensions to language servers.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/beruang/lsp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server