do-web-doc-resolver fetches web pages and executes search queries, stripping boilerplate and formatting the output into token-dense Markdown for LLM prompt context. It executes an execution cascade across free and paid providers, falling back automatically if a provider fails or returns low-density content.
The resolution engine queries providers in tiered priority order, returning upon the first result that satisfies quality thresholds.
- Semantic Cache: Local SQLite vector cache (
sqlite-vec). - Free Search Tier: Exa MCP, Exa SDK, Tavily, DuckDuckGo.
- Paid Search Tier: Serper, Mistral.
- Semantic Cache: Pre-cached document lookup.
- Free Static Tier:
llms.txtdiscovery. - Free Direct & Lite Tier: Direct HTTP fetch, Jina Reader, Firecrawl.
- Browser Tier: Mistral Browser.
Requires Python 3.11 or higher.
git clone https://github.com/d-oit/do-web-doc-resolver.git
cd do-web-doc-resolver
pip install -r requirements.txtRequires Rust 1.80+.
cd cli
cargo build --releaseRequires Node.js 18+.
cd web
npm install --legacy-peer-depspython -m scripts.cli "https://docs.python.org/3/"
python -m scripts.cli "python asyncio taskgroup example"from scripts.resolve import resolve
result = resolve("https://docs.python.org/3/")
print(result["content"])./cli/target/release/do-wdr resolve "https://docs.python.org/3/"
./cli/target/release/do-wdr resolve "rust tokio tutorial"cd web
npm run dev
# Open http://localhost:3000No API keys are required for zero-config operation using free providers. Optional API keys enable additional paid provider tiers:
| Environment Variable | Provider | Required | Description |
|---|---|---|---|
EXA_API_KEY |
Exa SDK | No | Enables Exa search and extraction |
TAVILY_API_KEY |
Tavily | No | Enables Tavily web search |
SERPER_API_KEY |
Serper | No | Enables Google Search via Serper |
FIRECRAWL_API_KEY |
Firecrawl | No | Enables Firecrawl scraping |
MISTRAL_API_KEY |
Mistral AI | No | Enables Mistral Search and Mistral Browser |
pytest tests/ -v -m "not live"cd cli && cargo testcd web && npx playwright test --project=desktop./scripts/quality_gate.sh