What the reading, citing and searching tools do the same way for the brief writer, the coder and the aggregator.
What it holds
The shared shell grammar,
python3 <tool>.py <CORPUS> <verb> [arg] [--flag ...],
and the rule that a refusal prints one line and exits 2. The verbs
read.py and read_brief.py share
(header, thread, item,
state) and the ones they do not (windows and
audit for the coder; titles and
sample for the brief writer). The read log
out/_read.jsonl. cite and find,
and the query log <record>.queries.jsonl.
emit, coder only. What stays different and why. The
aggregator's tools as they stood, with what is to be aligned at v37.
Who writes it, and when
The instrument's author, as part of v32. Its author is not named.
Why it exists
"So that an agent that has used one is not surprised by another." A refusal "is the tool saying the call was wrong, never the tool breaking; a traceback is a defect."
Where
TOOLS-SPEC.md.
Not copied into rooms by newrun.py.
Checked against: TOOLS-SPEC.md, newrun.py