Deep Research
Verified: 2026-09-08
Primary sources over blog rewrites. Every claim traceable, every gap named. "Could not find X" is a valid result — never fabricate to close one.
Workflow
Scope (question, audience, depth, query budget) → outline (items, fields, success criteria) → pick retrieval tool → gather tiers 1→4, never start at 4 → verify per protocol → date-check staleness/version → apply stop criteria → compile output format.
Retrieval tool
| Need |
Use |
| Library/API/framework docs |
Docs-index tool (e.g. Context7-style MCP) — version-scoped, current, far fewer queries |
| Fetch returns empty/JS shell |
Headless-browser fetch — plain HTTP misses client-rendered content |
| Many sources at once |
Bulk-crawler — one dispatch vs. N fetches, spares budget |
| 403/challenge on a known-live site |
Retry browser-capable before writing it off; fingerprinting blocks curl, not the site |
| Everything else |
Web search + search-techniques.md |
Query budget
Search tools are capped per session and the cap is shared across parallel subagents, not per-agent. Divide it up front, give each agent a fixed quota in its prompt, prefer few targeted queries to many broad ones. Budget thin → finish sequentially rather than adding agents.
Source Tiers
| Tier |
Sources |
| 1 Primary |
Specs (RFC, W3C, WHATWG), source code, official docs, original papers, changelogs |
| 2 Secondary |
Peer-reviewed papers, vendor threat intel, audits, MITRE ATT&CK |
| 3 Tertiary |
Technical books, curated guides (awesome-*, OWASP Cheat Sheets), conference talks |
| 4 Community |
Stack Overflow, Reddit, HN, dev.to/Medium — leads only, never ground truth |
| 5 Avoid |
SEO farms, AI slop, "Top 10 X in ", marketing blogs |
Skip a source: no author, no dates/versions, "Updated for !" over stale content, every question resolves to the same product.
Verification
| Claim type |
Required evidence |
| One canonical authority (spec, vendor's own docs, project source) |
1 primary source |
| High-impact: security, cost, breaking change, "recommended approach", perf numbers |
2+ independent, ≥1 Tier 1–2; only 1 → mark Tentative |
| Sources conflict |
Present both, name the conflict, never silently pick |
| Routine metadata (release date, version, port) |
1 primary; recheck if it drives a decision |
| Community "best practice" |
Trace to origin; single blog post → opinion, not fact |
| Any URL cited in output |
Fetch it this session; dead or redirected → cite the resolved target or drop it |
Trace blog claims to the paper/RFC/commit behind them; match the version under discussion; run load-bearing snippets.
Volatile by Default
Leaderboards, pricing/rate limits, annual surveys, aggregator front pages, live threat feeds, GitHub trending, model names/context windows/cutoffs, vendor names post-acquisition or rebrand. Cite with access date; cross-check high-impact claims against a non-volatile source. Prefer permanent IDs (DOI, arXiv ID, RFC number, git SHA, CVE ID) over URLs, and re-resolve the current canonical home rather than trusting a URL from memory or an earlier citation — these rename repeatedly.
Output Format
Structure is the contract; length is not — short factual queries collapse to a ledger plus a summary.
# <Topic>
## 1. Executive Summary — the answer, tradeoffs, uncertainties (3–6 bullets)
## 2. Scope — questions answered · out of scope · assumptions · research date
## 3. Findings — prose grouped Confirmed / High confidence / Tentative / Disputed / Unknown; no URLs here
## 4. Claim Ledger — | # | Claim | Source(s) | Date | Tier | Confidence | Notes |
## 5. Sources — numbered, full URLs, access date, tier, [V] for volatile
## 6. Gaps — not found · contradictory · needs follow-up
## 7. Stale-Risk Notes — findings likely to expire, with half-life
Stop When
All hold: every outline item has a Tier 1–2 source or sits in Gaps · last 1–2 loops yielded no new substantive claims · high-impact claims verified · Tentative/Disputed/Unknown explicit, not dropped · budget spent.
Parallel Pattern (10+ independent items, subagents)
One self-contained prompt per agent — item, fields, schema, its share of the query budget — 3–5 concurrent, results to disk, skip completed items on retry; review each batch; mark uncertain findings [uncertain] for a second pass. Many sources at once → one bulk-crawler dispatch, not one fetch per agent. Below 10 items, sequential.
References
search-techniques.md — query syntax, finding originals, archives. Read before a search-heavy task.
sources-by-domain.md — curated per-domain source lists (security, web, cloud, AI/ML, crypto).
sources-and-apis.md — databases, APIs and their rate limits, docs-index and archive tools.
1---2name: deep-research3description: Use when asked to research deeply, compare options or vendors, fact-check a claim, investigate an unfamiliar topic, prepare a report or briefing, build a knowledge base or reference doc, or trace a claim to its primary source.4---56# Deep Research78Verified: 2026-09-08910Primary sources over blog rewrites. Every claim traceable, every gap named. "Could not find X" is a valid result — never fabricate to close one.1112## Workflow1314Scope (question, audience, depth, query budget) → outline (items, fields, success criteria) → pick retrieval tool → gather tiers 1→4, never start at 4 → verify per protocol → date-check staleness/version → apply stop criteria → compile output format.1516## Retrieval tool1718| Need | Use |19|---|---|20| Library/API/framework docs | Docs-index tool (e.g. Context7-style MCP) — version-scoped, current, far fewer queries |21| Fetch returns empty/JS shell | Headless-browser fetch — plain HTTP misses client-rendered content |22| Many sources at once | Bulk-crawler — one dispatch vs. N fetches, spares budget |23| 403/challenge on a known-live site | Retry browser-capable before writing it off; fingerprinting blocks curl, not the site |24| Everything else | Web search + `search-techniques.md` |2526## Query budget2728Search tools are capped per session and the cap is shared across parallel subagents, not per-agent. Divide it up front, give each agent a fixed quota in its prompt, prefer few targeted queries to many broad ones. Budget thin → finish sequentially rather than adding agents.2930## Source Tiers3132| Tier | Sources |33|---|---|34| 1 Primary | Specs (RFC, W3C, WHATWG), source code, official docs, original papers, changelogs |35| 2 Secondary | Peer-reviewed papers, vendor threat intel, audits, MITRE ATT&CK |36| 3 Tertiary | Technical books, curated guides (awesome-*, OWASP Cheat Sheets), conference talks |37| 4 Community | Stack Overflow, Reddit, HN, dev.to/Medium — leads only, never ground truth |38| 5 Avoid | SEO farms, AI slop, "Top 10 X in <year>", marketing blogs |3940Skip a source: no author, no dates/versions, "Updated for <year>!" over stale content, every question resolves to the same product.4142## Verification4344| Claim type | Required evidence |45|---|---|46| One canonical authority (spec, vendor's own docs, project source) | 1 primary source |47| High-impact: security, cost, breaking change, "recommended approach", perf numbers | 2+ independent, ≥1 Tier 1–2; only 1 → mark Tentative |48| Sources conflict | Present both, name the conflict, never silently pick |49| Routine metadata (release date, version, port) | 1 primary; recheck if it drives a decision |50| Community "best practice" | Trace to origin; single blog post → opinion, not fact |51| Any URL cited in output | Fetch it this session; dead or redirected → cite the resolved target or drop it |5253Trace blog claims to the paper/RFC/commit behind them; match the version under discussion; run load-bearing snippets.5455## Volatile by Default5657Leaderboards, pricing/rate limits, annual surveys, aggregator front pages, live threat feeds, GitHub trending, model names/context windows/cutoffs, vendor names post-acquisition or rebrand. Cite with access date; cross-check high-impact claims against a non-volatile source. Prefer permanent IDs (DOI, arXiv ID, RFC number, git SHA, CVE ID) over URLs, and re-resolve the current canonical home rather than trusting a URL from memory or an earlier citation — these rename repeatedly.5859## Output Format6061Structure is the contract; length is not — short factual queries collapse to a ledger plus a summary.6263```64# <Topic>65## 1. Executive Summary — the answer, tradeoffs, uncertainties (3–6 bullets)66## 2. Scope — questions answered · out of scope · assumptions · research date67## 3. Findings — prose grouped Confirmed / High confidence / Tentative / Disputed / Unknown; no URLs here68## 4. Claim Ledger — | # | Claim | Source(s) | Date | Tier | Confidence | Notes |69## 5. Sources — numbered, full URLs, access date, tier, [V] for volatile70## 6. Gaps — not found · contradictory · needs follow-up71## 7. Stale-Risk Notes — findings likely to expire, with half-life72```7374## Stop When7576All hold: every outline item has a Tier 1–2 source or sits in Gaps · last 1–2 loops yielded no new substantive claims · high-impact claims verified · Tentative/Disputed/Unknown explicit, not dropped · budget spent.7778## Parallel Pattern (10+ independent items, subagents)7980One self-contained prompt per agent — item, fields, schema, its share of the query budget — 3–5 concurrent, results to disk, skip completed items on retry; review each batch; mark uncertain findings `[uncertain]` for a second pass. Many sources at once → one bulk-crawler dispatch, not one fetch per agent. Below 10 items, sequential.8182## References8384- `search-techniques.md` — query syntax, finding originals, archives. Read before a search-heavy task.85- `sources-by-domain.md` — curated per-domain source lists (security, web, cloud, AI/ML, crypto).86- `sources-and-apis.md` — databases, APIs and their rate limits, docs-index and archive tools.