Skip to main content

5-stage deep research pipeline using DuckDuckGo MCP — free, no API key, no rate limits

Project description

🧠 ddg-deep-research

5-stage deep research pipeline using DuckDuckGo MCP — free, no API key, no rate limits.

pip install ddg-deep-research
ddg-deep-research search "your query"

Why this exists

Every other deep research agent requires OpenAI / Anthropic / Google API keys — or runs expensive local models. This one uses DuckDuckGo MCP for both search and content extraction. Completely free. Zero API keys. Zero rate limits.

Pipeline

Stage 1: Decompose  ──→ 3-6 sub-questions + search strategy
Stage 2: Gather     ──→ DuckDuckGo MCP search (parallel, unlimited)
Stage 3: Deep Read  ──→ DuckDuckGo MCP fetch_content + browser_use
Stage 4: Verify     ──→ Cross-reference claims, flag contradictions
Stage 5: Synthesize ──→ Cited brief.md + .provenance.md sidecar

Quick Start

# Search the web (free, no API key!)
ddg-deep-research search "latest advances in AI reasoning"

# Fetch a webpage
ddg-deep-research fetch "https://example.com/article"

Full Pipeline

# Stage 1: Break question into sub-questions (template)
ddg-deep-research decompose --question "How is RAG evolving?" --output plan.json

# Stage 2: Search
ddg-deep-research ddg_search --query "RAG architectures 2026" --output results.json

# Stage 3: Fetch content
ddg-deep-research ddg_fetch --url "https://..." --output-dir extracted/

# Stage 4: Merge results
ddg-deep-research merge --input-dir raw/ --output merged.json

# Stage 5: Clean & verify
ddg-deep-research clean --input extracted/ --output cleaned/
ddg-deep-research verify --input cleaned/cleaned.json --output verified.json

# Stage 6: Generate final brief
ddg-deep-research synthesize --verified verified.json --question "..." --output-dir outputs/ --today $(date +%Y-%m-%d)

Parallel DAG Execution

ddg-deep-research dag --plan workflow.json --verbose

Input JSON:

{
  "tasks": [
    {"id": "search_1", "depends_on": [], "command": "ddg_search --query ..."},
    {"id": "fetch_1", "depends_on": ["search_1"], "command": "ddg_fetch --url ..."},
    {"id": "synthesize", "depends_on": ["search_1", "fetch_1"], "command": "synthesize ..."}
  ]
}

Python API

import asyncio
from ddg_deep_research.ddg_mcp import search_web, fetch_content

async def main():
    results = await search_web("your query", max_results=10)
    for r in results:
        print(f"{r['title']}: {r['url']}")

    content = await fetch_content("https://example.com")
    print(content[:500])

asyncio.run(main())

Requirements

  • Python 3.10+
  • uv installed (for duckduckgo-mcp-server): curl -LsSf https://astral.sh/uv/install.sh | sh
  • No API keys. No subscriptions. Nothing.

How it works

This package wraps duckduckgo-mcp-server via Python's MCP stdio transport. All search and content extraction goes through DuckDuckGo's free anonymous API. The 5-stage pipeline is modeled after production research agents but without the API costs.

Comparison

Feature OpenAI Deep Research LangChain Deep Research ddg-deep-research
API key needed ✅ $200/mo ✅ OpenAI key ❌ Free
Search engine Bing/Browser Custom DuckDuckGo
Content extraction Built-in Built-in DuckDuckGo MCP
Provenance tracking ✅ .provenance.md
DAG orchestration ✅ Built-in
Open source ✅ MIT
pip install ✅ pip install

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ddg_deep_research-0.2.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ddg_deep_research-0.2.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file ddg_deep_research-0.2.0.tar.gz.

File metadata

  • Download URL: ddg_deep_research-0.2.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for ddg_deep_research-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a9aa6db0f04a77e77fc3acd4ea34d10d8c8bc7dde8f2945ec949894a9b1d75b5
MD5 b92a44576e82c97997680f26e418ab01
BLAKE2b-256 2eb613b93265c8fc43f8fcc14124f6f6842f75749dbbd6fbe1d59e52acbdb2b6

See more details on using hashes here.

File details

Details for the file ddg_deep_research-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ddg_deep_research-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa5c034d5fbcc74bce3d0af8c3622b4f19bcbb63f3a9ea53b39cfb401245b9f9
MD5 6e0bec2acebedc1d0e332d410f262b8f
BLAKE2b-256 9a9c033481e8a628a638447c7e6e6448ea0687bb2af9cbe162fc6f7a78c63be9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page