{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_gdkr2342hjyt","handle":"epicenter-mcp","url":"https://wellknown.network/agents/epicenter-mcp","links":{"self":"https://wellknown.network/agents/epicenter-mcp/record.json","html":"https://wellknown.network/agents/epicenter-mcp","markdown":"https://wellknown.network/agents/epicenter-mcp/record.md","api":"https://wellknown.network/api/v1/agents/epicenter-mcp","status":"https://wellknown.network/api/v1/agents/epicenter-mcp/status","claim":"https://wellknown.network/agents/epicenter-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/epicenter-mcp/claim.json","badge":"https://wellknown.network/agents/epicenter-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/epicenter-mcp/history","tools":"https://wellknown.network/api/v1/agents/epicenter-mcp/tools"},"ard":{"identifier":"urn:air::server:epicenter-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"epicenter-mcp","summary":"Name a symbol; see everything that shakes. Python impact analysis over MCP.","description":"# 🌐 Epicenter\n\n**Name a symbol. See everything that shakes.**\n\nEpicenter parses a Python codebase into a dependency graph, then walks that graph *backwards* to answer the question developers actually ask before touching code:\n\n> **\"If I change this, what breaks?\"**\n\nIt 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.\n\n---\n\n## Why this exists\n\nAI 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.\n\nThat precision is the product. The graph is the means.\n\n---\n\n## 🚀 Quick start\n\n```bash\npip install epicenter-mcp\n```\n\nIndex a codebase, then ask:\n\n```bash\nepicenter index /path/to/repo\nepicenter impact save_user\n```\n\nWith more than one codebase indexed, name which to query: `--realm /path/to/repo`.\n\n```\nChanging db.save_user could affect 5 symbol(s):\n\n  ── directly ──\n    api.create_account  (function, 3 dependents)  [UNTESTED]\n  ── 2 hops away ──\n    web.signup_handler  (function, 0 dependents)\n      via web.signup_handler <- api.create_account <- db.save_user\n\n  1 of 5 affected symbol(s) have no test reaching them.\n```\n\n| Command | Answers |\n|---|---|\n| `impact <symbol>` | What breaks if this changes |\n| `deps <symbol>` | What this relies on — the code to read first |\n| `coverage <symbol>` | Which tests reach it |\n| `coupling <symbol>` | What historically changes alongside it |\n| `dead` | Symbols no entrypoint or test can reach |\n| `find <query>` | Look up a symbol's qualified name |\n| `index <path>` | Parse a codebase into the graph |\n| `history [path]` | Mine git history for change coupling |\n| `stats` | Graph size, entrypoi…","publisher":null,"homepage":"https://github.com/mayankbhojwani/Code-Reviewer-MCP","repository":"https://github.com/mayankbhojwani/Code-Reviewer-MCP","version":"0.1.0","license":null,"protocols":["mcp"],"tags":["static-analysis","call-graph","impact-analysis","dead-code","mcp","dependency-graph","refactoring"],"pricing":null,"endpoints":[{"url":"pypi:epicenter-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"code.refactoring","name":"Refactoring","confidence":1,"provenance":"declared"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.997,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":0.791,"provenance":"derived"},{"slug":"code.security-review","name":"Security Review","confidence":0.75,"provenance":"derived"}],"categories":["code","dev","knowledge"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"epicenter-mcp","registry":"pypi","observedAt":"2026-09-15T14:26:52.884Z","publishedAt":"2026-09-14T13:49:32.341730Z","latestVersion":"0.1.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"epicenter-mcp","url":"https://pypi.org/project/epicenter-mcp/","firstSeenAt":"2026-09-15T14:24:45.624Z","fetchedAt":"2026-09-15T14:24:45.624Z","normalizedAt":"2026-09-15T14:24:45.624Z"}]},"firstSeenAt":"2026-09-15T14:24:45.624Z","updatedAt":"2026-09-15T14:26:52.884Z"}