paths
Enumerate every caller chain from a starting function to a destination function in a persistent call graph, multi-hop up to six, in one response.
Instructions
Enumerate every caller chain from from to to in the persistent call graph (multi-hop, max 6 by default). Prefer over repeated callers calls when you need to know how a function gets reached from a known entry point — paths walks the edges itself in a single response. Requires a v4 index with call graph (built without --no-call-graph).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Exact name of the destination function (callee being investigated). | |
| from | Yes | Exact name of the starting function (caller / entry point). | |
| exclude | No | Blacklist intermediate steps by path glob; wins over include (repeatable) | |
| include | No | Whitelist intermediate steps by path glob, gitignore syntax (repeatable) | |
| max_hops | No | Maximum hops between from and to | |
| max_paths | No | Maximum paths to enumerate (caps output, aborts traversal early) | |
| auto_update | No | Auto-update the index if stale, or bootstrap it if missing, before running (default: true) | |
| async_update | No | With auto_update, refresh a stale index in the background instead of waiting for it: results come from the index already on disk and _meta.vex.dev/stale says so (default: false) | |
| project_root | No | Absolute path to the project root (defaults to the MCP working directory) | |
| exclude_tests | No | Drop test files from the results (tests/ dirs, *_test.*, test_*.py, *.spec.ts, __tests__/, tests.rs, ...; same set as tests_for). Composes with include/exclude. Path-based only: Rust unit tests inside a `#[cfg(test)] mod tests` block of a non-test file are not excluded. | |
| no_stale_check | No | Skip the staleness check that runs before each call; assumes the index is fresh. Redundant when `auto_update` is true. |