01 · Graph
Kinds and relations
A snapshot is a typed, directed graph extracted from source files and project metadata.
| Kind | Represents |
|---|---|
| module | A package or directory. |
| symbol | A function, method, type, class, interface, or constant. |
| route | An HTTP, API, or RPC endpoint. |
| storage | A database model, cache, or messaging topic. |
| dependency | An imported internal or external package. |
| service | A repository in a multi-repo graph. |
| intent | An expected architectural boundary declared in Intent configuration. |
| test_ref | A reference from test code to a production symbol. |
| file_ref | A call from file-scope code with no enclosing symbol. |
| Relation | Meaning |
|---|---|
| declares | A module owns a symbol, route, or storage entity. |
| imports | One module imports another. |
| calls | One symbol invokes another. |
| implements | A type implements an interface or mixes in a module. |
| depends_on | A general dependency between nodes. |
| instantiates | A symbol creates a type instance. |
| injects | A dependency is provided through a supported DI pattern. |
| has_method | A type owns a method. |
| handled_by | A route is served by a symbol. |
02 · MCP tools
Tool catalogue
| Tool | Use |
|---|---|
| Snapshot | |
| generate_snapshot | Extract or refresh a repository graph. append: true adds another repository. |
| Navigation | |
| explore | Summarize a module, file, directory, or symbol. |
| query_facts | Filter facts by kind, name, file, relation, or repository. |
| show_symbol | Return source surrounding a named symbol. |
| Graph analysis | |
| traverse | Walk relations forward or in reverse. |
| find_path | Find a shortest graph path between two nodes. |
| impact_analysis | Return transitive dependents grouped by depth. |
| endpoint_impact | Walk an HTTP endpoint to its controller, models, tables and callers. |
| governing_intent | Find the architectural declarations that apply to a code target, or list the code covered by a declaration. |
| query_insights | Filter computed findings. |
| coverage_report | Report resolved and unresolved cross-repo calls. |
| Before the edit | |
| constraints_for | The declared components and rules governing a file or fact, and the violations naming it. The path need not exist yet. |
| plan_check | Governing constraints and blast radius for an intended change; with a patch, the verdicts it would introduce, over a scratch copy. |
| Change control | |
| set_baseline | Pin the current snapshot. |
| diff_snapshot | Compare the current snapshot with its baseline. |
| snapshot_receipt | Return snapshot provenance and extraction metadata. |
| compare_receipts | Check whether two snapshots can be compared. |
| History | |
| architecture_history | Show recorded architectural changes over time. |
| architecture_blame | Find when a fact, relation, or finding entered or left the architecture. |
| Enterprise | |
| package_metrics | Rank packages by coupling, instability, and distance from the main sequence. |
| find_orphans | Find isolated and unreferenced symbols, with confidence tiers. |
| analyze_performance | Rank parser-derived performance risks with estimated Big-O and evidence. |
03 · Languages
Extractor coverage
None of this is a setting. Enola detects the following from project markers or source extensions and runs every extractor that matches, so a repository that is two languages is indexed as two languages without being told — and the graph, the baseline and the verdict are one each, across all of them. A language that is not listed is a gap worth reporting.
| Category | Languages and formats |
|---|---|
| Systems | Go, Rust, C, C++ |
| JVM | Java, Kotlin, Scala |
| .NET | C#, F#, VB.NET, Razor/Blazor, XAML |
| Web | TypeScript/JavaScript, Vue/Nuxt, Svelte/SvelteKit, Ember |
| Mobile | Swift, Dart/Flutter |
| Scripting | Python, Ruby, PHP |
| Infrastructure | Terraform/HCL, Ansible |
| Interface formats | OpenAPI, AsyncAPI, Protocol Buffers/gRPC, GraphQL |
Coverage differs by language and framework. Declaration parsing, call resolution, routes, dependency injection, storage, and cross-repo linking are separate capabilities. Check the snapshot receipt and coverage report for the repository you are evaluating.
04 · CLI
Shell entry points
| Command | Purpose |
|---|---|
| enola install | Add agent instructions; --hooks adds supported session hooks. |
| enola uninstall | Remove the instructions and hooks written by the installer. |
| enola doctor | Report hook activity and baseline state. |
| enola baseline pin | Create the comparison baseline. |
| enola check | Check the current change and return a CI-safe exit code. |
| enola coverage | Report cross-repo edge resolution. |
| enola constraints | lint validates declared rules against the snapshot; mine proposes candidates from the graph. |
| enola plan | Which rules govern an intended change, its blast radius, and — for a patch — the verdicts it would introduce. |
| enola endpoint | Report what changing an HTTP endpoint reaches, from route to tables. |
| enola history | Share recorded history between machines: push, pull, verify, gc. |
| enola --generate | Generate persistent snapshot artifacts without starting the MCP server. |
| enola --explain | Print a human-readable architecture report without writing snapshot artifacts. |
| enola --status | List running servers, repositories, and dashboard URLs. |