changed_symbols
[callgraph]
Maps a selected diff to declarations, classification, and coverage. Use it when symbol evidence helps a review.
UNRELEASED Git selector: check that the installed schema advertises git. Released Glider 13.1.1 requires explicit hunks and beforeFiles.
Try it locally in the Glider playground
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| git | json | No | Comparison selector: mode is branch, direct, worktree, staged, or unstaged. branch uses merge-base; direct compares exact revisions. Supply separate baseRef and headRef values, not ranges. baseRef is required for branch/direct; headRef defaults to HEAD. worktree and staged default baseRef to HEAD. unstaged compares index to disk. includeUntracked defaults to true for worktree/unstaged. Preserve comparison.snapshotId as git.snapshotId on later pages. Unreleased. Check the installed schema. |
| hunks | json | Required if git is omitted | Changed ranges. Each carries beforePath, beforeRange, afterPath and afterRange. Both paths are nullable, and both are carried so a rename stays one result. |
| beforeFiles | json | No | Prior text of each changed file. Required to classify a modification; a pure addition needs none. |
| pathStyle | string | No | absolute or relative. Relative paths resolve against the solution root. Default: "absolute" |
| skip | number | No | Number of declarations to skip. Default: 0 |
| take | number | No | Maximum declarations to return. Default: 50 |
| responseDetail | string | No | compact 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.
UNRELEASED: inspect a branch from its merge base
{
"git": {
"mode": "branch",
"baseRef": "main"
}
}Full MCP request
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "changed_symbols",
"arguments": {
"git": {
"mode": "branch",
"baseRef": "main"
}
}
}
}Resolve a review hunk to the declaration it changed
{
"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
{
"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. Released 13.1.1 takes explicit hunks. UNRELEASED Git mode reports resolved commits, before/after sources, file hashes, and comparison.snapshotId. It analyzes a separate after snapshot. Inspect afterMatchesWorkspace and symbolIdentityScope. sourceMatchesWorkspace reports source correspondence separately. Evaluated import fingerprints are unavailable, so Git mode omits live keys and impact suggestions. Compatibility classifications remain unknown; additions and removals retain structural classification. Configuration candidates and their differences remain explicit. Follow pagination with the same selector and snapshotId; restart after a mismatch. Inspect skipped files even for empty results. Stop investigation when review questions and required coverage are satisfied; complete required final tests and builds. Results use top-level fields with success. Compact is the default; full adds responseDiagnostics. Both modes retain errors, coverage, partial state, and recovery advice.