GAIP Witness Agent
by tjcgraham-rgb · remote · no sign-in to list tools · v1.5.0 · published by GitHub user tjcgraham-rgb
Witness: agreed terms, delivery checks, signed receipts, dispute bundles and evidence packs.
23 tools: 1 can delete or cancel things, 20 change things and 2 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things20Claude Code: ask: see these tools
- Only reads2Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http gaip-witness https://www.gaipagents.com/mcp/agents/witnessFindings
Matches of fixed checks, with the text they matched.
The input schema at examples[0].public_key contains a 43-character base64 string.
What this check looks forMatched text
inputSchema.examples[0].public_key: "Y8BpzlWPH3EPRQziEPRBeLS1lJBF4xEo9WaxTNbzNp0"
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
23 tools
Deletes or cancels 1Claude Code: deny
gaip_watch_removeUse this when asked to stop watching an agent or service.No findings
Why it is in this group
- The name "gaip_watch_remove" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Use this when asked to stop watching an agent or service. Pass your `continuity_handle` and the `watch_id`. Its stored events are deleted; retained receipts stay verifiable. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: false
Changes things 20Claude Code: ask
assurance_completeUse this when finishing a Buyer Assurance check.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when finishing a Buyer Assurance check. Pass the `terms_id` from assurance_prepare and mode PUBLIC_REPLAY (GAIP replays the service) or BUYER_SUBMITTED. Returns PASS / FAIL / UNKNOWN per check and a delivery receipt. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: false
assurance_prepareUse this when you, the buyer, chose a public service and want its delivery checked end to end.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when you, the buyer, chose a public service and want its delivery checked end to end. Pass `service_url`, `checks` and explicit_read_only_consent=true. GAIP preflights it and records your checks; returns a `terms_id` for assurance_complete. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: false
assurance_verifyUse this when you hold a Buyer Assurance terms or delivery receipt_id and want to confirm it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when you hold a Buyer Assurance terms or delivery receipt_id and want to confirm it. Returns the retained record and its integrity proof (integrity only). Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
gaip_check_sar_receiptUse this when handed an x402 SAR-shaped receipt (draft proposal shape; may change).1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The input schema at examples[0].public_key contains a 43-character base64 string.
What this check looks forMatched text
inputSchema.examples[0].public_key: "Y8BpzlWPH3EPRQziEPRBeLS1lJBF4xEo9WaxTNbzNp0"
Description, as the server wrote it Use this when handed an x402 SAR-shaped receipt (draft proposal shape; may change). Pass `sar_receipt`, optionally the issuer's `public_key`. Returns missing fields, whether receipt_id matches the core and whether the signature checks out against that key. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
gaip_citation_witnessUse this when asked to verify citations or quotes ("do these sources really say this?").No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when asked to verify citations or quotes ("do these sources really say this?"). Pass `citations` (1-20 {url, quote}). GAIP fetches each page once (robots.txt respected); returns QUOTE_FOUND / QUOTE_NOT_FOUND_IN_FETCHED_VERSION / SOURCE_UNREACHABLE..., an excerpt and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: true
gaip_evidence_packUse this when an insurer, auditor or buyer asks what evidence exists about an agent or supplier.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when an insurer, auditor or buyer asks what evidence exists about an agent or supplier. Pass its `subject` (public id or https URL). Returns conformance, watch, witness, repair and incident records with Merkle proofs, plus gaps. A compilation, not certification or advice. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
gaip_incident_bundleUse this when something went wrong with an agent and you need the facts in order.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when something went wrong with an agent and you need the facts in order. Pass the `receipt_ids` you hold and attributed `observations`. Returns a verified, source-attributed timeline with an EU AI Act Art. 73 reference aid. No fault, cause or liability finding. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
gaip_measure_outcome_valueUse this when asked whether an outcome-priced task delivered and what it cost.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when asked whether an outcome-priced task delivered and what it cost. Pass `episode_id`, `task` (acceptance_criteria), `delivery`, `costs`; `delivery_check` {url, checks} has GAIP test delivery now. Returns a dossier, running totals and a receipt. No ROI claim. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: false
gaip_receipt_exportUse this when you need a GAIP receipt in another format.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when you need a GAIP receipt in another format. Pass `receipt_id` and `format`: x402 (attestation style), erc8004 (validation-response shape) or vc (W3C-VC-like JSON-LD). Ed25519-signed when the runtime key is available; hash chain and Merkle proof; no on-chain write. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
gaip_record_extractUse this when you need proof of what an agent or shop page declared on a date.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when you need proof of what an agent or shop page declared on a date. Pass its `url` (optional `since`, `until`). Returns an extract of GAIP's record as kept: entries with chain positions, hashes, daily anchors and a signature. Free preview. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
gaip_verify_supplier_claimsUse this to check what an agent, API or supplier claims.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this to check what an agent, API or supplier claims. Pass `claims` (each with an `id`; add `check_url` and GAIP tests it now), your `observations` and `metadata`. Returns per claim what GAIP saw, what you reported and whether they agree. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: false
gaip_watch_eventsUse this when asked what changed on a watched agent or service.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when asked what changed on a watched agent or service. Pass your `continuity_handle` and optionally a `watch_id`. Returns recent change events: verdict before and after, a change summary, the receipt and webhook delivery status. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
gaip_watch_registerUse this when asked to keep an eye on an agent or MCP server ("tell me if it changes or goes down").No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when asked to keep an eye on an agent or MCP server ("tell me if it changes or goes down"). Pass the `continuity_handle` from any GAIP result, `kind` and `target_url`. GAIP re-checks every 24 hours (3 free watches), receipts each change and can call your webhook. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: false
verify_gaip_receiptUse this when you hold a GAIP receipt_id and want to confirm it ("is this receipt genuine?").No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when you hold a GAIP receipt_id and want to confirm it ("is this receipt genuine?"). Returns the retained record, hash chain and Merkle inclusion proof. Integrity only: it does not make the underlying claim true. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
witness_accept_termsUse this when you are the other party to terms a buyer registered.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when you are the other party to terms a buyer registered. Pass the `terms_id`, your own `continuity_handle` and `business_purpose_statement` true (businesses only); the buyer confirms it with the `agreement_id`. Returns an `agreement_id` naming both parties. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
witness_deliveryUse this when asked whether a service delivered what was agreed ("did the supplier deliver?").No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when asked whether a service delivered what was agreed ("did the supplier deliver?"). Pass the `terms_id` from witness_register_terms and mode PUBLIC_REPLAY (GAIP fetches it) or BUYER_SUBMITTED. Returns PASS / FAIL / UNKNOWN per check, what changed since last time, and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- readOnlyHint: true
witness_dispute_bundleUse this when a witnessed delivery failed and you must hand the facts to the other party or a resolver.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Use this when a witnessed delivery failed and you must hand the facts to the other party or a resolver. Pass `terms_id` or a delivery `receipt_id`. Returns one hash-stamped bundle: terms, every check, receipts, timeline, summary. No judgement of who is right. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
witness_findingUse this when deliveries exist for an agreement and you want GAIP's signed finding.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when deliveries exist for an agreement and you want GAIP's signed finding. Pass the `agreement_id` and your `continuity_handle`. Returns MET, NOT_MET or INDETERMINATE on the agreed rule with the records relied on. Evidence only; no sum of money. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
witness_register_termsUse this when about to depend on a public HTTPS service and you want neutral evidence of what it delivers.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when about to depend on a public HTTPS service and you want neutral evidence of what it delivers. Pass `service_url`; `checks` default to HTTP 200 and a non-empty body (also JSON keys, latency, size, regex). Returns a `terms_id`; then call witness_delivery. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
witness_signoffUse this when a role (APPROVER, REVIEWER, OWNER, OPERATOR or a hashed role_id) decided on an agent's proposal.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Use this when a role (APPROVER, REVIEWER, OWNER, OPERATOR or a hashed role_id) decided on an agent's proposal. Pass `proposal_sha256`, `decision` (APPROVED, REFUSED, CHANGED), optionally `agreement_id`. Returns a chained, signed entry of the role's decision, never GAIP's. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
Only reads 2Claude Code: allow
gaip_watch_listUse this when asked which agents or services you are watching.No findings
Why it is in this group
- The name "gaip_watch_list" says "list": a word for reading.
Description, as the server wrote it Use this when asked which agents or services you are watching. Pass your `continuity_handle`. Returns each watch's kind, target, last verdict, last and next check and webhook endpoint (never the secret). Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
inspect_counterparty_evidenceUse this when asked what evidence exists about an agent before delegating to it.No findings
Why it is in this group
- The name "inspect_counterparty_evidence" says "inspect": a word for reading.
Description, as the server wrote it Use this when asked what evidence exists about an agent before delegating to it. Pass its `counterparty_id` and any `observations`. Returns task-specific evidence coverage, conflicts, gaps and GAIP's own earlier checks of it, with a receipt. Never a trust score or recommendation. Free, read-only, no account; inputs must be public and non-personal.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.5.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http gaip-witness https://www.gaipagents.com/mcp/agents/witnessRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__gaip-witness__gaip_watch_list",
"mcp__gaip-witness__inspect_counterparty_evidence"
],
"ask": [
"mcp__gaip-witness__witness_register_terms",
"mcp__gaip-witness__witness_delivery",
"mcp__gaip-witness__gaip_receipt_export",
"mcp__gaip-witness__verify_gaip_receipt",
"mcp__gaip-witness__witness_dispute_bundle",
"mcp__gaip-witness__gaip_watch_register",
"mcp__gaip-witness__gaip_watch_events",
"mcp__gaip-witness__gaip_citation_witness",
"mcp__gaip-witness__gaip_check_sar_receipt",
"mcp__gaip-witness__gaip_record_extract",
"mcp__gaip-witness__witness_accept_terms",
"mcp__gaip-witness__witness_finding",
"mcp__gaip-witness__witness_signoff",
"mcp__gaip-witness__assurance_prepare",
"mcp__gaip-witness__assurance_complete",
"mcp__gaip-witness__assurance_verify",
"mcp__gaip-witness__gaip_verify_supplier_claims",
"mcp__gaip-witness__gaip_evidence_pack",
"mcp__gaip-witness__gaip_incident_bundle",
"mcp__gaip-witness__gaip_measure_outcome_value"
],
"deny": [
"mcp__gaip-witness__gaip_watch_remove"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as gaip-witness. Review it before you use it.
