Runs locally · Deterministic · 50+ languages

Which screen calls this endpoint — and which table does it write?

ClarifyDoc reads your source code and maps how the system actually works: every screen, the API calls behind it, the routes that answer them and the tables they read and write — across languages, tiers and repos. No AI, no upload, no account.

  • Follow a click to the endpoint it calls and the table it writes, in seconds
  • See what a change will break before you make it
  • Give new joiners — and your AI agent — the architecture you actually have
  • Rebuild or modernize legacy systems from facts, not folklore
  • Your code never leaves your machine; the same code always gives the same map

Using Cursor, Windsurf or VSCodium? Install from Open VSX.

The real report for RealWorld’s Conduit, recorded as generated. Open it yourself →

ONE MODEL OF THE WHOLE SYSTEM

Screens on one side, tables on the other

Every screen your users see, every table your data lives in, and everything a request passes through in between — frontend services, API routes, backend services, databases — joined into one model. Drag to turn it; point at anything to light the chains that run through it.

THE REPORT

Twelve tabs, one map of the system

Each tab answers a different question about the same model. This is the real report for RealWorld’s Conduit — a React frontend and an Express/Prisma backend — exactly as ClarifyDoc generated it. Pick a tab.

Who calls this, what does it call — and which table does it end up touching?

Any function as a double tree — callers left, callees right — across the HTTP boundary and through dependency injection, down to the tables it touches.

More about Call Traces →

Every tab is explained in the product tour — or open a live report and click around yourself. Looking for a code visualiser? Here is every diagram it draws.

ONE MAP, EVERY ROLE

Built for your whole team

The same deterministic model, framed for the questions each person actually asks. Start where you sit.

The problem: most software teams are flying blind

The documentation is outdated, the diagrams were drawn three rewrites ago, and the only complete description of how the system actually works is the code itself — spread across repos, languages and tiers, readable only by the few people who wrote it.

  • Your software is a critical asset — with no unified picture of it
  • Nobody can say which screen calls which endpoint, or which table it writes to
  • Documentation goes stale the day after it is written
  • Knowledge lives in a handful of developers’ heads
  • Scoping changes and rebuilds is guesswork
  • AI coding assistants guess at an architecture they can’t see
  • Modernization decisions rest on uncertainty

Why teams use ClarifyDoc

The source code is already the one complete, current description of your system. ClarifyDoc makes it readable to everyone who needs it — without asking anyone to write documentation.

Answers that cross every boundary

Which screen calls this endpoint, and which table does it write? ClarifyDoc follows the chain from click to handler, HTTP call, route, service and table — through dependency injection, across languages and across repos.

Facts you can check

Everything comes from parsing the code, so the same commit always gives the same map. Each link says whether it was extracted, inferred or ambiguous, and points at a file and line.

Changes without surprises

Blast radius shows what a file change reaches — screens, routes, tables. The impact view turns your uncommitted diff into the screens, routes and tests to check before you open the pull request.

An AI agent that stops guessing

The extension’s built-in MCP server — set up for Claude Code, Cursor, Windsurf, Codex or Gemini CLI in one command, skills and hooks included, and ready in Copilot with none — lets your agent ask for routes, traces, the data model and the impact of a diff — and get answers with path:line references, for a fraction of the tokens. How it works →

Documentation that can’t go stale

Re-runs only re-read files whose content changed. Analyze on save in VS Code, or re-run from the command line in CI — the map keeps up with the code instead of being redrawn by hand.

Legacy and modern, in one picture

A Delphi client, a .NET service and a React frontend become one graph. 50+ languages, from TypeScript and Go to Delphi forms, VB6, Fortran and PowerShell.

Calls to endpoints that no longer exist

A frontend call that no backend route answers is flagged at the call, in the editor’s Problems panel, with a quick fix to the route that does exist — before it ships as a 404.

Review what your AI agent changed

The Impact view turns a diff into the routes, screens, tables and tests it reaches. Compare API Surface lists what the branch changes in the API itself: a route removed, a guard lost, a body that now requires a field.

A gate that fails only on what a PR introduces

In GitHub Actions or GitLab CI, a pull request gets one comment with the API changes and the findings it adds, SARIF in code scanning, and a red check only for what it broke — never for the debt it inherited.

HOW IT WORKS

From complex code to a clear map

One scan reads your codebase — a monolith or a whole folder of repos — and turns it into a model you can browse, search and hand to others.

1

Point it at your code

A repo, a folder of repos or a git URL. ClarifyDoc detects languages, frameworks and project markers, so a Delphi client next to a .NET service next to a React frontend becomes one system.

2

Deterministic extraction

Tree-sitter parsing and convention passes pull out routes, functions, calls, ORM entities, screens and interactive elements. Every file is content-hashed, so results are reproducible.

3

The graph links up

Calls are joined to their definitions — through dependency injection and across the HTTP boundary — into screen → API → database chains. In VS Code, the language servers you already have resolve what text alone can’t — no Docker.

4

Explore — and stay current

Open the report in VS Code or any browser. Re-runs only re-read the files that changed, so the map keeps up with the code.

FASTER THAN READING THE CODE BY HAND

A detailed map in minutes, not months

0.993

Precision joining frontend calls to backend routes (recall 0.966), scored against labels written by hand on real repositories at pinned commits.

0 AI

Pure static analysis: same input, same output. Nothing invented, nothing hallucinated.

50+ languages

Tree-sitter parsing plus convention passes — TypeScript to Delphi, Go to Fortran, SQL to OpenAPI and Protocol Buffers.

SHA-256

Every file versioned by content hash — you can tell exactly what changed between runs.

50+ languages, mixed freely

One workspace can hold all of them, along with the templates, schemas, API contracts and deployment files around them. Routes come from Express, NestJS, Next.js, Remix, tRPC, gRPC, GraphQL resolvers, ASP.NET, Spring, Javalin, Django, FastAPI, Flask, Laravel, Rails, Gin, Actix, Axum, serverless functions and more; screens from React Router, TanStack Router, Expo Router, React Navigation, Jetpack Compose and SwiftUI; tables from EF Core, Hibernate, MyBatis, TypeORM, Sequelize, Mongoose, Prisma, Drizzle, SQLAlchemy, Eloquent, ActiveRecord, GORM, Diesel, migration chains and plain SQL.

Web
TypeScriptJavaScriptReactVueSvelteAngularCoffeeScriptHTMLSCSS / Sass / Less
JVM
JavaKotlinScalaGroovyJSPSpring XMLMyBatis mappers
.NET
C#F#VB.NETBlazorRazorXAML
Backend & scripting
PythonPHPRubyGoRustPerlRakuLuaElixirErlangCrystalHaxe
Functional
HaskellOCamlClojureRacketSchemeCommon Lisp
Native & mobile
CC++CUDAObjective-CSwiftZigNimDVDart / FlutterQt (QML, .ui)
Mobile
Expo RouterReact NavigationJetpack ComposeRoomSwiftUISwiftData / Core DataStoryboards
Science & numeric
RJuliaFortranMojo
Legacy & shell
Delphi / Pascal (incl. DFM forms)VB6VBScriptPowerShellBashWindows batch
Desktop automation
AutoHotkeyAutoItAppleScript
Templates
ERBHEExHandlebarsLiquidVelocityFreeMarkerGo templates
Data & API contracts
SQLPrismaOpenAPIGraphQLProtocol BuffersWSDLJSight
Deployment
Docker ComposeDockerfileKubernetesHelmArgo CD / FluxTerraformServerless / AWS SAMAWS CDKCI pipelines

An in-house HTTP client, route registrar or database helper? A few lines of .clarifydoc/config.json say what it means, and its calls link like any framework’s.

Security: your source code stays yours

ClarifyDoc runs where your code already is — your laptop, your editor or your CI. Nothing is uploaded, and nothing is sent to a model.

  • Runs 100% locally — no account, no telemetry
  • No AI in the extraction pipeline, so nothing is used to train models
  • Reads your files and never modifies them
  • Deeper call resolution uses the language servers already in your editor — no Docker needed
  • The report is one self-contained file: open it with the network off
  • Open source under the MIT license — audit the extractors yourself

Every network request any part of ClarifyDoc can make, what starts it and what it sends: What leaves your machine →

GET STARTED

Interested in unlocking the truth behind your source code?

Pick whichever fits how you work. All three run the same analysis.

In VS Code

Install the ClarifyDoc extension and run ClarifyDoc: Analyze Workspace. The report opens beside your code, and CodeLens, hovers and the Problems panel fill in. No Node.js install, no configuration.

code --install-extension ClarifyDoc.clarifydoc-vscode

Best for developers · Open in VS Code · Cursor, Windsurf, VSCodium: Open VSX

From the command line

For scripts and CI: one command writes the JSON and a self-contained report you can send to anyone. Install it from npm with npm install -g clarifydoc, or run it with npx and install nothing.

npx clarifydoc analyze ./my-app --html

Best for scripts and sharing · every command

On every pull request

The GitHub Action analyzes the base once, then only what the PR changed. It comments the API changes and new findings, uploads SARIF, and fails only on what you choose. GitLab CI has the same in its Code Quality widget.

uses: clarifydoc/cli@main

Best for teams · the full workflow

Removing it again

ClarifyDoc writes only where you ask it to, and nothing outside the project except the extension itself and, if you set one up, an agent’s MCP entry. To remove everything:

  1. The extension: Uninstall in the Extensions view, or code --uninstall-extension ClarifyDoc.clarifydoc-vscode. Its launcher lives in the extension’s own storage.
  2. The analysis: delete the .clarifydoc/ folder in each project you analyzed. Nothing else was written into the project unless you asked.
  3. Agent setup, if you ran it: the clarifydoc entry in that agent’s MCP config (claude mcp remove clarifydoc for Claude Code), the .claude/skills/clarifydoc-* folders, the ClarifyDoc hooks in .claude/settings.json, and the block between <!-- clarifydoc:start --> and <!-- clarifydoc:end --> in AGENTS.md.
  4. Git hooks, if you added them: the lines between # clarifydoc:start and # clarifydoc:end in .git/hooks/post-commit, post-merge and post-checkout.

There is no account to close and nothing stored anywhere else.