Skip to main content
Glama

ClaimGate

A publish gate for AI-assisted marketing content.

Point it at the copy you are about to publish and the evidence your organisation actually holds. It tells you which claims you cannot substantiate, which of your own policy rules you are breaking, and whether the asset is missing a disclosure the law now requires.

Exit code 1 means blocked. That makes it usable in CI, a pre-commit hook, or a publishing pipeline — which is where a gate stops mistakes instead of documenting them afterwards.

$ claimgate check campaign.md --evidence substantiation/ --policy policy.json

Claims requiring substantiation (14)
  ✗ [attribution] According to research at a leading university, 94% of finance teams waste more
      unsupported: the figure(s) 94% in this claim do not appear in any supplied evidence
  ✗ [statistic] thousands of businesses, and we are fully ISO 27001 certified.
      contradicted: evidence states "Acme Invoicing is not certified under ISO 27001"
  ~ [statistic] Meridian Freight cut their reconciliation time from 22 hours to 9 hours a week
      partially_supported: the case study confirms 22 hours and 9 hours, but not "always"
      try: Meridian Freight's finance team reduced reconciliation from 22 hours a week to 9

Policy findings (3)
  ✗ [prohibited] guaranteed
      absolute guarantees are unenforceable and are treated as misleading advertising
  ✗ [disclosure] AI disclosure missing
      required under EU AI Act Article 50 (in force 2 Aug 2026) and platform labelling rules

BLOCKED — 14 unsupported claim(s), 3 blocking policy finding(s).

Why this exists

Generative AI is now how a large share of marketing copy gets written, and the controls did not scale with it. The recurring finding across 2025–2026 is not that models are bad at writing. It is that a reviewer cannot tell a hallucinated statistic from a real one — there is no grammatical signal that separates them — so hallucinated content passes a casual read. Organisations that scaled AI content without a review gate did not reduce their content risk, they accelerated it.

The existing tools do not close this. Detectors tell you a text was AI-written, which is not the question. Generators produce more copy. Governance platforms tell you at the end of the quarter that you had incidents.

ClaimGate answers the question that actually decides whether an asset can ship: can this specific claim be traced to something we can point at?

Related MCP server: AgentGround Cross-Check Verifier

The three checks

1. Substantiation. Every checkable claim in the draft is extracted, then adjudicated against your evidence. The important part is how:

  • A number in a claim must appear in the evidence. That is a string search, not a judgement call, and no model gets to overrule it. A fabricated statistic cannot be talked into a pass.

  • Semantic support is decided by a model given only the claim and the evidence, required to name the evidence it relied on, and allowed to answer unsupported or unverified.

  • If the model is unavailable, the key is missing, or the reply is malformed, the verdict is unverified — which blocks. It never fails towards "supported".

2. Policy. Your prohibited and restricted claims, written down once and enforced on every draft: guarantees, medical and financial claims, unsourced superlatives, named competitors, personal data.

3. Disclosure. From 2 August 2026 the EU AI Act (Article 50) requires disclosure of AI-generated content in specified circumstances, and Meta, TikTok and Google each require an AI label on realistic synthetic media in ads. A customer-facing AI-assisted asset with no disclosure is non-compliant however good the copy is — so it is checked as a property of the draft, not left to whoever uploads it.

Install

No dependencies. Python 3.9+.

pip install "claimgate @ git+https://github.com/caseone115/claimgate"

Not a bare pip install claimgate. That name on PyPI belongs to a different, unrelated project (an AI-agent test harness), so the bare name installs that tool, in which claimgate check does not exist. This product installs from its own source repository, which is also where its licence and its tests live. From a checkout, pip install -e . is equivalent.

Start here: the free starter kit

claimgate init my-project && cd my-project
claimgate check DRAFT-template.md --evidence evidence/ --policy policy.json --no-model

That writes a policy file you can edit, an evidence folder, a blank draft template, a six-question pre-publish checklist (including the AI-disclosure section) and a GitHub Actions job that gates every pull request. --no-model needs no API key and no network: it runs the deterministic checks, and it does catch inventing — a figure that appears in the draft and not in your evidence blocks, whatever wrote it.

The kit is free and stays free: https://github.com/caseone115/claimgate.

The full engine — model adjudication of every claim, JSON output for pipelines, the whole test suite — is a one-off download at https://teeterbot.gumroad.com/l/claimgate/LAUNCH39: US$39 while the launch is running, US$149 after it. It is the same code as this repository, MIT licensed; nothing is held back from the source.

Use

claimgate init my-project                  # the free starter kit
claimgate init-policy policy.json          # a starter policy to edit
claimgate claims draft.md                  # just list the claims
claimgate check draft.md --evidence ./evidence/
claimgate check draft.md --evidence evidence.json --policy policy.json --json
claimgate check draft.md --no-model        # facts and policy only, no API calls

Evidence is any directory of .txt/.md/.html files, or a JSON array:

[{"id": "spec", "title": "Product spec", "text": "..."},
 {"id": "case-1", "title": "Meridian case study", "url": "..."}]

Set DEEPSEEK_API_KEY for adjudication. Without it, --no-model still runs the deterministic checks — which is where the fabricated-figure guarantee lives.

What this is not

  • Not a fact-checker. It does not search the web or decide what is true. It decides whether you can substantiate what you wrote, against evidence you supply. That is the question a compliance review actually asks, and it is the only one answerable without pretending to authority the tool does not have.

  • Not a detector. It does not guess whether a text was AI-written.

  • Not a lawyer. It enforces the policy you write. It flags where AI disclosure obligations appear to apply; it does not give legal advice.

Use it from an MCP client

The same checks run as an MCP server, so an agent can gate a draft before it publishes instead of a human remembering to. mcp/server.py needs no install — uv fetches its one dependency. Add this to your client's config:

{
  "mcpServers": {
    "claimgate": {
      "command": "uv",
      "args": ["run", "--directory", "<repo>/mcp", "<repo>/mcp/server.py"]
    }
  }
}

It exposes check_draft, check_draft_json, list_claims, check_policy_only and about. See mcp/README.md, including what it deliberately refuses to do.

The free starter kit is a second registry entry, io.github.caseone115/claimgate-kit. init_kit writes the policy file, the evidence folder, the checklist and the GitHub Actions job into a directory you name; check_kit then runs that gate offline with no API key. See mcp-kit/.

Tests

python tests/test_claimgate.py     # 55 checks — the engine
python tests/test_outreach.py      # 21 checks — the outreach guardrails
python tests/test_kit.py           # 44 checks — the starter kit
python scripts/test_mcp_server.py  # 19 checks — the MCP server, over real stdio

The suite is written against the product's promises, not its implementation: that no claim is invented, that a number absent from the evidence is never reported as supported, that anything uncheckable blocks, and that the same input always gives the same answer. tests/test_kit.py also runs the shipped README through the shipped policy, because a claim-checking product whose own front page carries a prohibited claim is the worst demonstration there is.

Licence

MIT.

Available Tools

5 tools
aboutA

What this server is, what it does not do, and how it can be trusted.

Read this before relying on any verdict it returns.

Inputs: no named parameters. Returns: result

check_draftA

Check one piece of marketing copy against the evidence you hold.

Returns a plain-English report of which claims cannot be substantiated, which of your own policy rules the draft breaks, and whether an AI disclosure is missing. Read the summary first: it is written to be read by a person, and the machine-readable detail is available from check_draft_json.

ARGUMENTS draft the copy to check, inline. Give this or draft_path. draft_path path to a .md/.txt/.html file to check instead. evidence_dir a folder of files to treat as evidence (.txt/.md/.html). Everything in it is offered to the checker; nothing is uploaded anywhere. evidence_json evidence as a JSON array, e.g. [{"id":"pricing","text":"The plan is $39/month"}] policy_json your own policy file, from claimgate init-policy. Omit to use the built-in defaults. use_model false runs only the deterministic checks - no network, no API key. A claim that cannot be decided that way comes back unverified, never supported.

WHAT IT WILL NOT DO It does not decide that a claim is true because it sounds reasonable. If it cannot tell, it says so. A green tick here means an evidence file you supplied actually states the claim's substance.

Inputs: draft, use_model, draft_path, policy_json, +2 more. Returns: result

check_draft_jsonA

The same check as check_draft, returned as structured JSON.

Use this when a pipeline, a CI job or another agent needs to gate on the result rather than read it. Keys: claims, verdicts, policy_findings, summary. summary.blocked is the boolean to gate on, and it is true when any claim is unsupported, contradicted or unverified, or any policy finding is blocking. Unverified counts as blocked on purpose: unknown is not the same as fine, and a gate that treats it as fine is decoration.

Inputs: draft, use_model, draft_path, policy_json, +2 more. Returns: result

check_policy_onlyB

Check a draft against a policy alone - prohibited claims and AI disclosure.

This is the half that needs no evidence and no model: the constitutional layer. It answers "would our own rules let this out of the door", which is a different question from "is it true".

Inputs: draft, draft_path, policy_json. Returns: result

list_claimsA

List the claims in a draft and what each one needs, without judging them.

Useful as a first pass: it shows what the checker will demand substantiation for, so you can judge whether your evidence folder is even the right shape. Categories include statistic, percentage, superlative, comparative, guarantee, efficacy, temporal, attribution, absolute and causal.

Inputs: draft, draft_path. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 5 tools

    Disambiguation4/5

    check_draft, list_claims, check_policy_only and about each target a clearly different need, and the descriptions explicitly delimit what each does and does not decide. The one soft spot is check_draft vs check_draft_json, which perform the identical check and differ only in output format, plus check_policy_only which is a partial subset of check_draft; both overlaps are well-explained, so confusion is unlikely but not impossible.

    Naming Consistency4/5

    Four of five names follow a verb_noun snake_case pattern (check_draft, check_draft_json, list_claims, check_policy_only) with a readable _json suffix convention. The lone outlier is 'about', a bare noun, which is a minor deviation rather than a convention clash.

    Tool Count5/5

    Five tools is well-scoped for a claim-verification server: a human-readable check, a machine-gated variant, a pre-pass claim lister, an evidence-free policy check, and a trust/scope note. Nothing feels padded, and no essential verb is crowded out by the count.

    Completeness4/5

    The core lifecycle (list claims, check against evidence, check against policy, gate on structured output, read scope) is fully covered for a read-only verification domain. Minor gaps remain: no rewrite/suggestion tool to fix flagged claims, no tool to build or validate an evidence set or policy (init-policy is CLI-only), and no batch/multi-draft entry point, but agents can work around these.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A hosted remote MCP server for C2PA disclosure policy, enabling AI governance teams to check disclosure policies, validate C2PA status, issue AI media receipts, explain region rules, and export disclosure logs.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to cross-verify candidate claims against caller-supplied source texts, flagging hallucinations, numerical drift, entity mismatches, contradictions, and unverified assertions. It returns sentence-level verdicts with matched evidence snippets and machine-readable factual grounding confidence scores, exposed over MCP stdio, HTTP REST, and A2A discovery routes.
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables MCP clients to submit AI agent claims for verification, read verdicts, and fetch or offline-verify signed receipts.
      7
      24 npm
      2
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables agents and users to extract factual claims from text, URLs, files, or AI answers and judge each against live web sources with confidence, evidence, and citations. It also integrates with MCP-capable clients so claims can be checked before an answer is shown.
      253 npm
      Apache 2.0