deep-research-fetcher

deep-research-fetcher is an agent for Claude Code from qf-studio/navigator. It costs 69 tokens per session (1,114 once invoked), scanned B, original, MIT.

A research-pipeline agent that downloads assigned web pages and saves them as source notes. It handles only the URLs in its assigned batch and does not write the report.

In plain words
What is it for?
It helps gather web sources for specific research questions and store their contents for later analysis and report writing.
Why use it?
It removes the manual work of collecting source material for a research run while keeping separate fetchers from duplicating work. Pages that do not meet the run's basic relevance rules can be excluded.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter.

Part of the navigator plugin — 33 skills, 6 agents shipped together

Good fit It helps gather web sources for specific research questions and store their contents for later analysis and report writing.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/qf-studio/navigator/deep-research-fetcher
Install

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.

Clone the repo
git clone --depth 1 https://github.com/qf-studio/navigator

Made for: Claude Code.

Or install navigator, the plugin that ships this one along with the rest of its 33 skills, 6 agents.

Wrote 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.

agentmods badge for deep-research-fetcher

README.md
[![agentmods](https://agentmods.dev/badge/agents/qf-studio/navigator/deep-research-fetcher/github.svg)](https://agentmods.dev/agents/qf-studio/navigator/deep-research-fetcher)
Your own site
<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.

agentmods 80×15 button for deep-research-fetcher

Your own site · 80×15
<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>
Per session 69 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,114 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 16d ago against content hash 3e10e49cc6d6, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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.

Origin

Copies of this mod

1 near-identical copy found in the catalogue:

agents/deep-research-fetcher.md · 88 lines

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 | lens rows. Yours alone. lens is 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:

  1. 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: true means the URL was already in the run; move on.

  2. If status is blocked (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 webfetch method tag tells the writer and critic that this source may be paraphrased but never quoted. The write replaces the blocked stub under the same id (superseded: true in its output) — never delete the stub or hand-write a note. If WebFetch also fails, leave the blocked note as is.

Read the full file on GitHub · 88 lines

Changes

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.

  1. 16d ago Changed · +2 lines 3e10e49cc6d6
  2. 20d ago First seen · 86 lines · 69 tokens per session scan B 9952dfeb23e5

Subscribe to this mod's changes

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.

Related

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.…

alekspetrov/navigator · 117 tokens

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.

alekspetrov/navigator · 74 tokens

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.

alekspetrov/navigator · 71 tokens

task-planner

Implementation planning and task breakdown specialist. Use PROACTIVELY when planning features, refactoring, or complex changes. Creates detailed implementation plans with effort estimates.

alekspetrov/navigator · 35 tokens

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.

alekspetrov/navigator · 55 tokens

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.

alekspetrov/navigator · 69 tokens