AI Source Verifier avatar

AI Source Verifier

Pricing

from $10.00 / 1,000 source verifications

Go to Apify Store
AI Source Verifier

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

KIM SEUNG KOOK

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

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_days and last_modified when 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/mcp
Authorization: Bearer YOUR_APIFY_TOKEN
Content-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 to true when 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 for error and timeout verdicts.
{
"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

VerdictMeaningBilled
matchedClaimed values found on the pageYes
mismatchValues differ from what was claimedYes
uncheckedNo claim provided; page title and description returnedYes
recoveredPage is dead but content found in Wayback Machine archiveYes
unavailablePage is dead and no archive existsYes
restrictedPaywall or login required (title only) / robots.txt blockedPaywall: Yes / robots.txt: No
unsupportedContent type not supported (PDF, images, etc.)No
timeoutRequest timed outNo
errorUnexpected error during processingNo

Supported value formats

Numeric and date extraction supports four languages. Snippet tokenization uses Intl.Segmenter for English, Korean, Japanese, and Chinese.

TypeExamples
Numbers1,391.50 / 1,391
Percentages3.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 units1.5조원 / 500억 / 3000만
CJK large units1.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 restricted with 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 restricted verdict 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.