io.github.blackwell-systems/agent-lsp
NPM · @BLACKWELL-SYSTEMS/AGENT-LSP · SCANNED AUG 4
Orchestrates language servers into 65 code-intelligence tools across 30 languages, token-optimized.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 0 of 6 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 4 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 9724 tokens (~140/item across 69 items; 65 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 99% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @blackwell-systems/agent-lsp
claude mcp add blackwell-systems-agent-lsp -- npx -y @blackwell-systems/agent-lsp
codex mcp add blackwell-systems-agent-lsp -- npx -y @blackwell-systems/agent-lsp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"blackwell-systems-agent-lsp": {
"type": "local",
"command": [
"npx",
"-y",
"@blackwell-systems/agent-lsp"
],
"enabled": true
}
}
} openclaw mcp add blackwell-systems-agent-lsp --command npx --arg -y --arg @blackwell-systems/agent-lsp
mcp_servers:
blackwell-systems-agent-lsp:
command: "npx"
args: ["-y", "@blackwell-systems/agent-lsp"] {
"mcpServers": {
"blackwell-systems-agent-lsp": {
"command": "npx",
"args": [
"-y",
"@blackwell-systems/agent-lsp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +44
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −54
- Malware scan: pass → unverified ▼ security
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.16.0 → 0.17.0 functional
- 27 Jul 26 +36
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Tool coverage: 99 functional
- First check of Schema quality: fail functional
- 26 Jul 26 47
First indexed and scored.
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Aug 2026 · Analysed npm/@blackwell-systems/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Dependencies 6 packages
6 packages in the resolved dependency tree.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
activate_skill ~140
Activate phase enforcement for a skill workflow. Once active, tool calls are checked against the skill's phase permissions. Phases advance automatically as you call tools from later phases. Use this at the start of a skill workflow to enable safety guardrails that prevent out-of-order operations (e.g., applying edits before completing blast-radius analysis).
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | — | Enforcement mode: warn (log violations but allow) or block (return error with recovery guidance). Default: warn |
| skill_name | string | yes | Name of the skill to activate (e.g. lsp-rename, lsp-refactor, lsp-safe-edit, lsp-verify) |
No output schema declared.
No examples provided.
add_workspace_folder ~115
Add a directory to the LSP workspace, enabling cross-repo references, definitions, and diagnostics. Useful when working across a library and its consumers — after adding the consumer repo, find_references on a library function returns call sites in both repos. Requires start_lsp to have been called first. Language servers that support multi-root workspaces (gopls, rust-analyzer, typescript-language-server) will re-index the new folder automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Absolute path to the workspace folder to add/remove |
No output schema declared.
No examples provided.
apply_edit ~160
Apply an edit to a file. Two modes: (1) WorkspaceEdit mode: pass workspace_edit with positional changes returned by rename_symbol or format_document; (2) Text-match mode: pass file_path + old_text + new_text to find and replace text. For full function/method body replacements, consider replace_symbol_body which resolves by symbol name instead of text matching. Always call preview_edit first to verify the edit is safe.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | — | File path for text-match mode |
| new_text | string | — | Replacement text (text-match mode) |
| old_text | string | — | Text to find and replace (text-match mode) |
| workspace_edit | object | — | WorkspaceEdit object (as returned by rename_symbol or format_document) |
No output schema declared.
No examples provided.
blast_radius ~202
Enumerate all exported symbols in the specified files, resolve their references across the workspace, and partition callers into test vs non-test. Returns affected_symbols (name, file, line), test_callers (with enclosing test function names), and non_test_callers. Use before editing a file to understand blast radius. Set include_transitive=true to surface second-order callers (callers of callers). Set scope='all' to include unexported symbols for comprehensive dead code detection.
| Name | Type | Req | Description |
|---|---|---|---|
| changed_files | array | yes | List of absolute file paths to analyze for exported symbol impact |
| filter | string | — | Filter results: 'untested' returns only symbols with production callers but zero test callers |
| include_transitive | boolean | — | If true, include second-order callers (callers of callers) in the results |
| scope | string | — | Symbol scope: 'exported' (default) or 'all' (includes unexported symbols for dead code detection) |
No output schema declared.
No examples provided.
callers ~174
Find all incoming callers of a function or method. Shortcut for find_callers with direction='incoming'. Use before deleting or refactoring a function to see who depends on it.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| cross_concurrent | boolean | — | If true\, annotate callers that cross concurrent boundaries (goroutines\, threads\, async tasks). Returns concurrent_callers with the detected pattern. |
| direction | string | — | Direction: incoming\, outgoing\, or both (default: both) |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
close_document ~77
Close a file in the LSP server. Use this tool when you're done with a file to free up resources and reduce memory usage. It's good practice to close files that are no longer being actively analyzed, especially in long-running sessions or when working with large codebases.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the file to close |
No output schema declared.
No examples provided.
commit_session ~114
Commit a simulation session. With apply=true, writes changes to disk and notifies LSP servers. With apply=false, returns a unified diff patch. Use after evaluate_session confirms the changes are safe.
| Name | Type | Req | Description |
|---|---|---|---|
| apply | boolean | — | If true, write changes to disk and notify LSP. If false, return diff only |
| session_id | string | yes | Session identifier returned by create_simulation_session |
| target | string | — | Commit target: disk (write files) or patch (return unified diff). Default: patch |
No output schema declared.
No examples provided.
create_simulation_session ~89
Create a new speculative code session for simulating edits without committing to disk. Returns a session ID. Baseline diagnostics are captured lazily on first edit per file. Use this to explore what-if scenarios before applying changes.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | yes | Language identifier for the session (e.g. go, typescript) |
| workspace_root | string | yes | Workspace root directory for the simulation session |
No output schema declared.
No examples provided.
deactivate_skill ~47
Deactivate phase enforcement for the currently active skill. Tool calls will no longer be checked against phase permissions. Call this when the skill workflow is complete or when you need to exit the workflow early.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
destroy_session ~59
Destroy a simulation session and release all resources. Call this after commit or discard to clean up. Sessions in terminal states (committed, discarded, destroyed) cannot be reused.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Session identifier returned by create_simulation_session |
No output schema declared.
No examples provided.
detect_changes ~194
Run git diff to identify changed files, analyze their exported symbols via blast_radius, and return affected symbols with risk classification. Risk levels: 'high' (callers from multiple packages), 'medium' (callers from same package only), 'low' (zero non-test callers). Use before committing to understand the blast radius of uncommitted or recently committed changes.
| Name | Type | Req | Description |
|---|---|---|---|
| range | string | — | Git range for 'committed' scope. Examples: 'v0.7.0..HEAD', 'abc123..def456', 'main'. If a single ref is given, compares ref~1..ref. Ignored for unstaged/staged scopes. |
| scope | string | — | Which changes to analyze: 'unstaged' (default), 'staged', or 'committed' |
| workspace_root | string | — | Absolute path to the git repository root. Defaults to the LSP workspace root if omitted |
No output schema declared.
No examples provided.
detect_lsp_servers ~97
Scan a workspace directory for source languages and check PATH for the corresponding LSP server binaries. Returns detected workspace languages (ranked by prevalence), installed servers with their paths, and a suggested_config array ready to paste into the agent-lsp MCP server args. Use this to set up agent-lsp for a new project or verify your configuration.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_dir | string | yes | Directory to scan for source languages and LSP server binaries |
No output schema declared.
No examples provided.
did_change_watched_files ~112
Notify the language server that files have changed on disk outside the editor (workspace/didChangeWatchedFiles). Use this after writing files directly to disk so the server refreshes its caches. Change types: 1=created, 2=changed, 3=deleted. File URIs must use the file:/// scheme.
| Name | Type | Req | Description |
|---|---|---|---|
| changes | array | yes | Array of file change events: [{uri\, type}] where type is 1=created\, 2=changed\, 3=deleted |
No output schema declared.
No examples provided.
discard_session ~51
Discard a simulation session and revert all in-memory changes by restoring baseline content. Use when simulation results show the changes would introduce errors.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Session identifier returned by create_simulation_session |
No output schema declared.
No examples provided.
evaluate_session ~118
Evaluate a simulation session by comparing current diagnostics against baselines. Returns errors introduced, errors resolved, net delta, and confidence (high for file scope, eventual for workspace). Use after simulate_edit to assess impact before committing.
| Name | Type | Req | Description |
|---|---|---|---|
| scope | string | — | Evaluation scope: file (fast, single file) or workspace (full, all files). Default: file |
| session_id | string | yes | Session identifier returned by create_simulation_session |
| timeout_ms | integer | — | Timeout in milliseconds for LSP diagnostics collection. Default: 5000 |
No output schema declared.
No examples provided.
execute_command ~104
Execute a workspace command via LSP. Commands are server-defined identifiers returned by code actions (in the command field of a CodeAction). Use this after suggest_fixes to trigger a server-side operation such as applying a refactoring, generating code, or running a server-specific action. Returns the server-defined result or null.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | array | — | Command arguments as array of JSON objects |
| command | string | yes | LSP command identifier (from code action's command field) |
No output schema declared.
No examples provided.
explore ~170
Deep exploration of a symbol: combines type info, source, callers, references, and test callers in one call. Use when navigating unfamiliar code and you need the full picture of what a symbol is and how it is used.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | — | 1-indexed column (character offset) in the line. Optional when position_pattern is provided. |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| line | integer | — | 1-indexed line number in the file. Optional when position_pattern is provided. |
| position_pattern | string | — | Alternative to line/column: use @@pattern@@ syntax to match text near the target position |
No output schema declared.
No examples provided.
explore_symbol ~186
Deep-dive into a symbol: type info, source code, callers (top 10), references (count + top 5 files), and test caller count in one call. Use when you need full context about a symbol before editing. Accepts file_path + line/column or position_pattern.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | — | 1-indexed column (character offset) in the line. Optional when position_pattern is provided. |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | — | 1-indexed line number in the file. Optional when position_pattern is provided. |
| position_pattern | string | — | Alternative to line/column: use @@pattern@@ syntax to match text near the target position |
No output schema declared.
No examples provided.
export_cache ~87
Export the symbol reference cache as a gzip-compressed artifact for team sharing. The exported file can be committed to the repository (e.g. .agent-lsp/cache.db.gz) so teammates skip cold-start indexing. Requires start_lsp to have been called first.
| Name | Type | Req | Description |
|---|---|---|---|
| dest_path | string | yes | Destination path for the compressed cache artifact (e.g. .agent-lsp/cache.db.gz) |
No output schema declared.
No examples provided.
find_callers ~197
Find what calls this function and what it calls. Returns incoming callers, outgoing callees, or both (default). Use before deleting or refactoring a function to understand its role in the call graph. Works on functions and methods only; for types, use find_references instead.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| cross_concurrent | boolean | — | If true\, annotate callers that cross concurrent boundaries (goroutines\, threads\, async tasks). Returns concurrent_callers with the detected pattern. |
| direction | string | — | Direction: incoming\, outgoing\, or both (default: both) |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
find_references ~208
Find all usages of a symbol across the codebase. Use before renaming, deleting, or changing any symbol to understand who calls it. Zero references means the symbol may be dead code; use safe_delete_symbol to remove it safely. For blast-radius analysis with test/non-test partitioning, use blast_radius instead.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | — | 1-indexed column (character offset) in the line. Optional when position_pattern is provided. |
| file_path | string | yes | Absolute path to the source file |
| include_declaration | boolean | — | Whether to include the declaration site in the results |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| line | integer | — | 1-indexed line number in the file. Optional when position_pattern is provided. |
| position_pattern | string | — | Alternative to line/column: use @@pattern@@ syntax to match text near the target position |
No output schema declared.
No examples provided.
find_symbol ~151
Search for a symbol by name across the entire workspace. Returns matching symbols with name, kind, file, and location. Use when you know a symbol's name but not its file. Use detail_level: "hover" to also get type signatures and docs for each match.
| Name | Type | Req | Description |
|---|---|---|---|
| detail_level | string | — | Enrichment level: 'basic' for names/locations only, 'hover' to include type signatures and docs |
| limit | integer | — | Maximum number of symbols to enrich with hover info (default 3) |
| offset | integer | — | Number of symbols to skip before enriching (default 0), for pagination |
| query | string | — | Symbol name or pattern to search for across the workspace |
No output schema declared.
No examples provided.
format_document ~119
Get formatting edits for a file via LSP. Returns TextEdit[] for inspection (not applied automatically). Apply via apply_edit. Formats one file at a time; to find which files need formatting, use your shell (e.g. gofmt -l ./...).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the file to format |
| insert_spaces | boolean | — | Use spaces instead of tabs. Default: true |
| language_id | string | — | — |
| tab_size | integer | — | Tab size in spaces. Default: 4 |
No output schema declared.
No examples provided.
format_range ~200
Get formatting edits for a specific range within a document via LSP (textDocument/rangeFormatting). Returns TextEdit[] for the selected lines/characters only. Use this when you want to format a function, block, or selection rather than the entire file. The edits are NOT applied automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| end_column | integer | yes | 1-indexed end column of the range to format |
| end_line | integer | yes | 1-indexed end line of the range to format |
| file_path | string | yes | Absolute path to the file to format |
| insert_spaces | boolean | — | Use spaces instead of tabs. Default: true |
| language_id | string | — | — |
| start_column | integer | yes | 1-indexed start column of the range to format |
| start_line | integer | yes | 1-indexed start line of the range to format |
| tab_size | integer | — | Tab size in spaces. Default: 4 |
No output schema declared.
No examples provided.
get_completions ~159
Get completion suggestions at a specific location in a file. Use this tool to retrieve code completion options based on the current context, including variable names, function calls, object properties, and more. Helpful for code assistance and auto-completion at a particular location. Use this when determining which functions you have available in a given package, for example when changing libraries.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
get_cross_repo_references ~202
Find all references to a library symbol across one or more consumer repositories. Adds each consumer_root as a workspace folder, waits for indexing, then calls find_references and partitions results by repo. Returns library_references (within the primary repo), consumer_references (map of root → locations), and warnings (roots that could not be indexed). Use before changing a shared library API to find all downstream callers.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) of the symbol in the line |
| consumer_roots | array | yes | List of absolute paths to consumer repository roots to search for references |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number of the symbol in the file |
| symbol_file | string | yes | Absolute path to the file containing the symbol to search for |
No output schema declared.
No examples provided.
get_diagnostics ~125
Get diagnostic messages (errors, warnings) for files. Use this tool to identify problems in code files such as syntax errors, type mismatches, or other issues detected by the language server. When used without a file_path, returns diagnostics for all open files.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | — | File path to get diagnostics for. If omitted, returns diagnostics for all open files |
| group_by | string | — | Set to 'symbol' to group diagnostics by their owning symbol. Returns symbols with their diagnostics instead of a flat list. Helps understand which function or type is broken. |
No output schema declared.
No examples provided.
get_document_highlights ~168
Find all occurrences of the symbol at a position within the same file via LSP (textDocument/documentHighlight). Returns ranges and kinds: 1=Text, 2=Read, 3=Write. File-scoped and instant — does not trigger a workspace-wide reference search. Use this to find all local usages of a variable, parameter, or field without the overhead of find_references.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
get_inlay_hints ~250
Get inlay hints for a range within a document via LSP (textDocument/inlayHint). Inlay hints are inline annotations that IDEs display in source code — typically inferred type names (e.g. `: string`) and parameter name labels (e.g. `count:`). Useful in languages with type inference (TypeScript, Rust, Go) to see what the compiler knows without reading every type annotation. Returns an array of InlayHint objects, each with a position, label, and optional kind (1=Type, 2=Parameter). Returns an empty array if the language server does not support inlay hints.
| Name | Type | Req | Description |
|---|---|---|---|
| end_column | integer | yes | 1-indexed end column of the range |
| end_line | integer | yes | 1-indexed end line of the range |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| start_column | integer | yes | 1-indexed start column of the range |
| start_line | integer | yes | 1-indexed start line of the range |
No output schema declared.
No examples provided.
get_semantic_tokens ~201
Get semantic tokens for a range in a file. Returns each token's type (function, variable, keyword, parameter, type, etc.) and modifiers (readonly, static, deprecated, etc.) with 1-based line/character positions. Use this to understand the syntactic role of code elements — distinct from hover which gives documentation. Only available when the language server supports textDocument/semanticTokens.
| Name | Type | Req | Description |
|---|---|---|---|
| end_column | integer | yes | 1-indexed end column of the range |
| end_line | integer | yes | 1-indexed end line of the range |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| start_column | integer | yes | 1-indexed start column of the range |
| start_line | integer | yes | 1-indexed start line of the range |
No output schema declared.
No examples provided.
get_server_capabilities ~89
Return the language server's capability map and classify every agent-lsp tool as supported or unsupported based on what the server advertised during initialization. Use this to determine which tools will return results before calling them — saves round trips on servers that don't support certain LSP features (e.g. not all servers support type_hierarchy or inlay_hints). Requires start_lsp to have been called first.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_signature_help ~133
Get function signature help at a specific location in a file via LSP. Returns available overloads and highlights the active parameter. Use this when the cursor is inside a function call's argument list to understand what parameters the function expects.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
get_skill_phase ~51
Get the current state of skill phase enforcement: active skill, current phase, allowed and forbidden tools, and tool call history. Use this to understand where you are in a skill workflow and what tools are available.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_symbol_documentation ~175
Fetch authoritative documentation for a named symbol from local toolchain sources (go doc, pydoc, cargo doc) without requiring an LSP hover response. Works on transitive dependencies not indexed by the language server. Returns the full doc text, extracted signature, and source tag. Falls back gracefully when the toolchain command fails or the language is unsupported.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | — | Optional file path to establish workspace context for the documentation lookup |
| format | string | — | Output format for the documentation (e.g. 'markdown', 'plain') |
| language_id | string | yes | Language identifier (e.g. go, python, rust) to select the correct toolchain doc command |
| symbol | string | yes | Fully qualified symbol name to look up (e.g. 'fmt.Println', 'os.File.Read') |
No output schema declared.
No examples provided.
get_symbol_source ~221
Return the source code of the innermost symbol (function, method, class, struct, etc.) whose range contains the given cursor position. Calls textDocument/documentSymbol, walks the symbol tree to find the smallest enclosing symbol, then slices the file at that symbol's range. Returns symbol_name, symbol_kind, start_line (1-based), end_line (1-based), and source text. Use line+character or position_pattern (@@-syntax) to specify the cursor. character defaults to 1.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | — | 1-indexed column (character offset) in the line (defaults to 1) |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| line | integer | — | 1-indexed line number of the cursor position |
| position_pattern | string | — | Alternative to line/column: use @@pattern@@ syntax to match text near the target position |
No output schema declared.
No examples provided.
get_tests_for_file ~106
Given a source file path, return the test files that exercise it. Static lookup — no test execution. Go: *_test.go in same directory. Python: test_*.py / *_test.py in same dir and tests/ sibling. TypeScript/JS: *.test.ts, *.spec.ts etc. Rust: returns source file itself (tests inline). Does not require start_lsp.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Source file path to find associated test files for |
No output schema declared.
No examples provided.
go_to_declaration ~162
Jump to the declaration of a symbol at a specific location in a file via LSP. Completes the 'go to X' family alongside go_to_definition, go_to_type_definition, and go_to_implementation. Most useful for languages with separate declaration and definition (e.g., C/C++ header files). Returns the file path and position where the symbol is declared.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
go_to_definition ~161
Jump to the definition of a symbol at a specific location in a file via LSP. Returns the file path and position where the symbol is defined. Useful for navigating to type declarations, function implementations, or variable assignments across the codebase.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
| position_pattern | string | — | Alternative to line/column: use @@pattern@@ syntax to match text near the target position |
No output schema declared.
No examples provided.
go_to_implementation ~138
Find all implementations of an interface or abstract method at a specific location in a file via LSP. Returns the file paths and positions of all concrete implementations. Use this to navigate from an interface declaration or abstract method to the concrete classes that implement it.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
go_to_symbol ~122
Navigate to a symbol definition by dot-notation name (e.g. "LSPClient.GetReferences", "http.Handler") without needing file_path or line/column. Uses workspace symbol search to locate the definition. Useful when you know the symbol name but not its location.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | — | Language filter for symbol search. Optional |
| symbol_path | string | yes | Dot-notation symbol path (e.g. MyStruct.MyMethod\, http.Handler) |
| workspace_root | string | — | Workspace root directory for symbol search. Optional; uses current workspace |
No output schema declared.
No examples provided.
go_to_type_definition ~150
Jump to the definition of the type of a symbol at a specific location in a file via LSP. Unlike go_to_definition (which goes to where the symbol itself is defined), this navigates to the type declaration. Useful for interface types, type aliases, and class definitions when working with instances or variables.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
import_cache ~70
Import a gzip-compressed cache artifact, replacing the current symbol reference cache. Use this to load a team-shared cache exported via export_cache. Validates database integrity after import. Requires start_lsp to have been called first.
| Name | Type | Req | Description |
|---|---|---|---|
| src_path | string | yes | Path to the compressed cache artifact to import |
No output schema declared.
No examples provided.
insert_after_symbol ~105
Insert code immediately after a named symbol definition. Resolves the symbol's end position via document symbols. Use for adding new methods after existing ones, appending related functions, etc.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | Code to insert after the symbol definition |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier. Optional; auto-detected |
| symbol_path | string | yes | Dot-notation symbol path to insert after |
No output schema declared.
No examples provided.
insert_before_symbol ~106
Insert code immediately before a named symbol definition. Resolves the symbol's start position via document symbols. Use for adding imports, comments, decorators, or type definitions before their first consumer.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | Code to insert before the symbol definition |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier. Optional; auto-detected |
| symbol_path | string | yes | Dot-notation symbol path to insert before |
No output schema declared.
No examples provided.
inspect_symbol ~180
Get type information, documentation, and signature for a symbol at a specific location. Use this to understand what a function does, what type a variable has, or what a module exports before editing it. For finding all usages of the symbol, use find_references instead.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | — | 1-indexed column (character offset) in the line. Optional when position_pattern is provided. |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
| line | integer | — | 1-indexed line number in the file. Optional when position_pattern is provided. |
| position_pattern | string | — | Alternative to line/column: use @@pattern@@ syntax to match text near the target position |
No output schema declared.
No examples provided.
list_symbols ~141
List all symbols defined in a file (functions, types, methods, variables). Returns a hierarchical tree showing the file's structure. Use to get an overview before editing, or to find the exact name of a symbol for use with replace_symbol_body or find_references. Pass format: "outline" for compact markdown output optimized for LLM consumption.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the source file |
| format | string | — | Output format: 'outline' for compact markdown, default returns JSON |
| language_id | string | — | Language identifier (e.g. go, typescript, python). Optional; auto-detected from file extension |
No output schema declared.
No examples provided.
list_workspace_folders ~29
List all currently active workspace folders. Use this to see which roots the language server is indexing.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
open_document ~132
Open a file in the LSP server for analysis. Use this tool before performing operations like getting diagnostics, hover information, or completions for a file. The file remains open for continued analysis until explicitly closed. The language_id parameter tells the server which language service to use (e.g., 'typescript', 'javascript', 'haskell'). The LSP server starts automatically on MCP launch.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the file to open in the LSP server |
| language_id | string | — | — |
| text | string | — | Optional file content override. If omitted, reads from disk |
No output schema declared.
No examples provided.
prepare_rename ~151
Validate that a rename is possible at the given position before committing to rename_symbol. Returns the range that would be renamed and a placeholder name suggestion, or a message indicating rename is not supported at this position. Use this before rename_symbol to avoid attempting invalid renames. Returns null if the server does not support prepareRename.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | 1-indexed column (character offset) in the line |
| file_path | string | yes | Absolute path to the source file |
| language_id | string | — | Language identifier (e.g. go\, typescript\, python). Optional; auto-detected from file extension |
| line | integer | yes | 1-indexed line number in the file |
No output schema declared.
No examples provided.
preview_edit ~293
Preview the impact of an edit before writing to disk. Shows what errors would be introduced or resolved without touching the file. If net_delta is 0, the edit is safe to apply without further verification. Use before every apply_edit to catch problems early. All line/column positions are 1-indexed. For full function replacements, consider replace_symbol_body instead of apply_edit.
| Name | Type | Req | Description |
|---|---|---|---|
| end_column | integer | yes | 1-indexed end column of the range to replace |
| end_line | integer | yes | 1-indexed end line of the range to replace |
| file_path | string | yes | Absolute path to the file to edit within the session |
| language | string | — | Language identifier for the session (e.g. go, typescript) |
| new_text | string | yes | Replacement text for the specified range |
| scope | string | — | Evaluation scope: file (fast, single file) or workspace (full, all files). Default: file |
| session_id | string | — | Session identifier returned by create_simulation_session |
| start_column | integer | yes | 1-indexed start column of the range to replace |
| start_line | integer | yes | 1-indexed start line of the range to replace |
| timeout_ms | integer | — | Timeout in milliseconds for LSP diagnostics collection. Default: 5000 |
| workspace_root | string | — | Workspace root directory for the simulation session |
No output schema declared.
No examples provided.