{
  "description": "Registers caller-declared delivery checks, observes supplied public results and returns a verifiable retained receipt. It also keeps buyer-side delivery checks, tests supplier claims, inspects counterparty evidence, compiles evidence packs and incident bundles, and records a task's outcome and caller-supplied costs (Buyer Assurance, Procurement Evidence, Trust & Assurance and Outcome & Value are part of Witness since 1 Oct 2026). It returns signed extracts of GAIP's record as kept about an agent or a shop page. Part of GAIP Witness \u00b7 Deals \u00b7 Sign-offs (lead agent).",
  "endpoint": "https://www.gaipagents.com/mcp/agents/witness",
  "name": "io.github.tjcgraham-rgb/gaip-witness",
  "privacyPolicy": "https://www.gaipagents.com/privacy",
  "product": {
    "foldedInto": null,
    "kind": "PRODUCT",
    "listed": true,
    "productId": "witness",
    "productName": "Witness \u00b7 Deals \u00b7 Sign-offs",
    "role": "LEAD",
    "roleLabel": "lead agent",
    "status": "PUBLIC_FREE",
    "url": "https://www.gaipagents.com/v1/free/products#witness"
  },
  "protocolVersion": "2025-06-18",
  "publication": {
    "acceptanceNotImplied": true,
    "descriptorLive": true,
    "officialMcpRegistry": "PENDING_INDIVIDUAL_REGISTRY_ACCEPTANCE"
  },
  "registryVersion": "1.5.0",
  "repository": {
    "source": "github",
    "url": "https://github.com/tjcgraham-rgb/-gaip-agent-to-art-prototype"
  },
  "schema_version": "gaip.agent-mcp-descriptor.v1",
  "serverCard": "https://www.gaipagents.com/mcp/agents/witness/server-card",
  "termsOfService": "https://www.gaipagents.com/terms",
  "title": "GAIP Witness Agent",
  "tools": [
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Register caller-declared checks for a public HTTPS service. GAIP records a terms receipt in its own history and does not contact the service. This does not verify seller agreement or payment.",
      "inputSchema": {
        "properties": {
          "checks": {
            "maxItems": 8,
            "minItems": 1,
            "type": "array"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ]
          },
          "research_consent": {
            "default": false,
            "description": "Optional, default false. true lets this record be counted, never named, in GAIP's monthly aggregate research figures (for example for insurers).",
            "type": "boolean"
          },
          "seller_ref": {
            "type": "string"
          },
          "service_url": {
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "seller_ref",
          "service_url",
          "checks"
        ],
        "type": "object"
      },
      "name": "witness_register_terms",
      "title": "Register delivery checks"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true
      },
      "description": "Compare a registered caller assertion against a later public replay or submitted public response. Unknown when evidence is unavailable; no original transaction or seller agreement proof.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "body": {
            "maxLength": 32768,
            "type": "string"
          },
          "body_sha256": {
            "type": "string"
          },
          "content_type": {
            "type": "string"
          },
          "continuity_handle": {
            "additionalProperties": false,
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "episode_id": {
            "type": "string"
          },
          "http_status": {
            "type": "integer"
          },
          "independent_operator_id": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "BUYER_SUBMITTED",
              "PUBLIC_REPLAY"
            ],
            "type": "string"
          },
          "research_consent": {
            "default": false,
            "description": "Optional, default false. true lets this delivery check be counted, never named, in GAIP's monthly aggregate research figures.",
            "type": "boolean"
          },
          "synthetic": {
            "type": "boolean"
          },
          "terms_id": {
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "terms_id",
          "mode"
        ],
        "type": "object"
      },
      "name": "witness_delivery",
      "title": "Check public delivery evidence"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Export one GAIP receipt as x402 Settlement-Attestation-style JSON, an ERC-8004 validation-response-shaped document for off-chain publication, or an unsigned W3C-VC-like JSON-LD envelope. Ed25519-signed when the runtime key is available (otherwise unsigned, with the reason); integrity also via hash chain, Merkle proof and a SHA-256 digest_manifest; no on-chain write.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "format": {
            "enum": [
              "x402",
              "erc8004",
              "vc"
            ],
            "type": "string"
          },
          "receipt_id": {
            "description": "The receipt_id exactly as an earlier GAIP result returned it. Have none? Call with any id: the refusal lists example_receipt_ids from GAIP's own public records.",
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "receipt_id",
          "format"
        ],
        "type": "object"
      },
      "name": "gaip_receipt_export",
      "title": "Export a GAIP receipt"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Look up a retained GAIP receipt by ID and verify its hash chain and Merkle inclusion proof without creating adoption credit.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "continuity_handle": {
            "additionalProperties": false,
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "episode_id": {
            "type": "string"
          },
          "independent_operator_id": {
            "type": "string"
          },
          "receipt_id": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "synthetic": {
            "type": "boolean"
          }
        },
        "required": [
          "receipt_id"
        ],
        "type": "object"
      },
      "name": "verify_gaip_receipt"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Gather everything GAIP holds about one Witness agreement (terms, every delivery check, receipts with signatures, replay events, your own SLA breaches, a timeline) into one hash-stamped, no-fault bundle (Ed25519-signed when the key is available). Pass terms_id or a delivery receipt_id.",
      "inputSchema": {
        "properties": {
          "continuity_handle": {
            "description": "Optional: the continuity_handle that registered a DELIVERY_SLA watch on these terms; adds your SLA breaches.",
            "type": "object"
          },
          "receipt_format": {
            "default": "gaip",
            "description": "gaip (default) or x402_sar: also give each delivery in the x402 SAR draft shape.",
            "enum": [
              "gaip",
              "x402_sar"
            ],
            "type": "string"
          },
          "receipt_id": {
            "description": "A delivery receipt_id from witness_delivery.",
            "type": "string"
          },
          "terms_id": {
            "description": "Or the terms_id (wt_...) of the agreement.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "witness_dispute_bundle",
      "title": "Export a delivery evidence bundle"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Register a free watch (max 3, every 24h+) on an agent's readiness, a published card, or witness delivery terms; optional signed webhook on change.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "continuity_handle": {
            "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "data_classification": {
            "default": "PUBLIC",
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "interval_hours": {
            "default": 24,
            "description": "Hours between checks: 24 minimum on the free tier; 1 for DELIVERY_SLA.",
            "maximum": 168,
            "minimum": 1,
            "type": "integer"
          },
          "kind": {
            "enum": [
              "AGENT_READINESS",
              "DELIVERY_TERMS",
              "SUPPLIER_CARD",
              "DELIVERY_SLA"
            ],
            "type": "string"
          },
          "sla": {
            "description": "DELIVERY_SLA only: service-level terms checked on every observation, any of min_uptime_pct, max_latency_ms, required_fields (JSON key paths), freshness_field + max_age_seconds; optional uptime_window_hours, min_observations. Results go only to you.",
            "type": "object"
          },
          "target_url": {
            "description": "Public https URL (AGENT_READINESS, SUPPLIER_CARD). No query string.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          },
          "terms_id": {
            "description": "DELIVERY_TERMS or DELIVERY_SLA: terms_id from witness_register_terms.",
            "type": "string"
          },
          "webhook_url": {
            "description": "Optional: your own public https endpoint for signed change events.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          }
        },
        "required": [
          "continuity_handle",
          "kind"
        ],
        "type": "object"
      },
      "name": "gaip_watch_register",
      "title": "Watch an agent, card or delivery"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "List your watches with last verdict, last check and next due time.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "continuity_handle": {
            "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          }
        },
        "required": [
          "continuity_handle"
        ],
        "type": "object"
      },
      "name": "gaip_watch_list",
      "title": "List my watches"
    },
    {
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Stop one of your watches and delete its events.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "continuity_handle": {
            "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "watch_id": {
            "type": "string"
          }
        },
        "required": [
          "continuity_handle",
          "watch_id"
        ],
        "type": "object"
      },
      "name": "gaip_watch_remove",
      "title": "Remove a watch"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Read recent change events (with receipts and webhook delivery status) for your watches.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "continuity_handle": {
            "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "limit": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "watch_id": {
            "type": "string"
          }
        },
        "required": [
          "continuity_handle"
        ],
        "type": "object"
      },
      "name": "gaip_watch_events",
      "title": "Read watch change events"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": true
      },
      "description": "Check whether cited public web pages contain the quoted text. Pass `citations` (1-20 objects {url, quote?, claimed_title?, claimed_date?}). GAIP fetches each page once (robots.txt respected), reports QUOTE_FOUND / QUOTE_NOT_FOUND_IN_FETCHED_VERSION / SOURCE_UNREACHABLE / SOURCE_NOT_FOUND_404 / CONTENT_NOT_TEXT / ROBOTS_DISALLOWED per citation with the time, HTTP status, SHA-256 of the fetched bytes and a matched excerpt of at most 300 characters, and retains a receipt. Facts about the fetched version only; pages change. Not legal advice and not a judgement on any author.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "citations": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "claimed_date": {
                  "maxLength": 64,
                  "type": "string"
                },
                "claimed_title": {
                  "maxLength": 500,
                  "type": "string"
                },
                "quote": {
                  "maxLength": 2000,
                  "type": "string"
                },
                "url": {
                  "format": "uri",
                  "maxLength": 2048,
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
          },
          "data_classification": {
            "default": "PUBLIC",
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          }
        },
        "required": [
          "citations"
        ],
        "type": "object"
      },
      "name": "gaip_citation_witness",
      "title": "Witness citations"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Check an x402 SAR-shaped receipt (draft proposal shape, issue #1195; may change): fields present, receipt_id recomputed from the core fields, and whether the Ed25519 signature checks out against a public key you supply or GAIP's published key named by verifier_kid. Fetches and keeps nothing; payment fields are not acted on.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "public_key": {
            "description": "Optional: the issuer's Ed25519 public key, raw 32 bytes base64url or a JWK {kty: OKP, crv: Ed25519, x}. Omit to use GAIP's published keys.",
            "oneOf": [
              {
                "maxLength": 512,
                "type": "string"
              },
              {
                "type": "object"
              }
            ]
          },
          "sar_receipt": {
            "description": "The SAR receipt object (or a whole gaip_receipt_export x402 result).",
            "type": "object"
          }
        },
        "required": [
          "sar_receipt"
        ],
        "type": "object"
      },
      "name": "gaip_check_sar_receipt",
      "title": "Check an x402 SAR receipt"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Returns an extract of GAIP's record as kept about an agent card, MCP endpoint or shop product page: Observatory change-log and capture entries, shop panel changes and listing history in a date range, each with its chain position, hash and covering daily anchor, Ed25519-signed. Free preview; shows what GAIP recorded, not that it is true.",
      "inputSchema": {
        "additionalProperties": false,
        "examples": [
          {
            "since": "2026-09-01",
            "url": "https://huggingface.co/mcp"
          }
        ],
        "properties": {
          "limit": {
            "description": "Optional: most entries to return, newest kept (default 50).",
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          },
          "since": {
            "description": "Optional: start of the range (YYYY-MM-DD or RFC 3339).",
            "maxLength": 40,
            "type": "string"
          },
          "until": {
            "description": "Optional: end of the range (YYYY-MM-DD, inclusive, or RFC 3339).",
            "maxLength": 40,
            "type": "string"
          },
          "url": {
            "description": "The A2A agent card, MCP endpoint or shop product page URL, exactly as recorded.",
            "maxLength": 2048,
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "gaip_record_extract",
      "title": "Extract of GAIP's record about a URL"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Deals: the second party accepts terms the buyer registered with witness_register_terms, presenting its own continuity handle. GAIP issues an agreement_id naming both parties, the terms hash, the acceptance rule (delivered_when LATEST_MET or ANY_MET, an optional deadline, who may ask for the finding) and the finding mode (EVIDENCE_ONLY; EXPERT_DETERMINATION once the buyer confirms it with the agreement_id). Businesses only: the seller passes business_purpose_statement true and the buyer confirms it with the agreement_id; no finding until both have. consumer_contract true withdraws the finding. GAIP holds no money and verifies no legal identity.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "acceptance_rule": {
            "additionalProperties": false,
            "description": "What counts as delivered, by when, and who may ask for the finding.",
            "properties": {
              "by": {
                "description": "Deadline, RFC 3339 (optional).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "delivered_when": {
                "default": "LATEST_MET",
                "enum": [
                  "LATEST_MET",
                  "ANY_MET"
                ],
                "type": "string"
              },
              "finding_may_be_called_by": {
                "default": "EITHER",
                "enum": [
                  "EITHER",
                  "BUYER",
                  "SELLER"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "agreement_cancelled": {
            "default": false,
            "description": "Only with agreement_id: either party records that it cancelled the agreement (recorded as that party's statement and published in GAIP's revocation feed).",
            "type": "boolean"
          },
          "agreement_id": {
            "description": "Only on an existing agreement: the buyer confirms business purpose or expert determination, or either party declares a consumer contract.",
            "type": "string"
          },
          "business_purpose_statement": {
            "description": "Required true from the seller at acceptance and from the buyer (with agreement_id): you act for purposes relating to your trade, business, craft or profession and the deal is not with a consumer. No finding until both parties have stated it.",
            "type": "boolean"
          },
          "consumer_contract": {
            "default": false,
            "description": "true if either party is a consumer: evidence summary only, no finding.",
            "type": "boolean"
          },
          "continuity_handle": {
            "description": "Required: your own continuity handle (continuity_id, token).",
            "type": "object"
          },
          "data_classification": {
            "description": "PUBLIC or NON_PERSONAL_PUBLIC.",
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "finding_mode": {
            "default": "EVIDENCE_ONLY",
            "description": "EVIDENCE_ONLY, or EXPERT_DETERMINATION (needs the buyer's confirmation).",
            "enum": [
              "EVIDENCE_ONLY",
              "EXPERT_DETERMINATION"
            ],
            "type": "string"
          },
          "mandate_check_receipt": {
            "description": "Optional: the gaip_check_mandate receipt you obtained (or {receipt_sha256, state}) if you act for a person; its state is recorded beside the acceptance as a fact and shown in the finding.",
            "type": "object"
          },
          "seller_key_proof": {
            "description": "Optional: {jwk, jws over the terms_id, host}; GAIP checks the signature and whether the host published that key.",
            "type": "object"
          },
          "terms_id": {
            "description": "wt_... from witness_register_terms.",
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "terms_id"
        ],
        "type": "object"
      },
      "name": "witness_accept_terms",
      "title": "Accept registered terms (the other party)"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Deals: for an agreement_id, GAIP compares its own delivery records for the agreed terms against the acceptance rule and issues a signed finding record: MET, NOT_MET or INDETERMINATE, with the records relied on and nothing else, plus A-Comm evidence-artefact and Boson decideDispute export shapes. Evidence only unless both parties confirmed expert determination; never a court process, never a sum of money; a consumer contract gets the evidence summary and no finding. A party's own continuity handle is required.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "agreement_id": {
            "description": "wa_... from witness_accept_terms.",
            "type": "string"
          },
          "continuity_handle": {
            "description": "Required: a party's own continuity handle.",
            "type": "object"
          },
          "data_classification": {
            "description": "PUBLIC or NON_PERSONAL_PUBLIC.",
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "agreement_id"
        ],
        "type": "object"
      },
      "name": "witness_finding",
      "title": "Was the agreed rule met? (signed finding)"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Sign-offs: record that a role (APPROVER, REVIEWER, OWNER, OPERATOR, or your own opaque role_id, kept only as a keyed hash) recorded a decision (APPROVED, REFUSED, CHANGED) on an agent's proposal, given as its SHA-256, at the recorded time; optionally against a Deals agreement_id. Chained and Ed25519-signed with every Witness entry. It records the role's decision, never GAIP's; no free text.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "agent_url": {
            "description": "Optional: public https URL of the agent whose proposal was decided (the system identifier).",
            "maxLength": 2048,
            "type": "string"
          },
          "agreement_id": {
            "description": "Optional: the wa_... Deals agreement from witness_accept_terms this decision concerns; the finding then lists it.",
            "type": "string"
          },
          "continuity_handle": {
            "description": "Optional: your continuity handle (continuity_id, token); one is issued with the receipt when absent.",
            "type": "object"
          },
          "data_classification": {
            "description": "PUBLIC or NON_PERSONAL_PUBLIC.",
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "decision": {
            "description": "The decision as recorded: APPROVED, REFUSED or CHANGED.",
            "enum": [
              "APPROVED",
              "REFUSED",
              "CHANGED"
            ],
            "type": "string"
          },
          "proposal_sha256": {
            "description": "SHA-256 (64 hex) of what the agent proposed, computed by you; the proposal itself is never sent.",
            "maxLength": 64,
            "minLength": 64,
            "type": "string"
          },
          "reason_sha256": {
            "description": "Optional: SHA-256 (64 hex) of the reason you keep; anything but a hash is refused.",
            "maxLength": 64,
            "minLength": 64,
            "type": "string"
          },
          "role": {
            "description": "The role that decided: APPROVER, REVIEWER, OWNER or OPERATOR. Any other text is refused (ROLE_VOCABULARY); use role_id for your own id.",
            "enum": [
              "APPROVER",
              "REVIEWER",
              "OWNER",
              "OPERATOR"
            ],
            "type": "string"
          },
          "role_id": {
            "description": "Optional: your own opaque role identifier (one token, no spaces). GAIP keeps it only as a keyed hash, never in clear.",
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "proposal_sha256",
          "decision"
        ],
        "type": "object"
      },
      "name": "witness_signoff",
      "title": "Record a role's decision on a proposal (sign-off)"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Preflight one buyer-selected public service and record caller-declared delivery checks. No supplier appointment, call, contract or payment.",
      "inputSchema": {
        "properties": {
          "checks": {
            "maxItems": 8,
            "minItems": 1,
            "type": "array"
          },
          "counterparty_id": {
            "type": "string"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ]
          },
          "episode_id": {
            "type": "string"
          },
          "explicit_read_only_consent": {
            "const": true
          },
          "service_url": {
            "type": "string"
          },
          "task_class": {
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "counterparty_id",
          "service_url",
          "task_class",
          "checks",
          "explicit_read_only_consent"
        ],
        "type": "object"
      },
      "name": "assurance_prepare",
      "title": "Prepare a buyer-side delivery check"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Check a buyer-submitted public response or later public replay against registered terms and verify the retained receipt.",
      "inputSchema": {
        "properties": {
          "body": {
            "type": "string"
          },
          "body_sha256": {
            "type": "string"
          },
          "content_type": {
            "type": "string"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ]
          },
          "http_status": {
            "type": "integer"
          },
          "mode": {
            "enum": [
              "BUYER_SUBMITTED",
              "PUBLIC_REPLAY"
            ]
          },
          "terms_id": {
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "terms_id",
          "mode"
        ],
        "type": "object"
      },
      "name": "assurance_complete",
      "title": "Complete a buyer-side delivery check"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Verify a retained Buyer Assurance terms or delivery receipt without assigning external-use credit.",
      "inputSchema": {
        "properties": {
          "receipt_id": {
            "type": "string"
          }
        },
        "required": [
          "receipt_id"
        ],
        "type": "object"
      },
      "name": "assurance_verify",
      "title": "Verify a Buyer Assurance receipt"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Compare supplied public claims and task observations, check declared metadata, and return dispositions with a retained receipt. No supplier approval or independent claim verification.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "claims": {
            "items": {
              "type": "object"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
          },
          "continuity_handle": {
            "additionalProperties": false,
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "counterparty_id": {
            "type": "string"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "episode_id": {
            "type": "string"
          },
          "independent_operator_id": {
            "type": "string"
          },
          "metadata": {
            "type": "object"
          },
          "observations": {
            "items": {
              "type": "object"
            },
            "maxItems": 30,
            "type": "array"
          },
          "protocol": {
            "enum": [
              "A2A",
              "MCP",
              "OPENAPI"
            ],
            "type": "string"
          },
          "synthetic": {
            "type": "boolean"
          },
          "task_class": {
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "counterparty_id",
          "task_class",
          "protocol",
          "claims",
          "metadata"
        ],
        "type": "object"
      },
      "name": "gaip_verify_supplier_claims",
      "title": "Compare supplier claims"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Inspect supplied task-specific counterparty observations without producing a universal trust score.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "continuity_handle": {
            "additionalProperties": false,
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "counterparty_id": {
            "type": "string"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "episode_id": {
            "type": "string"
          },
          "independent_operator_id": {
            "type": "string"
          },
          "max_age_days": {
            "description": "Optional freshness window (default 30): GAIP history records older than this are STALE and do not count toward evidence_sufficiency.",
            "maximum": 365,
            "minimum": 1,
            "type": "integer"
          },
          "observations": {
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "synthetic": {
            "type": "boolean"
          },
          "task_class": {
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "counterparty_id",
          "task_class"
        ],
        "type": "object"
      },
      "name": "inspect_counterparty_evidence"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Compile GAIP's retained evidence about one agent or supplier (conformance, watch events, witness results, repair and incident receipts) with a verify URL and Merkle proof per item, a manifest of counts, time span and gaps, and a framework reference table. An evidence compilation only: not a certification, audit opinion, insurance or legal advice.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "requester": {
            "additionalProperties": false,
            "properties": {
              "continuity_handle": {
                "properties": {
                  "continuity_id": {
                    "type": "string"
                  },
                  "token": {
                    "type": "string"
                  }
                },
                "required": [
                  "continuity_id",
                  "token"
                ],
                "type": "object"
              },
              "purpose": {
                "enum": [
                  "INSURER",
                  "AUDITOR",
                  "OPERATOR",
                  "BUYER",
                  "UNSPECIFIED"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "scope": {
            "additionalProperties": false,
            "properties": {
              "categories": {
                "items": {
                  "enum": [
                    "conformance",
                    "watch",
                    "witness",
                    "repair",
                    "incident",
                    "supplier_checks"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "max_items": {
                "maximum": 200,
                "minimum": 1,
                "type": "integer"
              },
              "receipt_ids": {
                "items": {
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "since": {
                "type": "string"
              },
              "until": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "subject": {
            "description": "The agent or supplier: its public id or https URL. Never a person.",
            "oneOf": [
              {
                "maxLength": 256,
                "type": "string"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "counterparty_id": {
                    "type": "string"
                  },
                  "ref": {
                    "type": "string"
                  },
                  "seller_ref": {
                    "type": "string"
                  },
                  "url": {
                    "format": "uri",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "subject"
        ],
        "type": "object"
      },
      "name": "gaip_evidence_pack",
      "title": "Build an evidence pack"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Verify supplied GAIP receipts, order a timeline and attribute each observation to its source, with an EU AI Act Article 73 reference aid. No fault, liability or causation finding; not a regulatory filing or legal advice.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "ai_system_ref": {
            "maxLength": 256,
            "type": "string"
          },
          "data_classification": {
            "default": "PUBLIC",
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "observations": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "observed_at_utc": {
                  "type": "string"
                },
                "receipt_id": {
                  "type": "string"
                },
                "source": {
                  "maxLength": 120,
                  "type": "string"
                },
                "source_type": {
                  "enum": [
                    "AUTOMATED_MONITOR",
                    "PUBLIC_RECORD",
                    "REQUESTER",
                    "THIRD_PARTY"
                  ],
                  "type": "string"
                },
                "statement": {
                  "maxLength": 2000,
                  "type": "string"
                }
              },
              "required": [
                "source",
                "statement"
              ],
              "type": "object"
            },
            "maxItems": 50,
            "type": "array"
          },
          "receipt_ids": {
            "items": {
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "title": {
            "maxLength": 120,
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "gaip_incident_bundle",
      "title": "Build an incident evidence bundle"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Independent outcome evidence for outcome-priced contracts: build a task-level delivery, downstream-use and caller-supplied cost dossier. Missing costs and unverified claims remain explicit; no ROI or causal-value claim is issued.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "baseline_cost_gbp": {
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ]
          },
          "continuity_handle": {
            "additionalProperties": false,
            "properties": {
              "continuity_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "required": [
              "continuity_id",
              "token"
            ],
            "type": "object"
          },
          "costs": {
            "type": "object"
          },
          "counterparty_id": {
            "type": "string"
          },
          "currency": {
            "default": "GBP",
            "type": "string"
          },
          "data_classification": {
            "enum": [
              "PUBLIC",
              "NON_PERSONAL_PUBLIC"
            ],
            "type": "string"
          },
          "delivery": {
            "required": [
              "status"
            ],
            "type": "object"
          },
          "delivery_check": {
            "properties": {
              "checks": {
                "items": {
                  "type": "object"
                },
                "maxItems": 8,
                "minItems": 1,
                "type": "array"
              },
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ],
            "type": "object"
          },
          "downstream_use": {
            "type": "object"
          },
          "episode_id": {
            "type": "string"
          },
          "evidence_refs": {
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "fx_to_gbp": {
            "properties": {
              "as_of": {
                "type": "string"
              },
              "rate": {
                "type": "number"
              },
              "source": {
                "type": "string"
              }
            },
            "required": [
              "rate",
              "as_of",
              "source"
            ],
            "type": "object"
          },
          "independent_operator_id": {
            "type": "string"
          },
          "synthetic": {
            "type": "boolean"
          },
          "task": {
            "required": [
              "acceptance_criteria"
            ],
            "type": "object"
          },
          "task_class": {
            "type": "string"
          }
        },
        "required": [
          "data_classification",
          "counterparty_id",
          "task_class",
          "episode_id",
          "task",
          "delivery",
          "costs"
        ],
        "type": "object"
      },
      "name": "gaip_measure_outcome_value",
      "title": "Measure task outcome and value"
    }
  ],
  "transport": "streamable-http",
  "version": "1.0.0"
}