Browse documentation

changed_symbols

[callgraph]

Resolves changed line ranges to the declarations containing them, with symbol keys and a change classification. Start a review here.

Try it locally in the Glider playground

Parameters

NameTypeRequiredDescription
hunksjsonYesChanged ranges. Each carries beforePath, beforeRange, afterPath and afterRange. Both paths are nullable, and both are carried so a rename stays one result.
beforeFilesjsonNoPrior text of each changed file. Required to classify a modification; a pure addition needs none.
pathStylestringNoabsolute or relative. Relative paths resolve against the solution root. Default: "absolute"
skipnumberNoNumber of declarations to skip. Default: 0
takenumberNoMaximum declarations to return. Default: 50
responseDetailstringNocompact returns results and actionable state. full adds diagnostic metadata under responseDiagnostics. Default: "compact"

Examples

Replace sample paths and symbol keys with values from your workspace.

Resolve a review hunk to the declaration it changed

Arguments
{
  "hunks": [
    {
      "beforePath": "src/Orders/OrderService.cs",
      "beforeRange": {
        "startLine": 42,
        "endLine": 44
      },
      "afterPath": "src/Orders/OrderService.cs",
      "afterRange": {
        "startLine": 42,
        "endLine": 47
      }
    }
  ],
  "beforeFiles": [
    {
      "path": "src/Orders/OrderService.cs",
      "content": "// previous contents"
    }
  ]
}
Full MCP request
Full MCP request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "changed_symbols",
    "arguments": {
      "hunks": [
        {
          "beforePath": "src/Orders/OrderService.cs",
          "beforeRange": {
            "startLine": 42,
            "endLine": 44
          },
          "afterPath": "src/Orders/OrderService.cs",
          "afterRange": {
            "startLine": 42,
            "endLine": 47
          }
        }
      ],
      "beforeFiles": [
        {
          "path": "src/Orders/OrderService.cs",
          "content": "// previous contents"
        }
      ]
    }
  }
}

Response Notes

Returns the declarations that contain the changed lines. Each carries its kind and its span on every side that exists. Each carries a symbol key where one resolves. Each is classified as added, removed, signature-changed, body-only, or unknown. A changed line belongs to the innermost declaration containing it. The nearest externally addressable ancestor comes with it when the two differ. The whole ancestor chain never does. A local function reports no key of its own, because impact tools cannot resolve one; use its ancestor instead. Totals and the classification breakdown cover the diff before paging. One call therefore carries the complete summary, and only the detail list pages. The completeness block reports what the answer left out. It names files in unsupported languages and hunks that matched no declaration. signature-changed against body-only is API-compatibility metadata and nothing more. A body-only change cannot break a caller at compile time. It can still change behaviour, so never skip behavioural review on it. Never prune on unknown. This build takes explicit hunks rather than a git range. Results use top-level fields with success. Compact is the default; full adds responseDiagnostics. Both modes retain errors, coverage, partial state, and recovery advice.