AST-based call graph analysis for AI agents. 28 commands via CLI, MCP server, or agent skill.
Find callers. Trace impact. Detect dead code. Across JS/TS, Python, Go, Rust, Java, and HTML.
$ ucn impact processOrder
Impact analysis for processOrder
src/orders/service.ts:45
CALL SITES: 3
Files affected: 3
BY FILE:
src/api/checkout.ts (1 call)
:89 [handleCheckout]
await processOrder(cart.items, req.user)
src/workers/batch.ts (1 call)
:12 [batchProcess]
processOrder(order.items, systemUser)
src/jobs/daily.ts (1 call)
:88 [runDailyOrders]
results.push(await processOrder(items, admin))
Navigate code by meaning, not text. Tree-sitter ASTs understand your code structure across functions, classes, and modules.
Pull out any function by name with ucn fn. Get clean, complete definitions from files of any size.
See the full call hierarchy with ucn trace. Map entire execution flows without reading files.
Know what breaks before you change it. ucn impact shows every call site with actual arguments.
Find unused functions and classes with ucn deadcode. AST-verified, not text-matching.
See what changed in a git diff and every downstream caller with ucn diff-impact. One command, full blast radius.
CLI, MCP server, or agent skill — same 28 commands everywhere.
Use directly from the terminal. Works standalone, no agent required.
$ ucn about myFunc
Any MCP-compatible AI agent connects and gets 28 commands automatically.
$ ucn --mcp
Drop-in skill for Claude Code and OpenAI Codex CLI. No server needed.
/ucn about myFunc
$ npm install -g ucn
# Claude Code
$ claude mcp add ucn -- npx -y ucn --mcp
# OpenAI Codex CLI
$ codex mcp add ucn -- npx -y ucn --mcp
# VS Code Copilot
$ code --add-mcp '{"name":"ucn","command":"npx","args":["-y","ucn","--mcp"]}'
# Claude Code
$ mkdir -p ~/.claude/skills
$ cp -r "$(npm root -g)/ucn/.claude/skills/ucn" ~/.claude/skills/
# OpenAI Codex CLI
$ mkdir -p ~/.agents/skills
$ cp -r "$(npm root -g)/ucn/.claude/skills/ucn" ~/.agents/skills/
One ucn tool, every code navigation task covered.
Same task, fewer tool calls, zero full-file reads.
This website uses cookies to enhance your experience.