relate
Graph relationship traversal via one kind (real edges, not text). Kinds (1-10 symbols; heritage/chain one):
callers: direct callers. granularity:'file' (default) one row/file, 'site' one row/caller.
dependencies: outgoing calls/imports.
blast_radius: upstream impact walk (every caller, importer and referencer up to 3 hops, no per-hop sampling) + co-change siblings; risk {level,signals}. includeCrossRepo defaults ON here (off for others). blastRadiusTotalCount is the number of distinct symbols that 3-hop walk reached, not the row count: the blastRadius array is capped by expansionLimit. blastRadiusTruncated:true means the rows are a sample of that total; blastRadiusTotalAtLeast:true means the count stopped at its 10000 bound, so quote it as "N+". The walk stops at 3 hops, so it can miss impact further away; it never overcounts. Never report the number of listed rows as the impact size.
implementers: classes implementing interfaces via heritage edges.
heritage: full hierarchy (ancestors+descendants) of ONE type. maxDepth caps it.
chain: call-chain paths for a node (nodeId OR selectors[0]); chain params tune the walk.
path: shortest connection between selectors[0] (from) and selectors[1] (to). Direction-agnostic hop-labeled path; found:false when none within 6 hops. minimal:true = {id,name,filePath,startLine}-only (~50% cheaper) on callers/dependencies/blast_radius/implementers; granularity on callers/blast_radius. Rows may carry confidence (tiers in init usage); a cross-repo callers/dependencies row joined by a SCIP moniker also carries package (the package name that bridged the repos). 0 results: call locate (mode:text), not Grep; reason:"no_edges_indexed" = no edges.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Relationship to traverse. See the tool description for each kind. | callers |
| depth | No | chain. Chain length. | |
| limit | No | Per-selector candidate cap (not heritage/chain). | |
| intent | No | Rerank by trigram similarity (not heritage/chain). | |
| nodeId | No | Start node for chain (OR selectors[0]). | |
| minimal | No | {id,name,filePath,startLine}-only, ~50% cheaper; not heritage/chain. | |
| feedback | No | Optional: report how a previous answer worked out; piggybacks on any call. | |
| maxDepth | No | Max depth for heritage; also caps the kind:path walk (clamped to <=6). | |
| maxPaths | No | chain. Cap on returned paths. | |
| commitSha | No | Pin reads to one indexed revision (7-40 hex). Graph tools error with revision_not_indexed when it is not an indexed revision of the scoped repository, or revision_not_servable when that revision's graph was superseded by a later reindex, and echo the revision served back as commitSha; source ops read git objects, so any commit works there. Exception: a kept revision (revisions rows flagged architectureSnapshot) still serves map view:"architecture" as a preserved snapshot. | |
| direction | No | chain. 'downstream' leaves, 'upstream' entry points, 'both' (default). | both |
| projectId | No | Project id from init/list_projects. Omit for the active project. | |
| selectors | No | Symbols to traverse from (1-10). heritage uses selectors[0]; chain: OR nodeId. | |
| edgeFilter | No | chain. 'calls' | 'imports' | 'calls_imports' (default). | calls_imports |
| repository | No | Repository full name, e.g. "owner/repo". Omit when the project has one repository. | |
| granularity | No | callers/blast_radius. 'file' one row/file, 'site' one row/node. | file |
| expansionLimit | No | Caps returned count (not heritage/chain). Default 15. | |
| landmarkFilter | No | chain. Keep only paths through a node matching this. | |
| terminalFilter | No | chain. Restrict to paths ending at a node matching this. | |
| includeCrossRepo | No | Walk cross-repo edges. Default true for blast_radius, false otherwise. | |
| staysWithinClass | No | chain. Surface intra-class dispatch order. | |
| pruneSetupMethods | No | chain. Drop framework bootstrap steps. | |
| followPolymorphism | No | chain. Walk polymorphic dispatch edges (default false; untraversed hops in polymorphicBranchPoints). | |
| minimalImplementers | No | Alias of minimal for implementers. |