MCP Tools
The six code tools — resolve patterns to source, expand deploys into change sets, trace blast radius
Once at least one repo has pushed a code graph, six code tools appear on your org's MCP server. Möbius uses them during investigations; you get the same tools in Claude Code, Cursor, Claude Desktop, and anything else connected through MCP integration (via dstl8 mcp or your org's MCP endpoint).
All six are read-only. Results are compact markdown with a Next steps: footer pointing at the natural follow-up tool.
list_code_repos
Lists the repos with a pushed code graph — services they build, log-site counts, and graph freshness. Call it first for situational awareness; if it reports no code graphs, the other tools have nothing to answer from.
Inputs: none.
"Which of our repos have code graphs?"
# Code graphs (2 repos)
- github.com/acme/checkout (main): services=[checkout, checkout-worker], 1240 log sites, 391 files, graph from 2026-08-12 commit 9f2c1ab
- github.com/acme/billing (main): services=[billing], 480 log sites, 122 files, graph from 2026-08-10 commit 4d0e8c2
---
Next steps: code_for_pattern(template_id) to place an erroring pattern in source | code_changes(event_id) to see what a deploy shippedcode_for_pattern
Resolves one error pattern to the source code that emits it: repo, file:line, function, and the commit that last shipped it. Set exactly one of template_id or log_line.
Inputs:
template_id
A pt-… pattern ID (from query_patterns or an incident's evidence fingerprints)
log_line
Alternative: one raw log line to locate in source
service
Optional: only return sites in repos that build this service
limit
Max matches (default 5)
"Where in the code does
pt-ab12cd34efcome from?"
Each match is tagged [exact 1.00] or [contained 0.94] — exact means the runtime pattern's fingerprint equals the format string's fingerprint; contained is a scored token-containment match (structured loggers append fields at runtime, so the runtime line is often a superset of the format string). When several identical format strings exist, all candidate sites are returned — the one named in other evidence (or touched by a recent deploy) is the likely one.
code_changes
Expands a deploy into what it shipped, at file and log-statement level. Prefer passing a platform event ID; a raw commit range works too.
Inputs:
event_id
A deploy or ci platform event ID from list_events (preferred)
repo
Alternative: repo key (github.com/owner/name) — requires from_sha and to_sha
from_sha / to_sha
Older / newer commit SHA (with repo)
"What did the checkout deploy at 13:58 actually change?"
Two caveats surface directly in the output when they apply: if no snapshot exists at the event's exact commit, the nearest later snapshot is used (NOTE: … treat file lists as approximate), and if the snapshot chain doesn't reach from_sha, the change set is a partial union.
find_symbol
Finds where a function, method, class, or type is defined across all pushed code graphs. Use it to place a name from a stack trace or error message.
Inputs: query (name or fragment, e.g. chargeCard), limit (default 20).
"Where is chargeCard defined?"
Symbols only exist for repos pushed with a current CLI (and without --no-symbols) — list_code_repos shows per-repo symbol counts.
code_impact
Blast radius inside a repo's code graph: what contains or depends on a file, symbol, service, or external dependency, grouped by hop distance. Turns "file X changed" into "services A and B are affected", or "stripe SDK" into "these files use it".
Inputs:
repo
Repo key (github.com/owner/name) or unambiguous short name
node_kind
file | symbol | service | external_dep
node_id
File path for file; name for service/external_dep; sym-… ID for symbol
direction
dependents (what breaks if this breaks) | dependencies (what it needs) | both (default)
depth
Traversal depth 1–5 (default 3)
"If payments/client.go is broken, what's affected?"
service_dependencies
The services a repo builds and its third-party dependencies (SDKs, libraries). Use it when a third-party outage is suspected: a status-page event for a provider whose SDK appears here is correlation evidence.
Inputs: repo.
"Does anything in checkout depend on Stripe?"
The deploy-correlation recipe
The workflow that turns "errors started after the deploy" into a cause with receipts — this is what Möbius does, and it works just as well when you drive it yourself from Claude Code or Cursor:
Find the change.
list_events(or the incident's related events) → adeploy/cievent in the window before the spike, with itsev_…ID.Expand it.
code_changes(event_id)→ the files that deploy changed and any log statements it added or removed.Place the symptom.
code_for_pattern(template_id)with the erroring pattern'spt-…fingerprint (fromquery_patternsor the incident's evidence) → thefile:linethat emits it.Join them. If the erroring pattern's file appears in the deploy's changed files, cite both together: the event ID and the
file:line. That's naming evidence — "deployev_…changedpayments/client.go, and the erroring patternpt-ab12cd34efis emitted frompayments/client.go:212inchargeCard()."
A prompt that triggers the whole chain:
"Errors spiked in checkout around 14:00. Did a deploy cause it? If so, name the file and line."
Last updated