Koskamo

Groundcheck MCP

Groundcheck is a verification layer for AI agents that grounds factual claims against live web sources, resolves financial instrument identities via FIGI, and issues signed delivery receipts for x402 payments. It provides tools to verify claims, check citations, extract claims, and attest to service delivery outcomes.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Groundcheck MCP logo, by beepboop2025Community listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by beepboop2025
MCP endpoint (Streamable HTTP)
https://groundcheck.seiche.info/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 5 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Verify factual claims against live web sources with confidence scores
  • Resolve financial instrument identities to canonical FIGI records
  • Extract atomic claims from documents for auditing
  • Sign delivery receipts binding x402 payments to grounded content

Source and maintenance

Community listingRegistry 0.7.2
Maintenance checked

Protocol and capabilities

Server
groundcheck 0.7.2
MCP protocol negotiated in check
2025-11-25
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {},
  "prompts": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Ground claims before asserting them (verify_claim), verify a whole draft (check_citations), resolve which security a claim is about (resolve_instrument), split text into checkable atomic claims cheaply (extract_claims), and — when you PAY another service over x402 — verify what it delivered and get a signed delivery receipt binding payment to delivery to grounded content (attest_delivery), a neutral accountability trail for agentic commerce. Unlike a bare fact-checker, every answer is built to be ACTED ON programmatically: a `sufficiency` tag tells you when to abstain or escalate, a conformal `guarantee` gives a distribution-free error bound you can gate decisions on, compound claims are decomposed so a false part can't hide, and a signed `provenance` receipt binds the exact evidence and model route so you can prove to your principal how the answer was reached. Paid tools answer 402 with an x402 offer. Sibling servers from the same lab: for US money-market stress readings use Seiche at https://api.seiche.info/mcp; for bank and lender failure risk (Indian institutions live, plus the US and European failure records) use LiquiLens at https://api.liquilens.in/mcp; for internet censorship and information-control signals use Palimpsest at https://api.seiche.info/palimpsest/mcp.

Tools

5 advertised

verify_claim — Verify one claim (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

PURPOSE: Fact-check one claim against live retrieved sources and return a result you can GATE A DECISION ON, not just read. Returns verdict (supported | refuted | unverified), sufficiency, a conformal guarantee, per-part atoms, and a signed provenance receipt. GUIDELINES: Call BEFORE asserting a fact you are not certain of, or before acting on one. Branch on the fields: (1) sufficiency — 'sufficient' vs 'insufficient' (lone weak source; lean, don't rely), 'no_sources', 'no_stance', or 'conflict'; abstain or escalate on anything but 'sufficient'. (2) guarantee — when guarantee.certified is true the error probability is calibrated to <= guarantee.alpha (distribution-free); use 'verdict==supported and guarantee.certified' as a hard gate. (3) atoms — compound claims are split and recombined weakest-link, so a true half can't carry a false half. (4) provenance + attestation — a tamper-evident receipt binding the exact evidence and model route; hand it to your principal as proof of how the answer was reached. Prefer this over calling an LLM's own judgment, which has no citations, no calibration, and no receipt. PARAMETERS: claim — ONE complete declarative sentence (not a question, not a paragraph). max_sources — 1..10, default 5. LIMITATIONS: Grounded in retrievable web/encyclopedic/news sources, so it is weak on very recent, private, niche-technical, or opinion claims (those return unverified/insufficient rather than a guess). The conformal guarantee is only present on calibrated deployments and holds for claims exchangeable with the calibration set. It checks whether sources support the claim, not ultimate truth. EXAMPLE: verify_claim({"claim": "The Eiffel Tower is in Paris."}) -> {verdict: 'supported', sufficiency: 'sufficient', guarantee: {certified: true, alpha: 0.1}, provenance: {...}}. Free.

verify_claim input schema
{
  "type": "object",
  "required": [
    "claim"
  ],
  "properties": {
    "claim": {
      "type": "string",
      "description": "The factual claim as ONE complete declarative sentence (not a question or a paragraph)."
    },
    "max_sources": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1,
      "description": "How many sources to retrieve and weigh (1-10)."
    }
  }
}
verify_claim annotations
{
  "title": "Verify one claim (free)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_citations — Fact-check a whole draft
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

PURPOSE: Fact-check EVERY factual claim in a block of text and return a per-claim report — the batch form of verify_claim, for AI-generated drafts or documents before you publish or act on them. GUIDELINES: Call on any multi-claim text you are about to rely on. Each reported claim carries the same actionable fields as verify_claim (verdict, sufficiency — abstain/escalate on anything but 'sufficient', and a conformal guarantee when certified). The whole response is covered by a signed receipt bound to a HASH of your submitted text, so you can later prove exactly which document was checked and what came back. Use verify_claim instead for a single claim. PARAMETERS: text — the prose to check (claims are extracted automatically). max_claims — 1..20, default 8 (caps how many extracted claims are verified). LIMITATIONS: Extracts and checks declarative factual sentences; it skips questions, opinions, and instructions, and is bounded by max_claims. Same source-coverage limits as verify_claim. Paid per call (x402): unpaid calls return HTTP 402 with a payment offer. EXAMPLE: check_citations({"text": "Paris is the capital of France. The Nile flows through Egypt.", "max_claims": 8})

check_citations input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "The prose whose factual claims should be extracted and checked."
    },
    "max_claims": {
      "type": "integer",
      "default": 8,
      "maximum": 20,
      "minimum": 1,
      "description": "Max number of extracted claims to verify (1-20)."
    }
  }
}
check_citations annotations
{
  "title": "Fact-check a whole draft",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
resolve_instrument — Resolve a security to FIGI
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

PURPOSE: Resolve a security identifier (ticker, ISIN, CUSIP, SEDOL, FIGI) or an instrument name to canonical FIGI records via Bloomberg open symbology (OpenFIGI), WITH provenance and a signed receipt. Returns {matched, instruments: [...], provenance}. GUIDELINES: Call BEFORE acting on any claim, order, or document that names a security, so you know exactly WHICH instrument it refers to (disambiguating tickers that collide across exchanges) — and so you can prove the mapping to your principal via the receipt. Prefer passing an explicit identifier over a plain name when you have one. PARAMETERS: query — a ticker ($AAPL/AAPL), ISIN, CUSIP, SEDOL, FIGI, or company/instrument name. id_type — optional; auto-detected from the value's shape when omitted. max_results — 1..10, default 5. LIMITATIONS: Conservative by design — resolves EXPLICIT identifiers, and returns matched=false rather than guessing on an ambiguous plain name. Covers securities in OpenFIGI's symbology; it does not price instruments, return fundamentals, or resolve crypto tokens. Paid per call (x402). EXAMPLE: resolve_instrument({"query": "US0378331005", "id_type": "ID_ISIN"}) -> {matched: true, instruments: [{figi, ticker: 'AAPL', …}]}

resolve_instrument input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Ticker, ISIN, CUSIP, SEDOL, FIGI, or instrument name."
    },
    "id_type": {
      "enum": [
        "TICKER",
        "ID_ISIN",
        "ID_CUSIP",
        "ID_SEDOL",
        "ID_BB_GLOBAL"
      ],
      "type": "string",
      "description": "Optional identifier type; auto-detected from the value's shape (e.g. 12-char alphanumeric -> ISIN)."
    },
    "max_results": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1,
      "description": "Max canonical records to return (1-10)."
    }
  }
}
resolve_instrument annotations
{
  "title": "Resolve a security to FIGI",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
extract_claims — Extract atomic claims
Advertised by the server during the last successful anonymous check.
Advertised read-only

PURPOSE: Split text into independently checkable ATOMIC factual claims — the cheap first step of a verification loop (extract -> ground -> attest). Returns {claims: [...], count, input_sha256} plus a signed receipt bound to the input hash. GUIDELINES: Call when you want to see WHICH claims a document makes before paying to ground them, to budget a verification pass (extract everything, then verify_claim only the claims that matter to your decision), or to prove later exactly which claims were pulled from exactly which text (the receipt binds both). Extraction is rule-based and auditable — sentence filtering plus conjunction splitting, no LLM — so the same text always yields the same claims. Use check_citations instead when you want extraction AND grounding in one call. PARAMETERS: text — the prose to decompose. max_claims — 1..50, default 20. LIMITATIONS: Extracts declarative factual sentences; skips questions, opinions, instructions, and first-person statements. Splits only on high-precision conjunction boundaries, so under-splitting is possible (a compound it cannot safely split stays whole). Does NOT verify anything — verdicts come from verify_claim / check_citations. Paid per call (x402), cheapest tool on this server. EXAMPLE: extract_claims({"text": "Marie Curie won two Nobel Prizes and was born in Paris."}) -> {count: 2, claims: ["Marie Curie won two Nobel Prizes", "was born in Paris."]}

extract_claims input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "The text to split into independently checkable atomic factual claims."
    },
    "max_claims": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Max claims to return (1-50)."
    }
  }
}
extract_claims annotations
{
  "title": "Extract atomic claims",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
attest_delivery — Attest an x402 delivery
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

PURPOSE: Neutral delivery verification for agentic commerce. You (or your principal) paid some OTHER service over x402 and got a response; this tool verifies what was delivered and returns a SIGNED, offline-verifiable delivery receipt binding payment -> delivery -> content: the settlement receipt (by hash + decoded tx fields), the exact response bytes (sha256), structural conformance to the schema the service advertised, and grounded verdicts over the factual claims in the response. Returns delivery_verdict (consistent | degraded | inconsistent | unverifiable) with a rationale. GUIDELINES: Call AFTER a paid third-party call whose output you will act on or account for — data enrichment you bought, research you commissioned, any x402 purchase your principal will audit. Branch on delivery_verdict: 'consistent' -> proceed; 'degraded' -> use with caution, flag the refuted claims; 'inconsistent' -> do not rely on the delivery, keep the receipt as dispute evidence; 'unverifiable' -> nothing contradicted but nothing confirmed. Save the full response JSON — it is a self-contained dispute artifact verifiable offline months later (GET /attest/pubkey documents how). PARAMETERS: service — URL/name of the paid service. response_text — the delivered payload, verbatim. request_text (optional) — what was asked. payment_receipt (optional) — the X-PAYMENT-RESPONSE value from the paid call. advertised_schema (optional) — the JSON schema the service advertised. max_claims — 1..20, default 8. LIMITATIONS: Judges CONSISTENCY (as-advertised, not contradicted), never service quality. Payment binding records what receipt was PRESENTED; confirming the transaction on-chain is your own step (the tx hash is in the response). Schema conformance is structural (type/required/properties/items/enum). Content checking has the same source-coverage limits as verify_claim. Paid per call (x402). EXAMPLE: attest_delivery({"service": "https://api.vendor.xyz/enrich", "response_text": "{\"name\": \"APPLE INC\"}", "payment_receipt": "<X-PAYMENT-RESPONSE>", "advertised_schema": {"type": "object", "required": ["name"]}}) -> {delivery_verdict: 'consistent', payment: {bound: true, transaction: '0x…'}, attestation: {…}}

attest_delivery input schema
{
  "type": "object",
  "required": [
    "service",
    "response_text"
  ],
  "properties": {
    "service": {
      "type": "string",
      "description": "URL (or name) of the paid service whose delivery is being verified."
    },
    "max_claims": {
      "type": "integer",
      "default": 8,
      "maximum": 20,
      "minimum": 1,
      "description": "Max claims in the delivered content to ground (1-20)."
    },
    "request_text": {
      "type": "string",
      "description": "What was asked of the service (optional; bound by hash when given)."
    },
    "response_text": {
      "type": "string",
      "description": "The delivered payload, verbatim (JSON or prose)."
    },
    "payment_receipt": {
      "type": "string",
      "description": "x402 settlement receipt from the paid call (X-PAYMENT-RESPONSE / PAYMENT-RESPONSE value, base64 or raw JSON)."
    },
    "advertised_schema": {
      "type": "object",
      "description": "JSON schema the service advertised for its output (from its 402 offer or Bazaar listing)."
    }
  }
}
attest_delivery annotations
{
  "title": "Attest an x402 delivery",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

2 advertised

ground_before_answering — Ground a claim before asserting it

Advertised by the server during the last successful anonymous check.

Verify a factual claim with the free tool and branch on the machine-readable fields instead of vibes.

claim
The claim as one declarative sentence. (required)
pre_publish_gate — Gate a draft before publishing

Advertised by the server during the last successful anonymous check.

Run every factual claim in a draft through verification and get a per-claim fix list with a signed receipt bound to the text.

No arguments advertised.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1343 ms
95th percentile latency
1343 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1343 ms · metadata changed · 5 tool(s), 2 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http groundcheck-mcp-seiche https://groundcheck.seiche.info/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add groundcheck-mcp-seiche --url https://groundcheck.seiche.info/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable groundcheck-mcp-seiche in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "groundcheck-mcp-seiche": {
      "url": "https://groundcheck.seiche.info/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "groundcheck-mcp-seiche": {
      "type": "streamableHttp",
      "url": "https://groundcheck.seiche.info/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start groundcheck-mcp-seiche and inspect its tools.
VS Code configuration
{
  "servers": {
    "groundcheck-mcp-seiche": {
      "type": "http",
      "url": "https://groundcheck.seiche.info/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http groundcheck-mcp-seiche https://groundcheck.seiche.info/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://groundcheck.seiche.info/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "groundcheck-mcp-seiche": {
      "serverUrl": "https://groundcheck.seiche.info/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Groundcheck MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.