Submit a claim for verification
submit_claimSubmit an agent-performed action for verification, returning a claim ID and signed receipt. Queued checks are retrievable later.
Instructions
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:///, 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.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action string, e.g. github.commit.push. | |
| params | No | The fields the action's profile requires. | |
| target | Yes | Where the work was meant to land, in the action's own format (e.g. owner/repo). | |
| agent_id | No | The agent's own identifier. Defaults to the MCP client's name. | |
| claimed_at | No | When the agent says it did the work (ISO 8601 with a timezone). Defaults to now. | |
| client_claim_id | No | A stable id for this claim, so a retry doesn't create a duplicate. Generated when omitted. |