Skip to main content
Glama
@qed-proof/mcp

@qed-proof/mcp

by Nuraveda

@qed-proof/mcp

QED Proof as an MCP server. An AI agent says it did something; QED Proof reads the destination itself — never the agent's own report — decides a verdict, and issues a signed receipt anyone can check.

This server lets any MCP client (Claude, Claude Code, Cursor, and others) submit claims, read verdicts, fetch receipts and verify them offline, with no code.

Tools

Tool

What it does

submit_claim

Records a claim (an action on a target) for QED Proof to verify. Returns a claim_id, and the verdict when the check finishes inline.

get_verdict

A claim's state, verdict (verified, late, mismatch, failed, unverifiable), what it means, and the receipt_id.

get_receipt

The full signed receipt, with a shareable link. Receipts are public.

verify_receipt

Checks a receipt offline: schema, integer-only encoding, key validity, Ed25519 signature, claim digest, and Merkle inclusion. It doesn't read the chain, so the anchor is reported as not checked and the achieved trust level is at most 1.

get_log_head

The public Merkle log's signed tree head (size, root, key id, issue time) and latest on-chain anchor, with whether the signature verifies against the published keys. Needs no API key.

list_claims

Recent claims in your workspace, with filters.

list_connections

Destinations your workspace has connected read-only, and whether a verifier is live for each.

There are no tools to connect accounts, disconnect them or manage keys: those stay in the console.

Actions verified today are the ones with a published verifier profile in the QED Proof spec: github.commit.push, github.pr.open, github.checks.pass, x.post.publish and slack.message.post. Any other action is accepted and decided as unverifiable — QED Proof never guesses.

Related MCP server: vantic-mcp

Use it

You need a workspace API key from the console (Developers → API keys).

Local (stdio):

claude mcp add qed-proof --env QED_API_KEY=<your key> -- npx -y @qed-proof/mcp

Environment: QED_API_KEY (required for everything but offline verification), QED_AGENT_ID (the default agent_id for claims; otherwise the MCP client's name), QED_API_URL (defaults to https://api.qedproof.site, e.g. for a self-hosted node).

Hosted (Streamable HTTP): https://mcp.qedproof.site/mcp with Authorization: Bearer <your key>.

claude mcp add --transport http qed-proof https://mcp.qedproof.site/mcp --header "Authorization: Bearer <your key>"

The hosted server keeps no state and stores nothing. It forwards your key to the QED Proof API for each request, so the API's own workspace scoping and rate limits apply, and it logs only the method, tool name, status and latency.

Data

target and params of a claim are copied into its receipt, which is public and permanent. Receipts record fingerprints and the facts a verifier read (a commit SHA, an HTTP status), never content.

Develop

npm install
npm test          # includes every spec test vector
npm run build

Apache-2.0. QED Proof has no token.

Available Tools

7 tools
get_log_headGet the public log's signed tree headA
Read-onlyIdempotent

Returns the signed tree head of QED Proof's public Merkle log: the log id, the number of entries (tree_size), the root hash, when it was issued, and the Ed25519 signature, plus the latest on-chain anchor (chain, transaction hash, tree size and block) when one has landed. The signature is checked against the issuer's published poaw-keys.json and the result says whether it verifies. Needs no API key and reads only public data. It checks the head's signature, not that the head extends an earlier one; a consistency proof does that.

Inputs: no named parameters.

get_receiptGet a signed receiptA
Read-onlyIdempotent

Returns the full signed receipt for a receipt_id: the claim, what the verifier read at the destination (facts and fingerprints, never content), the verdict, the Ed25519 signature, and the log inclusion and anchor proof. Receipts are public, and the response includes a shareable link.

Inputs: receipt_id (required).

get_verdictGet a claim's verdictA
Read-onlyIdempotent

Returns a claim's state ("queued" or "decided"), its verdict when decided, and the receipt_id. Verdicts: verified, late, mismatch, failed, unverifiable; the response includes what the verdict means. Only claims in the API key's own workspace are visible.

Inputs: claim_id (required).

list_claimsList recent claimsA
Read-onlyIdempotent

Lists claims in the API key's workspace, newest first, with each claim's state, verdict and receipt_id. Filters: agent_id, action, verdict, state (queued or decided). Paginate with the returned next_cursor.

Inputs: limit, state, action, cursor, +2 more.

list_connectionsList connected destinationsA
Read-onlyIdempotent

Lists the destinations the workspace has connected read-only (for example GitHub, Slack, X) and whether a verifier is live for each. Read-only: connecting or disconnecting happens in the QED Proof console, not here.

Inputs: no named parameters.

submit_claimSubmit a claim for verificationA

Records that an agent says it performed an action, so QED Proof can check the destination and issue a signed receipt. Returns a claim_id and, when the check finishes inline, the verdict and receipt_id; otherwise state is "queued" and get_verdict returns the outcome later.

Documented actions (verifier profiles published in the QED Proof spec):

  • github.checks.pass: Every check run on the claimed commit completed without failing. target: owner/repo; params: sha (string, 40 lowercase hex)

  • github.commit.push: The claimed commit exists on the remote and the claimed branch contains it. target: owner/repo; params: sha (string, 40 lowercase hex), branch (string)

  • github.pr.open: The claimed pull request exists, optionally against the claimed base branch and at the claimed head commit. target: owner/repo; params: number (integer ≥ 1), base? (string), head_sha? (string)

  • slack.message.post: A message with exactly the claimed timestamp exists in the claimed channel, and (optionally) its text matches a target: slack://<team_id>/<channel_id>, with a team ID T… and a public (C…) or private (G…) channel ID,; params: ts (string, ^[0-9]{10}\.[0-9]{6}$), text_sha256? (string, 64 lowercase hex)

  • x.post.publish: The claimed post exists on X, was written by the account the target handle is connected as, and (optionally) its text target: @handle (1–15 of A–Z a–z 0–9 _, with the @); params: post_id (string of 1–20 digits), text_sha256? (string, 64 lowercase hex)

Any other action string is accepted and decided as "unverifiable" (reason unsupported_action). target and params are copied into the receipt, which is public and permanent; params are limited to 4 KB. Resubmitting with the same client_claim_id returns the existing claim instead of creating a new one.

Inputs: action (required), target (required), params, agent_id, +2 more.

verify_receiptVerify a receipt or change entry offlineA
Read-onlyIdempotent

Checks a receipt or a change entry independently of QED Proof's servers, as the reference checker in the QED Proof spec does: the JSON Schema, integer-only encoding, the signing key's validity window, the Ed25519 signature, the claim digest (receipts only; a change entry has no claim) and the Merkle log inclusion proof. A change entry is signed under its own domain and the report carries entry_kind "change" with a null verdict. If the body carries a policy, pass the pipeline document to check it (its digest, id and version); without it the policy check is reported as not_checked. It does not read the blockchain, so the on-chain anchor is reported as not checked and the achieved trust level is at most 1. Pass receipt_json (a receipt or a change entry) for a fully offline check, or receipt_id to fetch the receipt first. The public keys come from keys_json or, when omitted, from the issuer's published poaw-keys.json.

Inputs: pipeline, keys_json, receipt_id, receipt_json.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 7 tools

    Disambiguation4/5

    get_receipt, get_verdict, and verify_receipt all touch receipts/verdicts and could initially be confused, but descriptions clearly separate them: get_verdict reads a claim's state/verdict, get_receipt returns the full signed artifact, and verify_receipt does an independent offline cryptographic check. The remaining tools (submit_claim, list_claims, list_connections, get_log_head) target distinct resources, so boundaries are mostly clear.

    Naming Consistency5/5

    All names follow a consistent snake_case verb_noun pattern: get_receipt, get_verdict, get_log_head, verify_receipt, list_claims, list_connections, submit_claim. Verbs (get/list/verify/submit) map predictably to read, enumerate, validate, and write actions.

    Tool Count5/5

    Seven tools is well-scoped for a claim-verification service covering submit, poll, retrieve, independently verify, list, and log-head inspection. Nothing feels padded or redundant, and each tool earns its place.

    Completeness4/5

    The claim lifecycle is well covered (submit, get_verdict, get_receipt, verify_receipt, list_claims) plus supporting list_connections and get_log_head. Minor gaps: no tool to fetch a Merkle log entry or a consistency proof (the log-head description notes a consistency proof is what extends a head, but none is exposed), and receipts themselves cannot be listed directly.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables verification of AI agent identity, authority, and integrity at transaction time, returning signed verdicts for allow, step-up, review, or block.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables MCP hosts to verify agent spending mandates and receipts, providing stateless tools for authorization, chain verification, credential verification, and DID resolution.
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to create and verify tamper-evident cryptographic evidence, manage key-bound Agent Passports, and support verifiable handoffs, approvals, and audit trails through MCP, REST, and A2A.
      MIT