Nuanced LSP provides symbol-level APIs for exploring your codebase. These commands let you list definitions, locate identifiers, and find references or symbol relationships within the workspace.
CommandDescription
Definitions in FileList all symbol definitions in a specific file.
Find DefinitionFind the definition of the identifier at a given position.
Find IdentifierFind identifiers by name within a file.
Find Referenced SymbolsFind symbols referenced by the identifier at a given position.
Find ReferencesFind all references to the identifier at a given position.
These commands use 0-indexed positions in the format line:char (e.g. 0:0 for the first character of the first line).

Definitions in File

List all symbol definitions within a single file.
The file path argument should always be relative to the workspace root.
> nuanced-lsp-ts definitions-in-file path/to/file

Arguments

ArgumentDescriptionRequired
filePath relative to workspace root

CLI options

OptionDescriptionDefault
--lsp-url <url>Nuanced LSP base URL"http://127.0.0.1"
--lsp-port <n>Port for Nuanced LSP4444
--timeout <s>Timeout seconds (<=0 to skip)120

Result

Returns JSON array of definitions:
[
  {
    "name": "registerTools",
    "kind": "function",
    "identifier_position": {
      "path": "src/tools/index.ts",
      "position": { "line": 4, "character": 16 }
    },
    "file_range": {
      "path": "src/tools/index.ts",
      "range": {
        "start": { "line": 4, "character": 0 },
        "end": { "line": 7, "character": 1 }
      }
    }
  }
]

Find Definition

Find the definition of the identifier at a given position.
Positions are always 0-indexed in the format line:char (e.g., 0:0 for the first character of the first line).
> nuanced-lsp-ts find-definition path/to/file 4:16

Arguments

ArgumentDescriptionRequired
filePath relative to workspace root
positionPosition in line:char format (0-indexed)

CLI options

OptionDescriptionDefault
--lsp-url <url>Nuanced LSP base URL"http://127.0.0.1"
--lsp-port <n>Port for Nuanced LSP4444
--timeout <s>Timeout seconds (<=0 to skip)120

Result

Returns JSON matching FindDefinitionResult:
{
  "raw_response": [
    {
      "range": {
        "end": { "character": 29, "line": 4 },
        "start": { "character": 16, "line": 4 }
      },
      "uri": "file:///workspace/src/tools/index.ts"
    }
  ],
  "definitions": [
    {
      "path": "src/tools/index.ts",
      "position": { "line": 4, "character": 16 }
    }
  ],
  "source_code_context": [
    {
      "file_range": {
        "path": "src/tools/index.ts",
        "range": {
          "start": { "line": 4, "character": 7 },
          "end": { "line": 7, "character": 1 }
        }
      },
      "source_code": "function registerTools(server: McpServer) {\n  registerInitTool(server);\n  registerEnrichTool(server);\n}"
    }
  ],
  "selected_identifier": {
    "name": "registerTools",
    "file_range": {
      "path": "src/tools/index.ts",
      "range": {
        "start": { "line": 4, "character": 16 },
        "end": { "line": 4, "character": 29 }
      }
    },
    "kind": null
  }
}

Find Identifier

Find identifiers by name within a file. Optionally provide a seed position.
You can call this endpoint with a position and without a position to affect its behavior:
  • Without a position returns all matching identifiers in the file.
  • With a position scopes the identifier returned to the identifier and position provided, or if none are found at the precise position, the 3 closest (by position) identifiers matching the name.
> nuanced-lsp-ts find-identifier path/to/file registerTools
With a seed position:
> nuanced-lsp-ts find-identifier path/to/file registerTools --position 15:29

Arguments

ArgumentDescriptionRequired
filePath relative to workspace root
nameIdentifier name to search for

CLI options

OptionDescriptionDefault
--position <line:char>Optional seed position (0-indexed line:char)
--lsp-url <url>Nuanced LSP base URL"http://127.0.0.1"
--lsp-port <n>Port for Nuanced LSP4444
--timeout <s>Timeout seconds (<=0 to skip)120

Result

Returns JSON matching FindIdentifierResult:Without position
{
  "identifiers": [
    {
      "name": "registerTools",
      "file_range": {
        "path": "src/tools/index.ts",
        "range": {
          "start": { "line": 4, "character": 16 },
          "end":   { "line": 4, "character": 29 }
        }
      },
      "kind": null
    }
  ]
}
With position
{
  "identifiers": [
    {
      "name": "registerTools",
      "file_range": {
        "path": "src/tools/index.ts",
        "range": {
          "start": { "line": 4, "character": 16 },
          "end":   { "line": 4, "character": 29 }
        }
      },
      "kind": null
    }
  ]
}

Find Referenced Symbols

For a target symbol, returns all symbols referenced within the target’s implementation. The referenced symbols are categorized into the following:
  • Workspace symbols: symbols found in the workspace along with their definitions.
  • External symbols: symbols from external libraries or built-in functions.
  • Not found symbols: symbols Nuanced LSP was unable to resolve.
The full scan option uses more permissive rules for finding referenced symbols. Depending on the LSP server, may use type hints and chained indirection.
> nuanced-lsp-ts find-referenced-symbols --full-scan path/to/file 4:16

CLI options

OptionDescriptionDefault
filePath relative to workspace root
positionPosition in line:char format (0-indexed)
--full-scanPerform a broader workspace scan for referencesfalse
--lsp-url <url>Nuanced LSP base URL"http://127.0.0.1"
--lsp-port <n>Port for Nuanced LSP4444
--timeout <s>Timeout seconds (<=0 to skip)120

Result

Returns JSON matching FindReferencedSymbolsResult (excerpt):
{
  "workspace_symbols": [
    {
      "reference": {
        "name": "registerInitTool",
        "file_range": {
          "path": "src/tools/index.ts",
          "range": {
            "start": { "line": 5, "character": 2 },
            "end":   { "line": 5, "character": 18 }
          }
        },
        "kind": "all-references"
      },
      "definitions": [
        {
          "name": "registerInitTool",
          "kind": "function",
          "identifier_position": {
            "path": "src/tools/init.ts",
            "position": { "line": 12, "character": 16 }
          },
          "file_range": {
            "path": "src/tools/init.ts",
            "range": {
              "start": { "line": 12, "character": 0 },
              "end":   { "line": 22, "character": 1 }
            }
          }
        }
      ]
    }
  ],
  "external_symbols": [],
  "not_found": []
}

Find References

Find all references to the identifier at a given position. Optionally include lines of code context around each reference.
The optional context lines parameter includes lines of source code around each found reference.
> nuanced-lsp-ts find-references path/to/file 6:21
Include context lines:
> nuanced-lsp-ts find-references --context-lines 3 path/to/file 6:21

Arguments

ArgumentDescriptionRequired
filePath relative to workspace root
positionPosition in line:char format (0-indexed)

CLI options

OptionDescriptionDefault
--context-lines <n>Include n lines of surrounding code for each reference0
--lsp-url <url>Nuanced LSP base URL"http://127.0.0.1"
--lsp-port <n>Port for Nuanced LSP4444
--timeout <s>Timeout seconds (<=0 to skip)120

Result

Returns JSON matching FindReferencesResult (excerpt):
{
  "raw_response": [{ "range": { "start": { "line": 4, "character": 30 }, "end": { "line": 4, "character": 36 } }, "uri": "file:///workspace/src/tools/index.ts" }],
  "references": [
    { "path": "src/tools/index.ts", "position": { "line": 4, "character": 30 } },
    { "path": "src/tools/index.ts", "position": { "line": 5, "character": 19 } },
    { "path": "src/tools/index.ts", "position": { "line": 6, "character": 21 } }
  ],
  "context": [
    {
      "file_range": {
        "path": "src/tools/index.ts",
        "range": { "start": { "line": 4, "character": 0 }, "end": { "line": 4, "character": 0 } }
      },
      "source_code": ""
    }
  ],
  "selected_identifier": {
    "name": "server",
    "file_range": {
      "path": "src/tools/index.ts",
      "range": { "start": { "line": 6, "character": 21 }, "end": { "line": 6, "character": 27 } }
    },
    "kind": null
  }
}