Claim Radar & Fact Checking
Relevant source files
The following files were used as context for generating this wiki page:
The Isabella Claim Radar Engine evaluates factual assertions against evidence retrieved from Model Context Protocol (MCP) adapters. It operates under a fundamental rule: retrieval does not constitute verification. The system separates lexical relevance from epistemic status to ensure that high-risk claims in domains like medical, legal, or financial areas require identifiable sources and human review.
Sources: src/lib/claim-radar/claim-radar.ts:1-12, src/lib/epistemic/epistemic-governance.ts:1-11
System Architecture
The Claim Radar functions as an intermediary between user assertions and external research repositories. It utilizes a governed pipeline to query adapters, analyze evidence compatibility, and classify the resulting epistemic state.
The diagram shows the data flow from an initial assertion through external adapters to a classified report.
Sources: src/lib/claim-radar/claim-radar.ts:47-60, src/lib/claim-radar/contracts.ts:75-80
Claim Evaluation Logic
The evaluateClaim function executes the core logic for fact-checking. It performs the following steps:
- Context Construction: Builds an
MCPQueryContextincluding unique IDs and target DOIs. - Adapter Query: Calls
queryAdaptersto fetch results from configured sources like Zenodo or OSF. - Result Categorization: Separates results into supporting vs. contradictory arrays based on semantic comparison.
- Evidence Classification: Assigns a status (e.g.,
supported,refuted,insufficient) and calculates a confidence score. - Caveat Generation: Appends warnings if the domain is high-risk or the evidence is indirect.
Sources: src/lib/claim-radar/claim-radar.ts:47-156
Evidence Status Types
The system uses a strict schema to define the epistemic standing of a claim.
| Status | Description |
|---|---|
supports | Sufficient compatible evidence exists. |
contradicts | Relevant evidence contradicts the claim under the same scope. |
contextualizes | Evidence adds nuance without direct support or refutation. |
insufficient | Retrieval occurred but does not constitute proof. |
unavailable | Sources could not be reached or returned no results. |
Sources: src/lib/claim-radar/contracts.ts:17-25, src/lib/epistemic/epistemic-governance.ts:121-127
Epistemic Governance
Epistemic Governance enforces safety rules across specific domains. High-risk domains always trigger a requirement for manual review, even if supporting evidence is found.
High-Risk Domains
The following domains are classified as high-risk:
- Academic: Requires DOI and author ORCID.
- Territorial: Requires documented primary sources with date and scope.
- Medical: Must never be presented as medical advice; requires regulated sources.
- Legal: Requires current regulations and jurisdiction; must not be presented as legal advice.
- Financial: Requires regulated sources and validity dates.
Sources: src/lib/epistemic/epistemic-governance.ts:15-32, src/lib/claim-radar/claim-radar.ts:22-28
Epistemic Classifier Flow
The classifyEpistemicStatus function determines the final state based on counts and relevance scores.
The flow illustrates how the engine prioritizes contradictions and high-risk domain checks over simple relevance scoring.
Sources: src/lib/epistemic/epistemic-governance.ts:45-112
MCP Adapters
Adapters like the ZenodoMCPAdapterV2 translate external API responses into a canonical format. They are prohibited from declaring a claim as "verified" independently.
Key Adapter Components
- Validation: Uses Zod schemas (e.g.,
ZenodoHitSchema) to reject malformed external data. - Relevance Scoring: Implements lexical scoring (BM25-like) to measure the overlap between assertion and description.
- Provenance: Every result includes a
responseDigest(SHA3-256),adapterVersion, andqueryDigestto ensure auditability.
Sources: src/lib/mcp-adapters/zenodo-mcp-adapter.ts:24-135
API Implementation
The Claim Radar is exposed via the Isabella Node Cero gateway. Access to evaluation endpoints requires specific scopes.
| Endpoint | Method | Scope Required | Description |
|---|---|---|---|
/api/v1/claim-radar/evaluate | POST | claim:evaluate | Evaluates a specific assertion against MCP adapters. |
/api/v1/claim-radar/metrics | GET | claim:evaluate | Returns high-risk domains and engine rules. |
/api/v1/epistemic/rules | GET | governance:read | Lists canonical epistemic states and invariants. |
Sources: server.ts:1145-1175, scripts/authz/isabella_scopes_catalog_v2.json:448-465
Summary of Engine Invariants
- Retrieval is not verification: Finding a document is the start, not the end, of fact-checking.
- Low score ≠ contradiction: A low relevance score means the document is not useful, not that it refutes the claim.
- High-risk requires manual review: Systems do not grant definitive proof in sensitive domains.
- Explicit Contradictions: Contradictory evidence must be explicitly exposed to the user.
Sources: src/lib/claim-radar/claim-radar.ts:167-173, src/lib/epistemic/epistemic-governance.ts:129-136