AI Source Verifier
Pricing
from $10.00 / 1,000 source verifications
AI Source Verifier
MCP server that visits URLs cited by AI assistants and compares claimed numbers, dates, and facts against actual page content. Surfaces discrepancies and recovers dead links via Wayback Machine.
Pricing
from $10.00 / 1,000 source verifications
Rating
0.0
(0)
Developer
KIM SEUNG KOOK
Actor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
An MCP server that visits URLs cited by AI assistants and shows what the sources actually say. It compares claimed numbers, dates, and facts against real page content — so the AI can self-correct before delivering an answer.
No LLM inside. Linden extracts data deterministically (HTML parsing, regex, BM25 scoring). The AI decides what to do with it.
What it does
- Dead link detection — checks if each URL is alive, dead, or access-restricted
- Numeric/date comparison — extracts numbers and dates from the page and compares them against the AI's claim
- Relevant snippet extraction — uses BM25 scoring with multilingual tokenization (English, Korean, Japanese, Chinese)
- Wayback Machine recovery — finds archived versions of dead pages automatically
- Page freshness — reports
age_daysandlast_modifiedwhen available - Honest reporting — clearly marks paywalled, blocked, and unsupported content instead of guessing
How to connect
This Actor runs as an MCP server in Standby mode. Connect it to any MCP-compatible AI client.
Claude Desktop (Windows)
Install mcp-remote globally (npm install -g mcp-remote), then add to your Claude Desktop config:
{"mcpServers": {"linden": {"command": "mcp-remote","args": ["--header","Authorization: Bearer YOUR_APIFY_TOKEN","https://ficuslink--ai-source-verifier.apify.actor/mcp"]}}}
Direct HTTP
Send MCP requests via POST to the Standby endpoint:
POST https://ficuslink--ai-source-verifier.apify.actor/mcpAuthorization: Bearer YOUR_APIFY_TOKENContent-Type: application/json
Input
The linden_check tool accepts an array of sources (1-50 URLs per call):
{"sources": [{"url": "https://www.investing.com/currencies/usd-krw","claim": "USD/KRW exchange rate is 1,385"},{"url": "https://www.reuters.com/markets/currencies/won-weakens","claim": "The Korean won weakened past 1,390 per dollar"},{"url": "https://example.com/stats"}]}
url(required): The URL to verify. HTTP and HTTPS only.claim(optional): The specific fact the AI is asserting based on this URL. Including a claim enables numeric comparison and targeted snippet extraction. Write the claim in the same language as the source page for best results.
Output
Each result includes a verdict and relevant fields depending on the outcome.
language_mismatch: Set totruewhen the claim language differs from the page language. Numeric/date comparison still works; snippet accuracy may be reduced.accessible_content:"title_only"for paywalled pages,"none"for robots.txt-blocked pages.archive_url/archive_date: Wayback Machine snapshot URL and date (YYYYMMDD) for dead pages.error_message: Human-readable error description forerrorandtimeoutverdicts.
{"summary": {"matched": 1,"mismatch": 1,"recovered": 1,"restricted": 1,"unchecked": 0,"unavailable": 0,"unsupported": 0,"timeout": 0,"error": 0},"results": [{"url": "https://www.investing.com/currencies/usd-krw","status": "alive","http_code": 200,"page_title": "USD/KRW - US Dollar Korean Won","last_modified": "2026-03-26","age_days": 1,"snippet": "USD/KRW 1,391.50 +3.20 (+0.23%)","snippet_score": 8.7,"snippet_confidence": "high","claimed_values": ["1,385"],"found_values": ["1,391.50"],"verdict": "mismatch"},{"url": "https://www.reuters.com/markets/currencies/won-weakens","status": "alive","http_code": 200,"page_title": "Korean won hits 3-month low as trade tensions mount","snippet": "The Korean won weakened past 1,390 per dollar on Monday...","snippet_score": 7.2,"snippet_confidence": "high","claimed_values": ["1,390"],"found_values": ["1,390"],"verdict": "matched"},{"url": "https://old-finance-blog.kr/bok-rate-decision","status": "dead","http_code": 404,"archive_url": "https://web.archive.org/web/20260310/old-finance-blog.kr/bok-rate-decision","archive_date": "20260310","verdict": "recovered"},{"url": "https://www.bloomberg.com/news/articles/2026-03-krw-forecast","status": "restricted","http_code": 403,"page_title": "Won Forecast: Analysts See Further Weakness Ahead","accessible_content": "title_only","verdict": "restricted"}]}
Verdict types
| Verdict | Meaning | Billed |
|---|---|---|
matched | Claimed values found on the page | Yes |
mismatch | Values differ from what was claimed | Yes |
unchecked | No claim provided; page title and description returned | Yes |
recovered | Page is dead but content found in Wayback Machine archive | Yes |
unavailable | Page is dead and no archive exists | Yes |
restricted | Paywall or login required (title only) / robots.txt blocked | Paywall: Yes / robots.txt: No |
unsupported | Content type not supported (PDF, images, etc.) | No |
timeout | Request timed out | No |
error | Unexpected error during processing | No |
Supported value formats
Numeric and date extraction supports four languages. Snippet tokenization uses Intl.Segmenter for English, Korean, Japanese, and Chinese.
| Type | Examples |
|---|---|
| Numbers | 1,391.50 / 1,391 |
| Percentages | 3.5% / 3.5퍼센트 / 3.5パーセント / 3.5percent |
| Currency (symbols) | $1,500 / €1,500 / £1,500 / ¥1,500 |
| Currency (Korean) | 1,500원 |
| Currency (CJK) | 1,500元 / 1,500円 |
| Abbreviated | $1.5T / $1.5B / $1.5M / $1.5K |
| Korean large units | 1.5조원 / 500억 / 3000만 |
| CJK large units | 1.5兆 / 17.96万亿元 / 500万円 / 1.5亿元 |
| Dates (ISO) | 2026-03-26 |
| Dates (English) | March 26, 2026 |
| Dates (Korean) | 2026년 3월 26일 |
| Dates (CJK) | 2026年3月26日 |
Limitations
- Does not detect subtle meaning distortion or exaggeration
- Does not perform full fact-checking — it surfaces data, not judgments
- Cannot access paywalled content (reports
restrictedwith title only) - PDF content verification is not supported in this version
- Cross-language semantic matching is limited; numeric/date comparison works across languages
Pricing
$0.01 per call (up to 50 URLs per call).
A call is billed only when it produces at least one meaningful result. Results with error, timeout, unsupported, or restricted (robots.txt) verdicts are not billed. If every URL in a call falls into these categories, the call is free.
Estimated total cost per call (including Apify infrastructure): ~$0.03-0.04 on the Starter plan.
Security
This Actor visits arbitrary URLs provided by AI assistants. Security is built in from the ground up:
- SSRF defense (4 layers): Input validation for IP literals, DNS pinning for HTTP requests, pre-navigation DNS re-verification for Playwright, and real-time request monitoring via
page.route('**/*') - HTTP/2 disabled: Prevents connection pooling from bypassing DNS pinning
- Resource limits: 10MB response cap, 30s per-URL timeout, 5 redirect hops max, decompression bomb protection
- robots.txt compliance: Checked before crawling each domain. Blocked pages receive
restrictedverdict with no charge. - Identifiable User-Agent:
Linden/1.0 (AI Source Verifier by FICUSLINK; +https://ficuslink.com)
Disclaimer
This tool surfaces discrepancies between AI claims and source content. It is not a substitute for professional fact-checking. Results are provided as-is without warranty of completeness or accuracy.