Tool

read

Not file reading — querying the index for a precise cut. The parse already happened, so read returns the richest representation that fits the budget you set: full content if it fits, else structure, else a headline. Everything else on this page is a way of choosing what “richest” means.

read("file:///src/cloud/website/** => tree: files", 1800) 28 files · files · [292 tok | ready] src/cloud/website/ README.md docs/ design/ (1 md) plans/ (7 md) public/ (2 html, 2 png, 2 txt, 1 xml) assets/ (4 js, 1 css, 1 svg) docs/ (1 html) run/ (1 html) start/ (1 html)

The shape of a directory for 292 tokens. Ask for tree: headlines instead and every file arrives with a line describing what it is for — still without opening one.

Run it yourself

rql read "file:///src/** => tree: folders"

Or say it to your agent

“give me a map of the src directory without reading any files”

Parameters

ParameterWhat it does
urirequiredThe address. Globs allowed in the path, fragments after it, one modifier at the end. Join several with ;.
tokenBudgetoptionalA contract, not a hint: you get the richest representation that fits inside it. Start at 800–2000 and raise it when the answer is worth more.

The sixteen modifiers

Append => modifier to any address to choose what comes back. One modifier per address; those written with a colon take a parameter after it.

ModifierParameterWhat comes back
contentFull text with line numbers. Assembles resolvable @ references in place.
content:literalRaw source, references left untouched. Use it when you are about to edit the file.
content:previewThe reference manifest and its projected cost, without fetching the targets.
structureSignatures without bodies — classes, methods, headings.
headlineOne line summarising each file, as a flat list.
tree:folders / files / headlinesA directory tree at the detail level you ask for. Folders is cheapest.
find:keywordsSemantic search inside the matched files, with snippets.
similar:seed URIRank the scope by likeness to a seed document, using stored vectors.
grep:textLiteral text search. All-lowercase is case-insensitive; any capital makes it exact.
regex:patternRegular-expression line search across the scope.
wherelocal / remoteResolve the address to a path on disk, or to a GitHub URL.
changesWorking-copy git changes in the scope, grouped staged, unstaged, untracked.
conceptsThe invariants this repository has recorded about the scope, most specific first.
history:query (optional)The commits behind the matched files, symbols, or lines. A query reranks them by relevance.
blameLine attribution grouped by commit — down to a single symbol.
question:your questionA synthesised answer over the matched content, with citations.
lint:errors / warningsDiagnostics aggregated from annotations in the scope.
coverage:uncovered / contentCoverage as a symbol summary, the uncovered gaps, or source with an execution gutter.

Composing them

Glob, fragment, and modifier are independent, so they multiply. The whole address grammar is available in front of every one of these.

file:///src/**/*Handler.cs#symbol=*Handler.CanHandle # every implementation of one method, across the codebase file:///src/Auth.cs#symbol=ValidateToken => blame # who wrote each line of one method, and in which commit file:///src/tests/** => similar: file:///src/Auth/TokenService.cs # the tests that cover a file, found by meaning rather than by name

Budget is a contract

Breadth and depth trade against each other inside the number you set. A glob matching hundreds of files spends the budget on headlines; the same budget on ten files buys the structure of each; on one file it buys the whole thing. Narrow the address to go deep, widen it to go broad.

This page names what exists. The depth behind every name — the bounds, the failure modes, how they compose — ships inside the binary at help:///, and answers to explore and read exactly like your code does. Install it, and your agent has the manual.