Claim Grounding
Fact-check AI answers with cited sources. Pay per call in USDC on Base via x402.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"claim-grounding": {
"url": "https://claim-grounding.prospectintel.workers.dev/mcp"
}
}
}Remote endpoints
https://claim-grounding.prospectintel.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢extract_claims(text)
Split a text (for example an AI-generated answer) into atomic factual claims. Each claim includes span, grounding_required, claim_type (number|date|quantity|quote|named_entity_fact|comparison|opinion|prediction|other), check_worthiness (high|medium|low), and the source sentence. Hedges are stripped, pronouns are resolved across sentences, and compound sentences are split. Questions, greetings, opinions and predictions are marked grounding_required false. Use before verify_claim. Price: $0.05 USDC on Base per call via x402; this MCP call returns payment instructions and POST /v1/extract_claims returns the claims. Read-only.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text to split into claims, for example a chatbot answer. Up to a few thousand characters.",
"minLength": 1,
"examples": [
"The Eiffel Tower is in Paris and was completed in 1889."
]
}
},
"required": [
"text"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"payment_required",
"ok"
],
"description": "payment_required: pay the HTTP route with x402 to get the result. ok: result is included."
},
"tool": {
"type": "string",
"description": "Tool name."
},
"payment": {
"type": "object",
"description": "Payment instructions. MCP tools/call does not charge or run the paid work; call the HTTP route with x402.",
"properties": {
"protocol": {
"type": "string",
"description": "Payment protocol, always x402 (v2)."
},
"method": {
"type": "string",
"description": "HTTP method for the paid route."
},
"url": {
"type": "string",
"description": "Paid HTTP route to call."
},
"price": {
"type": "string",
"description": "Price in USD, paid as USDC."
},
"amount": {
"type": "string",
"description": "Price in USDC base units (6 decimals)."
},
"network": {
"type": "string",
"description": "CAIP-2 network id (eip155:8453 = Base mainnet)."
},
"asset": {
"type": "string",
"description": "USDC contract address on Base."
},
"pay_to": {
"type": "string",
"description": "Receiving wallet address."
},
"body": {
"type": "object",
"description": "JSON body to POST (the tool arguments you sent).",
"additionalProperties": true
},
"how": {
"type": "string",
"description": "Step-by-step payment flow."
}
},
"required": [
"protocol",
"method",
"url",
"price",
"network"
]
},
"result": {
"type": "object",
"description": "Paid result: { claims: [{ claim_id, text, span, grounding_required, claim_type, check_worthiness, sentence, sentence_index, next_step? }], recommended_next_steps, summary, priced_usd }.",
"properties": {
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"next_step": {
"type": "object",
"description": "1.4.8: present only on unsure, low-confidence or unverified high-worthiness claims. A ready-to-send Deep verify request for this claim (optional, paid separately).",
"properties": {
"tool": {
"type": "string",
"const": "deep_verify"
},
"why": {
"type": "string"
},
"price_usd": {
"type": "number"
},
"endpoint": {
"type": "string",
"format": "uri"
},
"method": {
"type": "string",
"const": "POST"
},
"body": {
"type": "object",
"properties": {
"claim": {
"type": "object",
"properties": {
"text": {
"type": "string"
}
},
"required": [
"text"
]
}
},
"required": [
"claim"
]
}
},
"required": [
"tool",
"why",
"price_usd",
"endpoint",
"method",
"body"
]
}
}
}
},
"recommended_next_steps": {
"type": "object",
"description": "1.4.8: summary of claim-level next_step suggestions.",
"properties": {
"tool": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"total_price_usd": {
"type": "number"
},
"endpoint": {
"type": "string",
"format": "uri"
},
"note": {
"type": "string"
}
},
"required": [
"tool",
"count",
"total_price_usd"
]
},
"summary": {
"type": "object"
},
"priced_usd": {
"type": "number"
}
},
"additionalProperties": true
},
"message": {
"type": "string",
"description": "Human-readable summary."
}
},
"required": [
"status",
"tool",
"message"
],
"additionalProperties": true
}🟢verify_claim(claim, sources, sources_only)
Check one factual claim against public Wikipedia sources and return a verdict (supported, contradicted, outdated, mixed or insufficient_evidence), a confidence score, a short reason, the supporting quote and the source URL. Says insufficient_evidence instead of guessing. Price: $1.00 USDC on Base per call via x402; this MCP call returns payment instructions and the paid HTTP route POST /v1/verify_claim returns the verdict. For a multi-source check use deep_verify. Read-only.
Input Schema
{
"type": "object",
"properties": {
"claim": {
"type": "string",
"description": "One factual sentence to check.",
"minLength": 1,
"examples": [
"The Eiffel Tower is in Paris."
]
},
"sources": {
"type": "array",
"maxItems": 10,
"items": {
"type": "object",
"description": "One source: {url} for a public https page we fetch, or {text, title?, url?} for text you already have.",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public https URL. Fetched with a 3.5 s timeout and a 512 KB cap; http, file and other schemes, private / loopback / link-local / metadata addresses, IP-literal hosts, custom ports and URLs with credentials are rejected (HTTP 400, not charged). With text, it is only the citation link."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "Source text to check the claim against (up to 20,000 characters). When given, no fetch is made."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "Optional title shown in citations."
}
},
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"text"
]
}
],
"additionalProperties": false
},
"description": "Optional. Up to 10 sources of your own, used as extra evidence next to the public sources and cited with provider and source_type \"caller\". The response lists what was used in sources_used."
},
"sources_only": {
"type": "boolean",
"default": false,
"description": "Optional. true = judge the claim only against your sources (no public-source lookups). Needs a non-empty sources array."
}
},
"required": [
"claim"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"payment_required",
"ok"
],
"description": "payment_required: pay the HTTP route with x402 to get the result. ok: result is included."
},
"tool": {
"type": "string",
"description": "Tool name."
},
"payment": {
"type": "object",
"description": "Payment instructions. MCP tools/call does not charge or run the paid work; call the HTTP route with x402.",
"properties": {
"protocol": {
"type": "string",
"description": "Payment protocol, always x402 (v2)."
},
"method": {
"type": "string",
"description": "HTTP method for the paid route."
},
"url": {
"type": "string",
"description": "Paid HTTP route to call."
},
"price": {
"type": "string",
"description": "Price in USD, paid as USDC."
},
"amount": {
"type": "string",
"description": "Price in USDC base units (6 decimals)."
},
"network": {
"type": "string",
"description": "CAIP-2 network id (eip155:8453 = Base mainnet)."
},
"asset": {
"type": "string",
"description": "USDC contract address on Base."
},
"pay_to": {
"type": "string",
"description": "Receiving wallet address."
},
"body": {
"type": "object",
"description": "JSON body to POST (the tool arguments you sent).",
"additionalProperties": true
},
"how": {
"type": "string",
"description": "Step-by-step payment flow."
}
},
"required": [
"protocol",
"method",
"url",
"price",
"network"
]
},
"result": {
"type": "object",
"description": "Paid result: { mode, claim: { text, verdict, confidence, rationale_short, citations[] }, why, source, receipt }.",
"properties": {
"claim": {
"type": "object",
"properties": {
"claim_id": {
"type": "string"
},
"text": {
"type": "string"
},
"verdict": {
"type": "string"
},
"confidence": {
"type": "number"
},
"citations": {
"type": "array",
"description": "Evidence quotes with url, title and source_type (wikipedia, wikidata, news, europepmc, fred, sec_edgar, or caller for your own sources).",
"items": {
"type": "object"
}
},
"next_step": {
"type": "object",
"description": "1.4.8: present only on unsure, low-confidence or unverified high-worthiness claims. A ready-to-send Deep verify request for this claim (optional, paid separately).",
"properties": {
"tool": {
"type": "string",
"const": "deep_verify"
},
"why": {
"type": "string"
},
"price_usd": {
"type": "number"
},
"endpoint": {
"type": "string",
"format": "uri"
},
"method": {
"type": "string",
"const": "POST"
},
"body": {
"type": "object",
"properties": {
"claim": {
"type": "object",
"properties": {
"text": {
"type": "string"
}
},
"required": [
"text"
]
}
},
"required": [
"claim"
]
}
},
"required": [
"tool",
"why",
"price_usd",
"endpoint",
"method",
"body"
]
}
}
},
"why": {
"type": "string"
},
"source": {
"type": [
"string",
"null"
]
},
"sources_used": {
"type": "array",
"description": "Present when you sent sources: one entry per source with index, kind, url, title, status (used, fetch_failed, empty), chars and reason.",
"items": {
"type": "object"
}
}
},
"additionalProperties": true
},
"message": {
"type": "string",
"description": "Human-readable summary."
}
},
"required": [
"status",
"tool",
"message"
],
"additionalProperties": true
}🟢check_answer(answer, sources, sources_only)
Fact-check a whole answer: extracts every checkable claim and verifies each against Wikipedia, plus Wikidata structured facts for dates, numbers, quantities, ordinals and records. Returns per-claim verdict, confidence, quote, source URL, sentence span and suggested_correction (quoted only from cited sources when contradicted/outdated), plus an answer-level summary with overall_verdict, counts and problem_sentences. Abstained rather than guessed. Use to audit chatbot or RAG output. Price: $1.00 USDC on Base per call via x402; this MCP call returns payment instructions and POST /v1/check_answer returns the results. Read-only.
Input Schema
{
"type": "object",
"properties": {
"answer": {
"type": "string",
"description": "The full answer text to fact-check. Each factual sentence is checked separately.",
"minLength": 1,
"examples": [
"Marie Curie won two Nobel Prizes. She was born in Warsaw."
]
},
"sources": {
"type": "array",
"maxItems": 10,
"items": {
"type": "object",
"description": "One source: {url} for a public https page we fetch, or {text, title?, url?} for text you already have.",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public https URL. Fetched with a 3.5 s timeout and a 512 KB cap; http, file and other schemes, private / loopback / link-local / metadata addresses, IP-literal hosts, custom ports and URLs with credentials are rejected (HTTP 400, not charged). With text, it is only the citation link."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "Source text to check the claim against (up to 20,000 characters). When given, no fetch is made."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "Optional title shown in citations."
}
},
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"text"
]
}
],
"additionalProperties": false
},
"description": "Optional. Up to 10 sources of your own, used as extra evidence next to the public sources and cited with provider and source_type \"caller\". The response lists what was used in sources_used."
},
"sources_only": {
"type": "boolean",
"default": false,
"description": "Optional. true = judge the claim only against your sources (no public-source lookups). Needs a non-empty sources array."
}
},
"required": [
"answer"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"payment_required",
"ok"
],
"description": "payment_required: pay the HTTP route with x402 to get the result. ok: result is included."
},
"tool": {
"type": "string",
"description": "Tool name."
},
"payment": {
"type": "object",
"description": "Payment instructions. MCP tools/call does not charge or run the paid work; call the HTTP route with x402.",
"properties": {
"protocol": {
"type": "string",
"description": "Payment protocol, always x402 (v2)."
},
"method": {
"type": "string",
"description": "HTTP method for the paid route."
},
"url": {
"type": "string",
"description": "Paid HTTP route to call."
},
"price": {
"type": "string",
"description": "Price in USD, paid as USDC."
},
"amount": {
"type": "string",
"description": "Price in USDC base units (6 decimals)."
},
"network": {
"type": "string",
"description": "CAIP-2 network id (eip155:8453 = Base mainnet)."
},
"asset": {
"type": "string",
"description": "USDC contract address on Base."
},
"pay_to": {
"type": "string",
"description": "Receiving wallet address."
},
"body": {
"type": "object",
"description": "JSON body to POST (the tool arguments you sent).",
"additionalProperties": true
},
"how": {
"type": "string",
"description": "Step-by-step payment flow."
}
},
"required": [
"protocol",
"method",
"url",
"price",
"network"
]
},
"result": {
"type": "object",
"description": "Paid result: { result_id, version, mode, summary: { overall_verdict, counts, problem_sentences }, claims: [{ text, verdict, confidence, citations[], sentence, suggested_correction, next_step? }], recommended_next_steps, next_actions, receipt }.",
"properties": {
"summary": {
"type": "object"
},
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"claim_id": {
"type": "string"
},
"text": {
"type": "string"
},
"verdict": {
"type": "string"
},
"confidence": {
"type": "number"
},
"citations": {
"type": "array",
"description": "Evidence quotes with url, title and source_type (wikipedia, wikidata, news, europepmc, fred, sec_edgar, or caller for your own sources).",
"items": {
"type": "object"
}
},
"next_step": {
"type": "object",
"description": "1.4.8: present only on unsure, low-confidence or unverified high-worthiness claims. A ready-to-send Deep verify request for this claim (optional, paid separately).",
"properties": {
"tool": {
"type": "string",
"const": "deep_verify"
},
"why": {
"type": "string"
},
"price_usd": {
"type": "number"
},
"endpoint": {
"type": "string",
"format": "uri"
},
"method": {
"type": "string",
"const": "POST"
},
"body": {
"type": "object",
"properties": {
"claim": {
"type": "object",
"properties": {
"text": {
"type": "string"
}
},
"required": [
"text"
]
}
},
"required": [
"claim"
]
}
},
"required": [
"tool",
"why",
"price_usd",
"endpoint",
"method",
"body"
]
}
}
}
},
"recommended_next_steps": {
"type": "object",
"description": "1.4.8: summary of claim-level next_step suggestions.",
"properties": {
"tool": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"total_price_usd": {
"type": "number"
},
"endpoint": {
"type": "string",
"format": "uri"
},
"note": {
"type": "string"
}
},
"required": [
"tool",
"count",
"total_price_usd"
]
},
"next_actions": {
"type": "array",
"items": {
"type": "object"
}
},
"sources_used": {
"type": "array",
"description": "Present when you sent sources: one entry per source with index, kind, url, title, status (used, fetch_failed, empty), chars and reason.",
"items": {
"type": "object"
}
}
},
"additionalProperties": true
},
"message": {
"type": "string",
"description": "Human-readable summary."
}
},
"required": [
"status",
"tool",
"message"
],
"additionalProperties": true
}🟢deep_verify(answer, sources, sources_only)
Use when a claim is high-stakes, or when check_answer or extract_claims marks it unsure (their next_step gives the exact request). Verifies up to three claims against Wikipedia, Wikidata, Google News, Europe PMC, FRED and SEC EDGAR; returns verdict, confidence, evidence for and against with URLs, and flags contradictions. Async: poll GET /v1/jobs/{job_id} free. $0.75 USDC on Base via x402. Read-only.
Input Schema
{
"type": "object",
"properties": {
"answer": {
"type": "string",
"description": "The claim or short text to verify (up to three claims are checked).",
"minLength": 1,
"examples": [
"US unemployment was 3.7% in December 2023."
]
},
"sources": {
"type": "array",
"maxItems": 10,
"items": {
"type": "object",
"description": "One source: {url} for a public https page we fetch, or {text, title?, url?} for text you already have.",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public https URL. Fetched with a 3.5 s timeout and a 512 KB cap; http, file and other schemes, private / loopback / link-local / metadata addresses, IP-literal hosts, custom ports and URLs with credentials are rejected (HTTP 400, not charged). With text, it is only the citation link."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "Source text to check the claim against (up to 20,000 characters). When given, no fetch is made."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "Optional title shown in citations."
}
},
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"text"
]
}
],
"additionalProperties": false
},
"description": "Optional. Up to 10 sources of your own, used as extra evidence next to the public sources and cited with provider and source_type \"caller\". The response lists what was used in sources_used."
},
"sources_only": {
"type": "boolean",
"default": false,
"description": "Optional. true = judge the claim only against your sources (no public-source lookups). Needs a non-empty sources array."
}
},
"required": [
"answer"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"payment_required",
"ok"
],
"description": "payment_required: pay the HTTP route with x402 to get the result. ok: result is included."
},
"tool": {
"type": "string",
"description": "Tool name."
},
"payment": {
"type": "object",
"description": "Payment instructions. MCP tools/call does not charge or run the paid work; call the HTTP route with x402.",
"properties": {
"protocol": {
"type": "string",
"description": "Payment protocol, always x402 (v2)."
},
"method": {
"type": "string",
"description": "HTTP method for the paid route."
},
"url": {
"type": "string",
"description": "Paid HTTP route to call."
},
"price": {
"type": "string",
"description": "Price in USD, paid as USDC."
},
"amount": {
"type": "string",
"description": "Price in USDC base units (6 decimals)."
},
"network": {
"type": "string",
"description": "CAIP-2 network id (eip155:8453 = Base mainnet)."
},
"asset": {
"type": "string",
"description": "USDC contract address on Base."
},
"pay_to": {
"type": "string",
"description": "Receiving wallet address."
},
"body": {
"type": "object",
"description": "JSON body to POST (the tool arguments you sent).",
"additionalProperties": true
},
"how": {
"type": "string",
"description": "Step-by-step payment flow."
}
},
"required": [
"protocol",
"method",
"url",
"price",
"network"
]
},
"result": {
"type": "object",
"description": "Paid result: { mode: 'deep', status: 'queued', job_id, receipt }. Poll GET /v1/jobs/{job_id} for { verdict, confidence, contradiction, evidence_for[], evidence_against[], citations[] }.",
"properties": {
"job_id": {
"type": "string"
},
"status": {
"type": "string"
}
},
"additionalProperties": true
},
"message": {
"type": "string",
"description": "Human-readable summary."
}
},
"required": [
"status",
"tool",
"message"
],
"additionalProperties": true
}Community
Evidence