What your agent sees

One address grammar over everything, three depths for every file.

Addressability

Thirty grep calls, or one address

Everything is addressable. Files, symbols, line ranges, globs — one URI scheme across your repo, imported repos, and the docs themselves.

Point the same address grammar at your estate: every repo you import answers the same query, down to the line. A new CVE is one grep away from being a list of places, not a meeting.

The risk is asymmetric. A bad query costs 1,500 tokens. A good one saves 50,000.

// one call — every filesystem implementation's signatures read("file:///src/**/*.cs#symbol=*FileSystem => structure", 3000) // the index answers in 0.3s, exactly 3,000 tokens PhysicalFileSystem : IFileSystem +Task<Stream> OpenRead(RepoUri uri) +IAsyncEnumerable<FileEntry> Enumerate(GlobSpec spec) GitTreeFileSystem : IFileSystem +Task<Stream> OpenRead(RepoUri uri) · 14 more
// where does shell=True run, across everything we own? query("SELECT uri, line_number, line_content FROM grep_matches('shell=True', 'github://**/*.py', 8)") github://dotnet/aspire/eng/common/cross/install-debs.py 236 result = subprocess.run(f"{ar_tool} t {…}", check=True, shell=True, …) 250 subprocess.run(f"{ar_tool} p {…} > {tar_file_path}", check=True, shell=True) // 2 hits · every imported repo searched · line-addressed
// give your agent all of Roslyn $ rql import github://dotnet/roslyn indexed: 32,220 files · 247,930 functions · 24,392 types // same tools, same addresses — github:// instead of file://

Progressive disclosure

Same address, three depths

Every file is pre-computed at three levels — a one-line headline, its structure, its full content. The token budget decides which one you get; the address never changes.

An agent scans a thousand headlines to know what exists, narrows to twenty structures to see the shape, and reads three bodies to understand — never opening a file it didn't need.

Try the tabs. Same file, three bets.

// read("file:///src/…/Modules/Git/GitModule.cs", 40) GitModule — on-demand git via LibGit2Sharp: status, diff, blame, patches. No pre-indexing. | 550 ln
// read("… => structure", 320) GitModule : DatabaseModule +TableFunction git_status(repo_uri) +TableFunction git_diff(repo_uri, from_ref, to_ref) +TableFunction git_blame(uri, line_from, line_to) +TableFunction git_patches(uri, max_count) -Repository OpenRepository(RepoUri uri) -string ResolveWorkTree(string physicalPath)
// read("…#symbol=git_blame => content", 800) [TableFunction("git_blame")] public IEnumerable<BlameRow> GitBlame(string uri, long from, long to) { var physical = _resolver.Resolve(RepoUri.Parse(uri)); using var repo = OpenRepository(physical); var hunks = repo.Blame(physical.RelativePath, new BlameOptions { MinLine = (int)from, MaxLine = (int)to }); // one row per hunk — commit, author, when, lines …

27 format families

It reads what your repo is made of

Code, data, documents — parsed to symbols and structure, not just text. Even the PDFs.

TypeScriptPythonGoRustC++.NETJVMSwiftRubyPHPSQLdbtJSONYAMLMarkdownHTMLJinjaMermaidGraphQLTerraformCSSCSVMakeProtoPDFDOCXXLSX

Same senses, wherever it runs