corroborate-mcp
The corroborate-mcp server provides two tools to verify how independently a news claim is being reported and to find raw news sources.
corroborate_claim: Submit a plain declarative sentence and receive a structured verdict on independent reporting:Verdict:
CONFIRMED(2+ independent origins),SINGLE_SOURCE(1 origin), orUNCORROBORATED(0 origins)Syndication-aware: Wire service stories echoed across 40 outlets count as one origin, not 40
Confidence score (0–1): Rises with more independent origins and cross-engine agreement
Per-source evidence: Outlet name, domain, URL, publication date, wire flag, and echo count
Coverage flag: Indicates
fullordegradedcoverage (e.g., if an engine was down)Honest caveats: Notes on syndication collapse, breaking-news cascades, and engine outages
Configurable lookback window (1–90 days, default 7) and max sources (1–20, default 8)
find_sources: Search across Google News RSS, GDELT, and Hacker News for a query, returning a deduplicated list of sources (outlet, domain, url, date) — useful when you want raw coverage without a scored verdict. Supports up to 30 results and the same configurable window.
Key properties:
No API keys or accounts required
Read-only and deterministic (no LLM in the loop)
Fails safely: returns an error rather than a false
UNCORROBORATEDif all engines are unreachableMeasures independent reporting corroboration, not truth — a distorted claim about a real event may still show coverage
Allows searching Google News RSS for news articles to corroborate claims.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@corroborate-mcpIs 'Fed cuts rates by 0.5%' corroborated?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
corroborate-mcp
The honest corroboration layer for AI agents. Hand it a claim; it tells you how independently that claim is actually being reported — and shows its work.
An AP story echoed by 40 outlets is one origin, not 40 citations. Other verifiers count citations; Corroborate counts independent origins — syndication-aware — then publishes its own error rates and discloses coverage gaps. That's the judgment layer raw search and citation-checkers skip.
corroborate_claim("NASA delayed the Artemis III landing") → CONFIRMED 4 independent origins · conf 0.9
corroborate_claim("Zorblatt Corp acquired Portugal") → UNCORROBORATED 0 origins · conf 0.05When an agent should call this
Before relying on a current-event / news claim — is it independently reported, or one source echoed everywhere?
To rank or filter sources by genuine independence, with a confidence score.
When you need a verdict you can defend — every answer ships its evidence, its confidence, and its own caveats.
Not a web search engine (use Exa/Tavily/Brave for that) and not a human fact-checking network. It's the narrow, honest primitive in between: how independently is this reported?
Related MCP server: Fact-Checker MCP Server
Why it's trustworthy — by design
🔑 Zero API keys, zero accounts | Keyless engines (Google News RSS · GDELT · Hacker News). Nothing to sign up for. |
👁 Read-only | It reads public news. It cannot act, write, spend, or touch your data. |
🎯 Deterministic | No LLM in the loop — same evidence in, same verdict out. p50 ~0.4s. |
📖 Open source (MIT) | Read every line of the judgment. |
📊 Published error rates | We measure our own false-CONFIRMED / false-UNCORROBORATED rates on a public benchmark and print them below. Most "fact-check" tools don't. |
🚫 Never lies by omission | If sources are unreachable it returns an error, never a fake "UNCORROBORATED." |
What it measures — and what it doesn't
Reporting corroboration, not truth. A claim every outlet syndicated from one wire story comes back SINGLE_SOURCE. A claim nobody covers comes back UNCORROBORATED even if true. The verdict states exactly what was measured, flags its weaknesses in notes, and sets coverage:"degraded" when an engine was down — so absence of evidence is never quietly sold as evidence of absence.
Quickstart
Requires Node ≥ 18. No keys, no config.
Claude Code
claude mcp add corroborate -- npx -y corroborate-mcpClaude Desktop / Cursor / any MCP client (claude_desktop_config.json, .cursor/mcp.json, …)
{ "mcpServers": { "corroborate": { "command": "npx", "args": ["-y", "corroborate-mcp"] } } }Try it with no MCP client
npx corroborate-mcp # starts the stdio server (silent = healthy)
# or from a checkout: node cli.js "The Federal Reserve held interest rates steady"Tools
corroborate_claim — the verdict
{ claim, window_days?=7, max_sources?=8 } →
{
"claim": "Acme Corp acquires Widget Industries for $2 billion",
"corroboration": "CONFIRMED",
"n_independent_sources": 3,
"confidence": 0.9,
"coverage": "full",
"sources": [
{ "headline": "Acme Corp to acquire Widget Industries in $2 billion deal",
"outlet": "Financial Times", "domain": "ft.com", "url": "https://…",
"published_at": "2026-07-09T14:02:00Z", "age_days": 0.9,
"wire": false, "echoed_by_n_domains": 1 }
],
"notes": ["syndication detected: near-identical headlines across multiple domains collapsed into one origin"],
"method": "reporting-corroboration: counts INDEPENDENT story origins (syndication-aware), not raw article count; does not adjudicate truth"
}Field | Meaning |
|
|
| Distinct story origins after syndication clustering — not article count |
| 0–1. Rises with origins + cross-engine agreement; penalized for wide single-origin echo |
|
|
| Origin is a wire service (AP/Reuters/AFP/UPI) |
| How many domains carried this same story |
| Honest caveats: syndication collapse, breaking-news cascade (<24h), relevance-gate discards, engine outages |
find_sources — the raw evidence
{ query, window_days?=7, max_sources?=10 } → deduped multi-engine list (outlet, domain, url, date), no verdict. The cheaper primitive when you want the coverage and your own judgment.
Measured accuracy — because you should demand it from any fact-check tool
Against a public 40-claim labeled benchmark (benchmark/ — claims, labels, category definitions, and harness are all public; run it yourself with npm run benchmark). The time-sensitive claims are refreshed from current news so the numbers reflect real accuracy, not staleness. Latest run 2026-07-22:
Metric | Result |
Fabricated claims falsely CONFIRMED | 0/10 |
Widely-reported true claims missed | 0/12 (11 CONFIRMED, 1 single-source) |
Niche true claims detected | 7/8 |
Stale claims correctly windowed | 2/5 |
Distorted claims falsely CONFIRMED | 6/6 — read the warning ↓ |
Latency | p50 0.4s · p95 <1s (≤8s worst case when the slow engine is up) |
⚠️ Respect the distorted-claim number — it's the honest ceiling of this tool's blind spot. In the latest run all 6 distorted claims came back CONFIRMED (6/6), because each one distorts a currently-reported event, and this tool checks whether independent reporting exists around a claim's topic and entities — it does not do stance detection. So "Samsung cancelled the Galaxy Z Fold8" (they unveiled it) or "OpenAI released GPT-6" confirms off the real coverage of the true story. The rule to live by: if a claim's topic is being reported, a distorted version of it will very likely CONFIRM. Read CONFIRMED as "this topic has independent coverage — now verify the specific facts against the returned sources," never as "this exact claim is true." Stance detection is the v1.1 roadmap item. (Recurring events like championships/elections can likewise match the current cycle's coverage — see the stale-claim leaks.)
How the judgment works
Search Google News RSS, GDELT, Hacker News in parallel (keywords extracted from the claim; quoted phrases preserved).
Relevance gate — an article counts only if its headline genuinely addresses the claim (≥2 core-token hits AND ≥35% of core tokens). Loose topical echoes are discarded; the discard count is reported.
Syndication clustering — near-identical headlines across domains (Jaccard ≥ 0.55) collapse into one origin; wire domains flagged.
Verdict — independent origins = distinct clusters; confidence rises with origins + cross-engine agreement, falls for wide single-origin echoes; every known weakness goes in
notes.
Honest limitations
No stance detection (the 6/6 above). CONFIRMED = independently covered, not verified in every detail.
English-language, headline-level. Paywalled body text isn't fetched.
Recency-windowed (default 7 days, max 90). Old claims read
UNCORROBORATED— a window statement, not a falsity verdict.Independent rewrites of one wire story can occasionally slip clustering; distinct phrasings of one origin can occasionally count as two.
All engines down → error, never a fake
UNCORROBORATED.
Development
npm test # golden-claim suite — deterministic, no network
npm run test:mcp # MCP stdio handshake + tools/list
npm run test:live # live invariants against real engines
npm run benchmark # 40-claim labeled accuracy benchmark (live, ~2 min)
npm run test:release # all of the above — required green before every releaseMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- Alicense-qualityCmaintenanceAn MCP server that provides fact-checking capabilities and truth anchoring for AI agents using verified data sources.Last updatedMIT
- Alicense-qualityBmaintenanceThis MCP server enables AI agents to extract, verify, and cache factual claims from text using Claude Haiku and semantic fingerprinting, with tools for content verification, signal verification, and fact memory search.Last updated17MIT
- AlicenseAqualityCmaintenanceMCP server for verifying claims against evidence using natural language inference, providing verdicts like Supports, Refutes, or Not Enough Evidence.Last updated331MIT
- Alicense-qualityBmaintenanceMCP server that automatically cross-checks claims from Reddit posts against trusted news sources and delivers a daily digest to Discord, without making final truth judgments.Last updatedMIT
Related MCP Connectors
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Shared, peer-validated knowledge archive for AI agents — search, contribute, and validate via MCP
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chefcohen/corroborate-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server