Name a symbol; see everything that shakes. Python impact analysis over MCP.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"epicenter-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# 🌐 Epicenter **Name a symbol. See everything that shakes.** Epicenter parses a Python codebase into a dependency graph, then walks that graph *backwards* to answer the question developers actually ask before touching code: > **"If I change this, what breaks?"** It finds indirect callers that text search cannot see, tells you which of them no test reaches, and exposes all of it over [MCP](https://modelcontextprotocol.io) so AI coding assistants can consult real structure instead of inferring it from grep. --- ## Why this exists AI coding assistants reason about repository structure by searching text and guessing. They miss indirect callers, inherited overrides, and cross-module chains. A parsed call graph doesn't — it knows that editing `fetch_graph_data` reaches `CuriosityEngine.__init__` two hops away, and it can show the chain. That precision is the product. The graph is the means. --- ## 🚀 Quick start ```bash pip install epicenter-mcp ``` Index a codebase, then ask: ```bash epicenter index /path/to/repo epicenter impact save_user ``` With more than one codebase indexed, name which to query: `--realm /path/to/repo`. ``` Changing db.save_user could affect 5 symbol(s): ── directly ── api.create_account (function, 3 dependents) [UNTESTED] ── 2 hops away ── web.signup_handler (function, 0 dependents) via web.signup_handler <- api.create_account <- db.save_user 1 of 5 affected symbol(s) have no test reaching them. ``` | Command | Answers | |---|---| | `impact <symbol>` | What breaks if this changes | | `deps <symbol>` | What this relies on — the code to read first | | `coverage <symbol>` | Which tests reach it | | `coupling <symbol>` | What historically changes alongside it | | `dead` | Symbols no entrypoint or test can reach | | `find <query>` | Look up a symbol's qualified name | | `index <path>` | Parse a codebase into the graph | | `history [path]` | Mine git history for change coupling | | `stats` | Graph size, entrypoi…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.