Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
I built this for my own daily research. After running 100+ research sprints, my agent kept hallucinating because it read 200-char snippets. qsearch gives it full content with multi-engine provenance β running locally, owned by me.
AI agents lose 17β33% of facts to hallucination because they read 200-character snippets, not full pages (Stanford 2024). Existing search APIs hide which engines agreed on a result. Existing knowledge graphs are enterprise-priced or vendor-locked.
qsearch is the open-source search layer that gives agents full content with multi-engine provenance β running on your machine, owned by you, ready for MCP today.
β v0.4.0 live at qsearch.pro. Multi-engine attribution, trust corpus with per-URL provenance (
engines[],sweep_count,trust_score), corpus viewer at/ui, MCP-over-HTTP for Claude Code and any spec-compliant client. π Architecture: ARCHITECTURE.md Β· Vision: docs/VISION.md Β· Technical spec: docs/TRUST_MESH.md Β· Federation deep-dive: docs/FEDERATION_ARCHITECTURE.md

60-second tour:
/health(it's up, local) β/sweep(multi-engineengines[]attribution) β/verify(does the cited source actually support the claim?). Reproduce it locally withbash scripts/record-demo.shafternpm startβ see docs/launch/README-demo-embed.md.
Run it in 5 minutes β free tier, no API key:
The broad sweep tier runs on self-hosted SearXNG and costs nothing. Add a Brave key only when you want the focused/critical tiers. Full setup (Brave key, Ollama, MCP server) below.
BYOK design: Brave key + SearXNG + Ollama all stay on your machine. No data exfiltration.
Every research sprint I run a dual sweep:
After 10+ sprints on the same domain, /corpus/top?min_engines=3 shows which URLs survived multiple independent search engines across multiple sessions. Those are the ones I actually trust.
Every AI agent today hits the same broken loop:
Three failures:
Snippets aren't enough. Stanford's 2024 production RAG audit measured 17β33% hallucination on Lexis+ AI and Westlaw despite "hallucination-free" claims. On Wikipedia QA, full content beats snippet-RAG by +7.3pp (arxiv 2501.01880).
No trust signal. Search APIs return ranked lists without telling you which engines agreed. SEO-spam at position 3 looks identical to authoritative source at position 4.
No memory. Every search starts from zero. The same trash gets surfaced again. The same authority goes unrecognized.
qsearch addresses all three:
engines[] field per result β Google + DDG + Brave + Qwant + Startpage attribution exposed (via SearXNG aggregation).The yellow node is your private corpus. URLs found by 5 engines + 3 sweeps + 4 topics get a trust score that emerges naturally β no human ranking, no centralized authority, no cloud round-trip.
| Tavily | Exa | Serper | Brave API | SearXNG | qsearch | |
|---|---|---|---|---|---|---|
| Open source core | β | β | β | β | β | β |
| Full content (not snippets) | partial | partial | β | β | β | β |
| Multi-engine attribution | β | β | β | β | partial | β
(engines[]) |
| Persistent local corpus | β | β | β | β | β | β |
| Trust score per URL | β | β | β | β | β | β |
| Self-hostable | β | β | β | β | β | β |
| MCP-native | partial | β | β | β | β | β |
| BYOK upstream | β | β | β | N/A | β | β |
| Endpoint | Description | Backend |
|---|---|---|
POST /search | Web search + corpus first, trust-weighted re-rank | Brave or SearXNG |
POST /sweep | Batch search with priority/domain routing (see below) | SearXNG / Brave / Academic |
POST /cached_sweep | Same as /sweep, with SQLite memcache layer | SearXNG / Brave / Academic |
POST /academic_search | Peer-reviewed papers via arxiv + PubMed + Semantic Scholar | Academic (free, no auth) |
POST /sweep_context | Local LLM page extraction (analogue of Brave LLM Context) | Ollama qwen2.5 |
POST /news | News search | Brave (requires key) |
POST /context | Deep page extraction | Brave (requires key) |
POST /verify | Citation honesty check β does the cited URL actually support a claim? Returns Supported/Partial/Unsupported/Fabricated/Error + verbatim excerpt | LLM-as-judge (local Ollama qwen2.5 or DeepSeek) |
POST /index | Crawl URL or index local .md glob | Crawl4AI |
GET /trust/:url | Trust score + provenance for any URL in corpus | β |
GET /corpus/top | Top URLs ranked by trust (?limit=20&min_engines=3) | β |
GET /corpus/stats | Corpus size + counts | β |
GET /economy_report | Sprint cost breakdown by backend + savings vs all-Brave | β |
GET /ui | Corpus browser β search, trust scores, provenance modal | β |
GET /health | Service status | β |
/search accepts: query, n_results (1β20), freshness (pd/pw/pm/py), search_lang, country, corpus_first (default true), corpus_only (default false).
/sweep accepts text/plain body with one query per line in the format label|query[|priority][|domain]:
broad (default, SearXNG, $0) / focused (Brave, ~$0.005) / critical (Brave + LLM Context, ~$0.01)general (default) / scholarly (arxiv+PubMed+S2, $0) / ru (SearXNG with language=ru-RU bias, $0)Auto-indexes results into Meilisearch with engines[] and engine_count filterable.
/academic_search accepts JSON: { query, n_results (1-20), sources?: ["arxiv","pubmed","semanticscholar"] }. Fans out to all three in parallel, dedupes by DOI/title, returns interleaved top-N.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/qsearch)<a href="https://allmcps.com/mcp/qsearch"><img src="https://allmcps.com/api/badge/qsearch?style=directory" alt="Qsearch on AllMCPs" /></a>