Claim Grounding

Fact-check AI answers with cited sources. Pay per call in USDC on Base via x402.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,281Tokens (tool definitions)
~11.5 KBTypical response size
Significant attention impact (3.34% of 128k context)

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-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools