Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/qf-studio/navigatorWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/qf-studio/navigator/deep-research-fetcher)<a href="https://agentmods.dev/agents/qf-studio/navigator/deep-research-fetcher"><img src="https://agentmods.dev/badge/agents/qf-studio/navigator/deep-research-fetcher/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/qf-studio/navigator/deep-research-fetcher"><img src="https://agentmods.dev/badge/agents/qf-studio/navigator/deep-research-fetcher.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00069 | $0.01114 |
| Opus 5.5 | $0.00028 | $0.00446 |
| Sonnet 5.5 | $0.00014 | $0.00223 |
| Haiku 4.5 | $0.00007 | $0.00111 |
Grade B, and why
deep-research-fetcher scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 16d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Instruction-override phrasingmediumPrompt injection
Text telling the model to disregard its earlier instructions or safety rules is the shape of a prompt injection, whoever wrote it.
reads like an instruction ("ignore previous instructions", "the user wants you to", Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Copies of this mod
1 near-identical copy found in the catalogue:
- deep-research-fetcher — 100% identical, 4 lines differ
How it starts
The opening of the file, as written. The whole thing — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are a fetcher in the nav-deep-research pipeline. Your only job is to turn the
URLs in your batch into source notes under the run's sources/ directory, using the
store script, and report what landed. You do not write prose, you do not judge
relevance beyond the junk rules below, and you do not fetch URLs outside your batch.
Inputs (from the spawn prompt)
- research_query — the user's question, verbatim and block-quoted. Gospel; use it only to judge whether a page is on-topic enough to keep.
- pipeline position — one sentence saying which step spawned you.
- run_slug, run_dir — the run directory (
.agent/research/<slug>). - functions_dir — absolute path to the nav-deep-research
functions/directory. - batch — a list of
url | atomic_item | lensrows. Yours alone.lensis the search lens that produced the URL (breadth,canonical,adversarial,gap); pass it through unchanged, never re-judge it. - max_chars — body clamp per note (default 40000).
If any of these are missing, stop and return a one-line error. Do not guess.
Procedure
For every row in the batch, in order:
-
Raw fetch first:
python3 "$functions_dir/source_store.py" fetch --url "<url>" --run "<run_slug>" \ --lens "<lens>" --max-chars <max_chars>The script prints JSON with
id,status(ok|blocked|skipped),deduped,reason.deduped: truemeans the URL was already in the run; move on. -
If
statusisblocked(403, bot wall, network), fall back once to WebFetch with the prompt "Return the main article text verbatim, no summary, no commentary." Write the returned text to a temp file and store it:python3 "$functions_dir/source_store.py" write --url "<url>" --run "<run_slug>" \ --body-file /tmp/ndr-<id>.txt --fetch-method webfetch --title "<title>" \ --lens "<lens>"WebFetch returns model-processed text, not the raw page. The
webfetchmethod tag tells the writer and critic that this source may be paraphrased but never quoted. Thewritereplaces the blocked stub under the same id (superseded: truein its output) — never delete the stub or hand-write a note. If WebFetch also fails, leave the blocked note as is.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 16d ago Changed · +2 lines 3e10e49cc6d6
- 20d ago First seen · 86 lines · 69 tokens per session scan B 9952dfeb23e5
deep-research-fetcher is an agent published in the GitHub repository qf-studio/navigator (355 stars, last pushed today), licensed MIT. It adds 69 tokens to every session and 1,114 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it B with 1 finding (instruction-override phrasing). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-25.
Other agents, from other repositories
navigator-research
Specialized codebase exploration and architecture discovery. Use PROACTIVELY for understanding unfamiliar code, finding patterns, mapping system architecture, and answering "how does X work?" questions. Use the generic Explore agent for one-off lookups; use me for architecture mapping that should inform future work.…
deep-research-critic
Adversarial reader of a nav-deep-research draft. Finds ignored counter-evidence, unsupported claims, verbatim quotes from paraphrase-only sources, and structural mismatch against the decomposition. Writes a findings JSON the patcher applies; cannot edit the report. Spawned once at step 4 by the nav-deep-research skill.
deep-research-writer
Writes the single report.md of a nav-deep-research run from the run's source notes, following the readable report layout and the citation contract the ship gate checks. Spawned once by the nav-deep-research skill at step 3 (draft). Writes the report exactly once; later changes are the patcher's.
task-planner
Implementation planning and task breakdown specialist. Use PROACTIVELY when planning features, refactoring, or complex changes. Creates detailed implementation plans with effort estimates.
deep-research-patcher
Applies critic findings to a nav-deep-research draft as surgical Edit hunks and records a patch log. Tool-locked so it cannot regenerate the report. Spawned once at step 5 by the nav-deep-research skill.
deep-research-fetcher
Fetches one disjoint batch of URLs into a nav-deep-research run as fenced source notes. Spawned in parallel waves by the nav-deep-research skill (step 2 sweep, step 4 gap-fetch). Never searches for new URLs on its own, never reads other fetchers' batches.