web-research
Systematic multi-source web research with verification, citation, and contradiction detection. Use when gathering facts from the web, verifying claims across sources, or building research briefs.
| Model | Source |
|---|---|
| sonnet | pack: recon |
Full Reference
web-research
Section titled “web-research”┏━ 🔍 web-research ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃ Systematic multi-source research with ┃┃ verification, citation, contradiction detection ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛Multi-source research pipeline — decompose queries, search, fetch, cross-validate, flag confidence, and deliver a citable brief. No claim ships without at least 3 sources. No statistic ships without 5.
| Item | Value |
|---|---|
| Phases | 5 (Decompose → Search → Fetch → Verify → Output) |
| Min sources per claim | 3 |
| Min sources per statistic | 5 |
| Confidence levels | high / medium / speculative |
| Output | RESEARCH_BRIEF.md with inline citations |
| Contradiction behavior | Surface all, don’t resolve silently |
Reference Index
Section titled “Reference Index”| I want to… | File |
|---|---|
| Decompose queries, use date-aware patterns, filter by domain | reference/search-strategies.md |
| Score source credibility, cross-validate, detect contradictions | reference/source-verification.md |
| Coordinate WebFetch + WebSearch, extract structured data | reference/extraction-patterns.md |
| Format RESEARCH_BRIEF.md, citations, confidence tags | reference/output-format.md |
When to Activate
Section titled “When to Activate”| Trigger | Example |
|---|---|
| Fact-finding request | ”What are the current Stripe fee tiers?” |
| Claim verification | ”Is it true that X framework is deprecated?” |
| Multi-source research | ”Research competitor pricing for SaaS email tools” |
| Statistics gathering | ”What’s the average checkout abandonment rate?” |
| Background research | ”Get context on this company before the call” |
Do NOT activate for: single-file reads, code questions with no web dependency, or tasks where all needed data is already in context.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Phase 1 — Decompose
Section titled “Phase 1 — Decompose”Break the research goal into atomic questions before searching.
Research goal: "What is the current market share of Tailwind CSS vs Bootstrap?"
Atomic questions:1. What is Tailwind CSS current adoption/usage percentage?2. What is Bootstrap current adoption/usage percentage?3. What surveys or studies cover CSS framework market share?4. What is the most recent data (year) available?5. Are there contradictions between survey sources?Rules:
- Never search the raw goal — always decompose first
- Each atomic question maps to one or more search queries
- Flag which questions require statistics (min 5 sources each)
- Flag which questions are time-sensitive (add date filter)
See reference/search-strategies.md for query construction patterns.
Phase 2 — Search
Section titled “Phase 2 — Search”Run WebSearch for each atomic question using decomposed queries.
Query pattern: "<topic> <qualifier> <year>"Example: "Tailwind CSS adoption rate survey 2026"Rules:
- Minimum 2 query variants per atomic question
- Use date-aware queries for anything time-sensitive
- Filter by domain type when authority matters (
.gov,.edu, primary sources) - Log every search query and its result count
- Stop at 15 searches total — if still unsatisfied, escalate to user
See reference/search-strategies.md → Iterative Deepening.
Phase 3 — Fetch
Section titled “Phase 3 — Fetch”Use WebFetch to extract detail from top-ranked results. When WebFetch fails, fall back to firecrawl.
Rules:
- Fetch only the top 3 URLs per atomic question
- Extract key facts, quotes, dates, and data points
- Note publication date and author/publisher for every source
- Skip paywalled, login-required, or dead URLs — log as ✗ inaccessible
- Never summarize without reading — always fetch before citing
Firecrawl Fallback
Section titled “Firecrawl Fallback”When WebFetch fails (paywall, auth wall, timeout, 403, 429), try firecrawl before marking a source as inaccessible:
| WebFetch Result | Action |
|---|---|
| 200 OK | Use WebFetch content — no fallback needed |
| 403 / paywall / auth | Try firecrawl scrape on the URL |
| 429 rate limited | Back off 4s, retry WebFetch once, then firecrawl |
| Timeout (>30s) | Try firecrawl scrape on the URL |
| 404 / gone | Skip — no fallback |
Firecrawl budget: max 5 firecrawl pages per research session (in addition to the 15-fetch WebFetch budget).
See reference/extraction-patterns.md for WebFetch + firecrawl coordination.
Phase 4 — Verify
Section titled “Phase 4 — Verify”Cross-validate every claim before including it in the brief.
| Claim type | Min sources | Confidence threshold |
|---|---|---|
| Factual statement | 3 | 2/3 agree → high |
| Statistic / number | 5 | 3/5 agree within 10% → high |
| Opinion / trend | 2 | Cite all, label speculative |
| Breaking news | 3 | Check publication date lag |
Contradiction protocol:
- Surface the contradiction explicitly — never pick a winner silently
- Note which sources disagree and why (methodology, date, scope)
- Label the claim
[CONTRADICTED]in the brief - Recommend the most authoritative source, but show all
Credibility scoring and source-type rankings are in reference/source-verification.md.
Phase 5 — Output
Section titled “Phase 5 — Output”Produce RESEARCH_BRIEF.md following the standard template.
Every fact gets:
- Inline citation:
[1] - Confidence tag:
[HIGH]/[MEDIUM]/[SPECULATIVE] - Source entry in bibliography with URL + date accessed
Template, citation format, and confidence tagging rules are in reference/output-format.md.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Confidence Levels
Section titled “Confidence Levels”| Level | Meaning | Requirement |
|---|---|---|
[HIGH] | Verified across multiple credible sources | 3+ independent sources agree, no contradictions |
[MEDIUM] | Supported but not fully corroborated | 2 sources agree, or 1 authoritative primary source |
[SPECULATIVE] | Single source, unclear methodology, or unverifiable | Cite source, flag explicitly |
Always show confidence inline. Never omit it.
Common Mistakes
Section titled “Common Mistakes”| Mistake | Correct approach |
|---|---|
| Citing a search result without fetching the page | Always WebFetch before citing |
| Averaging contradictory statistics | Surface the contradiction, cite all values |
Treating .com blog posts as primary sources | Score credibility first — see source-verification.md |
| Using data older than 2 years without flagging | Mark as [OUTDATED — YYYY] in the brief |
| Stopping at 1 source and calling it done | Min 3 per claim — no exceptions |
| Resolving contradictions silently | Always surface, always label [CONTRADICTED] |
| Including unsearchable claims as speculative without note | Flag [UNVERIFIABLE] and state why |
Tool Coordination
Section titled “Tool Coordination”WebSearch → URL discovery, result scanning, quick fact checksWebFetch → Deep extraction from specific pages, quote pullingNever use WebFetch cold on a URL you haven’t discovered via WebSearch first, unless the user provides the URL directly. Never rely on WebSearch snippets alone — always fetch for facts you’ll cite.