{"id":499071,"name":"GAIP Witness Agent","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 · Deals · Sign-offs (lead agent).","card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","endpoint":"https://www.gaipagents.com/a2a/witness-agent","protocol_version":"1.0","first_seen":"2026-10-28T15:08:33.023534+00:00","last_verified":"2026-10-28T15:08:33.023534+00:00","card":{"url":"https://www.gaipagents.com/a2a/witness-agent","gaip":{"legal":{"status":"DRAFT_PENDING_LEGAL_REVIEW","corrections":"https://www.gaipagents.com/corrections","methodology":"https://www.gaipagents.com/methodology","privacyPolicy":"https://www.gaipagents.com/privacy","termsOfService":"https://www.gaipagents.com/terms"},"mcpUrl":"https://www.gaipagents.com/mcp/agents/witness","agentId":"witness","product":{"url":"https://www.gaipagents.com/v1/free/products#witness","kind":"PRODUCT","role":"LEAD","listed":true,"status":"PUBLIC_FREE","productId":"witness","roleLabel":"lead agent","foldedInto":null,"productName":"Witness · Deals · Sign-offs"},"priceGbp":0,"authority":"PUBLIC_NON_PERSONAL_ZERO_PRICE_BOUNDED_NO_SPEND_NO_PAYMENT_NO_CONTRACT","discovery":{"llms":"https://www.gaipagents.com/llms.txt","openapi":"https://www.gaipagents.com/openapi.json","llmsFull":"https://www.gaipagents.com/llms-full.txt","products":"https://www.gaipagents.com/v1/free/products","aiCatalog":"https://www.gaipagents.com/.well-known/ai-catalog.json","listingKit":"https://www.gaipagents.com/v1/free/discovery/listing-kit","mcpServerCard":"https://www.gaipagents.com/mcp/server-card"},"howToCall":{"a2a":"POST JSON-RPC message/send (A2A 0.3) or SendMessage (A2A 1.0) to https://www.gaipagents.com/a2a/witness-agent. Put the tool name (underscores, e.g. \"witness_register_terms\") in message.metadata.gaip_tool and the input object in one data part (0.3: {\"kind\": \"data\", \"data\": {...}}; 1.0: {\"data\": {...}} with role ROLE_USER). Without gaip_tool the data part must match one of this agent's tools. Text parts are never converted into a task.","mcp":"POST tools/call to https://www.gaipagents.com/mcp/agents/witness","example":{"id":1,"method":"message/send","params":{"message":{"kind":"message","role":"user","parts":[{"data":{"checks":[{"id":"http_status_in","allowed":[200]},{"id":"json_parses"}],"seller_ref":"example-weather-agent","service_url":"https://weather.example.com/forecast.json"},"kind":"data"}],"metadata":{"gaip_tool":"witness_register_terms"},"messageId":"example-1"}},"jsonrpc":"2.0"},"primaryTool":"witness_register_terms","allowedTools":["witness_register_terms","witness_delivery","gaip_receipt_export","verify_gaip_receipt","witness_dispute_bundle","gaip_watch_register","gaip_watch_list","gaip_watch_remove","gaip_watch_events","gaip_citation_witness","gaip_check_sar_receipt","gaip_record_extract","witness_accept_terms","witness_finding","witness_signoff","assurance_prepare","assurance_complete","assurance_verify","gaip_verify_supplier_claims","inspect_counterparty_evidence","gaip_evidence_pack","gaip_incident_bundle","gaip_measure_outcome_value"]},"mcpServerCard":"https://www.gaipagents.com/mcp/agents/witness/server-card","distributionBundle":"https://www.gaipagents.com/v1/distribution/agents/witness","automaticEvidenceCredit":false,"durableReceiptRequiredBeforeSuccess":true},"name":"GAIP Witness Agent","skills":[{"id":"witness-register-terms","name":"Witness Register Terms","tags":["delivery","evidence","receipts"],"examples":["{\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}"],"inputModes":["application/json"],"description":"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. Input: required service_url; optional checks, data_classification, research_consent, seller_ref. A2A: send message/send with metadata.gaip_tool=\"witness_register_terms\" and one data part holding the input object; MCP: tools/call name \"witness_register_terms\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"witness-delivery","name":"Witness Delivery","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"mode\": \"PUBLIC_REPLAY\", \"terms_id\": \"<terms_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_delivery\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required terms_id, mode; optional body, body_sha256, content_type, continuity_handle, data_classification, episode_id, http_status, independent_operator_id, research_consent, synthetic. A2A: send message/send with metadata.gaip_tool=\"witness_delivery\" and one data part holding the input object; MCP: tools/call name \"witness_delivery\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-receipt-export","name":"Gaip Receipt Export","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"format\": \"x402\", \"receipt_id\": \"<receipt_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"gaip_receipt_export\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required receipt_id, format. A2A: send message/send with metadata.gaip_tool=\"gaip_receipt_export\" and one data part holding the input object; MCP: tools/call name \"gaip_receipt_export\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"verify-gaip-receipt","name":"Verify Gaip Receipt","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"receipt_id\": \"<receipt_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"verify_gaip_receipt\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required receipt_id; optional continuity_handle, data_classification, episode_id, independent_operator_id, synthetic. A2A: send message/send with metadata.gaip_tool=\"verify_gaip_receipt\" and one data part holding the input object; MCP: tools/call name \"verify_gaip_receipt\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"witness-dispute-bundle","name":"Witness Dispute Bundle","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"body\": \"{\\\"forecast\\\": \\\"sun\\\"}\", \"http_status\": 200, \"mode\": \"BUYER_SUBMITTED\", \"terms_id\": \"<terms_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_delivery\"}, {\"agent_id\": \"witness\", \"arguments\": {\"receipt_id\": \"<receipt_id from step 2 (witness_delivery)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"witness_dispute_bundle\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required none; optional continuity_handle, receipt_format, receipt_id, terms_id. A2A: send message/send with metadata.gaip_tool=\"witness_dispute_bundle\" and one data part holding the input object; MCP: tools/call name \"witness_dispute_bundle\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-watch-register","name":"Gaip Watch Register","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"claims\": [{\"id\": \"c1\", \"text\": \"Returns JSON forecasts over MCP\"}, {\"id\": \"c2\", \"text\": \"Responds within 2 seconds\"}], \"counterparty_id\": \"example-weather-agent\", \"metadata\": {\"protocolVersion\": \"2025-06-18\", \"url\": \"https://weather.example.com/mcp\"}, \"observations\": [{\"claim_id\": \"c1\", \"detail\": \"tools/call returned valid JSON\", \"result\": \"PASS\"}, {\"claim_id\": \"c2\", \"detail\": \"p95 latency 4.8 s over 20 calls\", \"result\": \"FAIL\"}]}, \"keep_from_result\": \"continuity_handle\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"gaip_verify_supplier_claims\"}, {\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (gaip_verify_supplier_claims)>\", \"token\": \"<continuity_handle.token from step 1 (gaip_verify_supplier_claims)>\"}, \"interval_hours\": 24, \"kind\": \"DELIVERY_TERMS\", \"terms_id\": \"<terms_id from step 2 (witness_register_terms)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"gaip_watch_register\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required continuity_handle, kind; optional data_classification, interval_hours, sla, target_url, terms_id, webhook_url. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_register\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_register\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-watch-list","name":"Gaip Watch List","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"claims\": [{\"id\": \"c1\", \"text\": \"Returns JSON forecasts over MCP\"}, {\"id\": \"c2\", \"text\": \"Responds within 2 seconds\"}], \"counterparty_id\": \"example-weather-agent\", \"metadata\": {\"protocolVersion\": \"2025-06-18\", \"url\": \"https://weather.example.com/mcp\"}, \"observations\": [{\"claim_id\": \"c1\", \"detail\": \"tools/call returned valid JSON\", \"result\": \"PASS\"}, {\"claim_id\": \"c2\", \"detail\": \"p95 latency 4.8 s over 20 calls\", \"result\": \"FAIL\"}]}, \"keep_from_result\": \"continuity_handle\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"gaip_verify_supplier_claims\"}, {\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (gaip_verify_supplier_claims)>\", \"token\": \"<continuity_handle.token from step 1 (gaip_verify_supplier_claims)>\"}, \"interval_hours\": 24, \"kind\": \"DELIVERY_TERMS\", \"terms_id\": \"<terms_id from step 2 (witness_register_terms)>\"}, \"keep_from_result\": \"watch.watch_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"gaip_watch_register\"}, {\"agent_id\": \"witness\", \"arguments\": {\"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (gaip_verify_supplier_claims)>\", \"token\": \"<continuity_handle.token from step 1 (gaip_verify_supplier_claims)>\"}}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 4, \"tool\": \"gaip_watch_list\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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). Input: required continuity_handle. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_list\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_list\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-watch-remove","name":"Gaip Watch Remove","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"claims\": [{\"id\": \"c1\", \"text\": \"Returns JSON forecasts over MCP\"}, {\"id\": \"c2\", \"text\": \"Responds within 2 seconds\"}], \"counterparty_id\": \"example-weather-agent\", \"metadata\": {\"protocolVersion\": \"2025-06-18\", \"url\": \"https://weather.example.com/mcp\"}, \"observations\": [{\"claim_id\": \"c1\", \"detail\": \"tools/call returned valid JSON\", \"result\": \"PASS\"}, {\"claim_id\": \"c2\", \"detail\": \"p95 latency 4.8 s over 20 calls\", \"result\": \"FAIL\"}]}, \"keep_from_result\": \"continuity_handle\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"gaip_verify_supplier_claims\"}, {\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (gaip_verify_supplier_claims)>\", \"token\": \"<continuity_handle.token from step 1 (gaip_verify_supplier_claims)>\"}, \"interval_hours\": 24, \"kind\": \"DELIVERY_TERMS\", \"terms_id\": \"<terms_id from step 2 (witness_register_terms)>\"}, \"keep_from_result\": \"watch.watch_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"gaip_watch_register\"}, {\"agent_id\": \"witness\", \"arguments\": {\"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (gaip_verify_supplier_claims)>\", \"token\": \"<continuity_handle.token from step 1 (gaip_verify_supplier_claims)>\"}, \"watch_id\": \"<watch.watch_id from step 3 (gaip_watch_register)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 4, \"tool\": \"gaip_watch_remove\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required continuity_handle, watch_id. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_remove\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_remove\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-watch-events","name":"Gaip Watch Events","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"claims\": [{\"id\": \"c1\", \"text\": \"Returns JSON forecasts over MCP\"}, {\"id\": \"c2\", \"text\": \"Responds within 2 seconds\"}], \"counterparty_id\": \"example-weather-agent\", \"metadata\": {\"protocolVersion\": \"2025-06-18\", \"url\": \"https://weather.example.com/mcp\"}, \"observations\": [{\"claim_id\": \"c1\", \"detail\": \"tools/call returned valid JSON\", \"result\": \"PASS\"}, {\"claim_id\": \"c2\", \"detail\": \"p95 latency 4.8 s over 20 calls\", \"result\": \"FAIL\"}]}, \"keep_from_result\": \"continuity_handle\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"gaip_verify_supplier_claims\"}, {\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (gaip_verify_supplier_claims)>\", \"token\": \"<continuity_handle.token from step 1 (gaip_verify_supplier_claims)>\"}, \"interval_hours\": 24, \"kind\": \"DELIVERY_TERMS\", \"terms_id\": \"<terms_id from step 2 (witness_register_terms)>\"}, \"keep_from_result\": \"watch.watch_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"gaip_watch_register\"}, {\"agent_id\": \"witness\", \"arguments\": {\"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (gaip_verify_supplier_claims)>\", \"token\": \"<continuity_handle.token from step 1 (gaip_verify_supplier_claims)>\"}, \"limit\": 10, \"watch_id\": \"<watch.watch_id from step 3 (gaip_watch_register)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 4, \"tool\": \"gaip_watch_events\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required continuity_handle; optional limit, watch_id. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_events\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_events\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-citation-witness","name":"Gaip Citation Witness","tags":["delivery","evidence","receipts"],"examples":["{\"citations\": [{\"claimed_title\": \"GAIP\", \"quote\": \"GAIP\", \"url\": \"https://www.gaipagents.com/\"}]}"],"inputModes":["application/json"],"description":"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. Input: required citations; optional data_classification. A2A: send message/send with metadata.gaip_tool=\"gaip_citation_witness\" and one data part holding the input object; MCP: tools/call name \"gaip_citation_witness\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-check-sar-receipt","name":"Gaip Check Sar Receipt","tags":["delivery","evidence","receipts"],"examples":["{\"public_key\": \"Y8BpzlWPH3EPRQziEPRBeLS1lJBF4xEo9WaxTNbzNp0\", \"sar_receipt\": {\"confidence\": 1.0, \"reason_code\": \"SPEC_MATCH\", \"receipt_id\": \"sha256:17146cdeb5aba1c269130348cdc7d3d96ae55f6e048b81d3baa59d4e3f3b188b\", \"receipt_version\": \"0.1\", \"sig\": \"ogilW-bjlCbYkwwUAIrg_zm_Wuoc6EiRgeErs0RL7llP7FWyX43-LgozZFyCjCXgsViK-A4_aroOo16Q4uvTCg\", \"sig_alg\": \"Ed25519\", \"task_id_hash\": \"sha256:c8b36982316351a28e040a6520df2092c2c87a4ea611c123d04993074b2b6f1d\", \"ts\": \"2026-10-01T09:00:00Z\", \"verdict\": \"PASS\", \"verifier_kid\": \"ef654fc8b615b51c\"}}"],"inputModes":["application/json"],"description":"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. Input: required sar_receipt; optional public_key. A2A: send message/send with metadata.gaip_tool=\"gaip_check_sar_receipt\" and one data part holding the input object; MCP: tools/call name \"gaip_check_sar_receipt\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-record-extract","name":"Gaip Record Extract","tags":["delivery","evidence","receipts"],"examples":["{\"since\": \"2026-09-01\", \"url\": \"https://huggingface.co/mcp\"}"],"inputModes":["application/json"],"description":"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. Input: required url; optional limit, since, until. A2A: send message/send with metadata.gaip_tool=\"gaip_record_extract\" and one data part holding the input object; MCP: tools/call name \"gaip_record_extract\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"witness-accept-terms","name":"Witness Accept Terms","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and continuity_handle\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-buyer-side-check\", \"service_url\": \"https://weather.example.com/status.json\"}, \"keep_from_result\": \"continuity_handle (the seller's own)\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"business_purpose_statement\": true, \"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 2 (witness_register_terms)>\", \"token\": \"<continuity_handle.token from step 2 (witness_register_terms)>\"}, \"terms_id\": \"<terms_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"witness_accept_terms\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required terms_id; optional acceptance_rule, agreement_cancelled, agreement_id, business_purpose_statement, consumer_contract, continuity_handle, data_classification, finding_mode, mandate_check_receipt, seller_key_proof. A2A: send message/send with metadata.gaip_tool=\"witness_accept_terms\" and one data part holding the input object; MCP: tools/call name \"witness_accept_terms\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"witness-finding","name":"Witness Finding","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and continuity_handle\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-buyer-side-check\", \"service_url\": \"https://weather.example.com/status.json\"}, \"keep_from_result\": \"continuity_handle (the seller's own)\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"business_purpose_statement\": true, \"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 2 (witness_register_terms)>\", \"token\": \"<continuity_handle.token from step 2 (witness_register_terms)>\"}, \"terms_id\": \"<terms_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"agreement_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"witness_accept_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"agreement_id\": \"<agreement_id from step 3 (witness_accept_terms)>\", \"business_purpose_statement\": true, \"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 1 (witness_register_terms)>\", \"token\": \"<continuity_handle.token from step 1 (witness_register_terms)>\"}, \"terms_id\": \"<terms_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"event BUSINESS_PURPOSE_CONFIRMED (the buyer's own handle)\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 4, \"tool\": \"witness_accept_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"body\": \"{\\\"forecast\\\": \\\"sun\\\"}\", \"http_status\": 200, \"mode\": \"BUYER_SUBMITTED\", \"terms_id\": \"<terms_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"receipt_id and verdict\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 5, \"tool\": \"witness_delivery\"}, {\"agent_id\": \"witness\", \"arguments\": {\"agreement_id\": \"<agreement_id from step 3 (witness_accept_terms)>\", \"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 2 (witness_register_terms)>\", \"token\": \"<continuity_handle.token from step 2 (witness_register_terms)>\"}}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 6, \"tool\": \"witness_finding\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required agreement_id; optional continuity_handle, data_classification. A2A: send message/send with metadata.gaip_tool=\"witness_finding\" and one data part holding the input object; MCP: tools/call name \"witness_finding\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"witness-signoff","name":"Witness Signoff","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and continuity_handle\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-buyer-side-check\", \"service_url\": \"https://weather.example.com/status.json\"}, \"keep_from_result\": \"continuity_handle (the seller's own)\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"business_purpose_statement\": true, \"continuity_handle\": {\"continuity_id\": \"<continuity_handle.continuity_id from step 2 (witness_register_terms)>\", \"token\": \"<continuity_handle.token from step 2 (witness_register_terms)>\"}, \"terms_id\": \"<terms_id from step 1 (witness_register_terms)>\"}, \"keep_from_result\": \"agreement_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 3, \"tool\": \"witness_accept_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"agreement_id\": \"<agreement_id from step 3 (witness_accept_terms)>\", \"decision\": \"APPROVED\", \"proposal_sha256\": \"a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1\", \"role\": \"APPROVER\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 4, \"tool\": \"witness_signoff\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required proposal_sha256, decision; optional agent_url, agreement_id, continuity_handle, data_classification, reason_sha256, role, role_id. A2A: send message/send with metadata.gaip_tool=\"witness_signoff\" and one data part holding the input object; MCP: tools/call name \"witness_signoff\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"assurance-prepare","name":"Assurance Prepare","tags":["delivery","evidence","receipts"],"examples":["{\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"counterparty_id\": \"example-weather-agent\", \"explicit_read_only_consent\": true, \"service_url\": \"https://weather.example.com/forecast.json\", \"task_class\": \"weather_forecast\"}"],"inputModes":["application/json"],"description":"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. Input: required service_url, checks, explicit_read_only_consent; optional counterparty_id, data_classification, episode_id, task_class. A2A: send message/send with metadata.gaip_tool=\"assurance_prepare\" and one data part holding the input object; MCP: tools/call name \"assurance_prepare\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"assurance-complete","name":"Assurance Complete","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"buyer-assurance\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"counterparty_id\": \"example-weather-agent\", \"explicit_read_only_consent\": true, \"service_url\": \"https://weather.example.com/forecast.json\", \"task_class\": \"weather_forecast\"}, \"keep_from_result\": \"terms_id and receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/buyer-assurance\", \"step\": 1, \"tool\": \"assurance_prepare\"}, {\"agent_id\": \"witness\", \"arguments\": {\"mode\": \"PUBLIC_REPLAY\", \"terms_id\": \"<terms_id from step 1 (assurance_prepare)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"assurance_complete\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required terms_id, mode; optional body, body_sha256, content_type, data_classification, http_status. A2A: send message/send with metadata.gaip_tool=\"assurance_complete\" and one data part holding the input object; MCP: tools/call name \"assurance_complete\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"assurance-verify","name":"Assurance Verify","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"buyer-assurance\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"counterparty_id\": \"example-weather-agent\", \"explicit_read_only_consent\": true, \"service_url\": \"https://weather.example.com/forecast.json\", \"task_class\": \"weather_forecast\"}, \"keep_from_result\": \"terms_id and receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/buyer-assurance\", \"step\": 1, \"tool\": \"assurance_prepare\"}, {\"agent_id\": \"witness\", \"arguments\": {\"receipt_id\": \"<receipt_id from step 1 (assurance_prepare)>\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"assurance_verify\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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). Input: required receipt_id. A2A: send message/send with metadata.gaip_tool=\"assurance_verify\" and one data part holding the input object; MCP: tools/call name \"assurance_verify\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-verify-supplier-claims","name":"Gaip Verify Supplier Claims","tags":["delivery","evidence","receipts"],"examples":["{\"claims\": [{\"id\": \"c1\", \"text\": \"Returns JSON forecasts over MCP\"}, {\"id\": \"c2\", \"text\": \"Responds within 2 seconds\"}], \"counterparty_id\": \"example-weather-agent\", \"metadata\": {\"protocolVersion\": \"2025-06-18\", \"url\": \"https://weather.example.com/mcp\"}, \"observations\": [{\"claim_id\": \"c1\", \"detail\": \"tools/call returned valid JSON\", \"result\": \"PASS\"}, {\"claim_id\": \"c2\", \"detail\": \"p95 latency 4.8 s over 20 calls\", \"result\": \"FAIL\"}]}"],"inputModes":["application/json"],"description":"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. Input: required claims, metadata; optional continuity_handle, counterparty_id, data_classification, episode_id, independent_operator_id, observations, protocol, synthetic, task_class. A2A: send message/send with metadata.gaip_tool=\"gaip_verify_supplier_claims\" and one data part holding the input object; MCP: tools/call name \"gaip_verify_supplier_claims\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"inspect-counterparty-evidence","name":"Inspect Counterparty Evidence","tags":["delivery","evidence","receipts"],"examples":["{\"counterparty_id\": \"example-weather-agent\", \"observations\": [{\"claim\": \"Publishes a public weather_forecast skill\", \"evidence_digest\": \"3f0a9c1e5b7d2468ace013579bdf2468ace013579bdf2468ace013579bdf2468\", \"lifecycle_state\": \"observed\", \"observed_at\": \"2026-09-27T12:00:00Z\", \"source\": \"https://forecast.example.com/.well-known/agent-card.json\"}, {\"claim\": \"Returned a London forecast in 1.2 s\", \"lifecycle_state\": \"OBSERVED\", \"observed_at\": \"2026-09-27T12:05:00Z\", \"source\": \"caller_task_log\"}], \"task_class\": \"weather_forecast\"}"],"inputModes":["application/json"],"description":"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. Input: required none; optional continuity_handle, counterparty_id, data_classification, episode_id, independent_operator_id, max_age_days, observations, synthetic, task_class. A2A: send message/send with metadata.gaip_tool=\"inspect_counterparty_evidence\" and one data part holding the input object; MCP: tools/call name \"inspect_counterparty_evidence\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-evidence-pack","name":"Gaip Evidence Pack","tags":["delivery","evidence","receipts"],"examples":["{\"requester\": {\"purpose\": \"INSURER\"}, \"scope\": {\"max_items\": 50, \"since\": \"2026-09-01\"}, \"subject\": {\"counterparty_id\": \"example-weather-agent\"}}"],"inputModes":["application/json"],"description":"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. Input: required subject; optional requester, scope. A2A: send message/send with metadata.gaip_tool=\"gaip_evidence_pack\" and one data part holding the input object; MCP: tools/call name \"gaip_evidence_pack\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-incident-bundle","name":"Gaip Incident Bundle","tags":["delivery","evidence","receipts"],"examples":["{\"chain\": [{\"agent_id\": \"witness\", \"arguments\": {\"checks\": [{\"allowed\": [200], \"id\": \"http_status_in\"}, {\"id\": \"json_parses\"}], \"seller_ref\": \"example-weather-agent\", \"service_url\": \"https://weather.example.com/forecast.json\"}, \"keep_from_result\": \"terms_id and receipt_id\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 1, \"tool\": \"witness_register_terms\"}, {\"agent_id\": \"witness\", \"arguments\": {\"ai_system_ref\": \"example-weather-agent\", \"observations\": [{\"observed_at_utc\": \"2026-09-27T10:00:00Z\", \"source\": \"our uptime monitor\", \"source_type\": \"AUTOMATED_MONITOR\", \"statement\": \"HTTP 503 from the forecast endpoint for 12 minutes\"}], \"receipt_ids\": [\"<receipt_id from step 1 (witness_register_terms)>\"], \"title\": \"Forecast endpoint returned errors\"}, \"keep_from_result\": \"result\", \"mcp_endpoint\": \"https://www.gaipagents.com/mcp/agents/witness\", \"step\": 2, \"tool\": \"gaip_incident_bundle\"}], \"note\": \"Run the steps in order; replace each angle-bracket value with the named field from the result of the named earlier step.\"}"],"inputModes":["application/json"],"description":"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. Input: required none; optional ai_system_ref, data_classification, observations, receipt_ids, title. A2A: send message/send with metadata.gaip_tool=\"gaip_incident_bundle\" and one data part holding the input object; MCP: tools/call name \"gaip_incident_bundle\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]},{"id":"gaip-measure-outcome-value","name":"Gaip Measure Outcome Value","tags":["delivery","evidence","receipts"],"examples":["{\"baseline_cost_gbp\": \"12.00\", \"costs\": {\"agent_gbp\": \"0.40\", \"compute_gbp\": \"0.12\", \"human_review_gbp\": \"3.50\", \"repair_gbp\": \"0\"}, \"counterparty_id\": \"example-weather-agent\", \"delivery\": {\"receipt_id\": \"example-receipt-1\", \"status\": \"ACCEPTED\"}, \"downstream_use\": {\"evidence_ref\": \"example-ticket-4411\", \"status\": \"USED\"}, \"episode_id\": \"example-episode-1\", \"observed_at_utc\": \"2026-09-27T21:00:00Z\", \"task\": {\"acceptance_criteria\": \"Forecast JSON for London returned within 5 seconds\"}, \"task_class\": \"weather_forecast\", \"unit_label\": \"forecast\", \"units\": 7}"],"inputModes":["application/json"],"description":"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. Input: required episode_id, task, delivery, costs; optional baseline_cost_gbp, continuity_handle, counterparty_id, currency, data_classification, delivery_check, downstream_use, evidence_refs, fx_to_gbp, independent_operator_id, synthetic, task_class. A2A: send message/send with metadata.gaip_tool=\"gaip_measure_outcome_value\" and one data part holding the input object; MCP: tools/call name \"gaip_measure_outcome_value\" at https://www.gaipagents.com/mcp/agents/witness.","outputModes":["application/json"]}],"iconUrl":"https://www.gaipagents.com/assets/agents/witness.svg","version":"1.0.0","provider":{"url":"https://www.gaipagents.com","organization":"GAIP"},"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 · Deals · Sign-offs (lead agent).","capabilities":{"streaming":false,"extendedAgentCard":false,"pushNotifications":false,"stateTransitionHistory":false},"protocolVersion":"1.0","securitySchemes":{},"documentationUrl":"https://www.gaipagents.com/agents/witness","defaultInputModes":["application/json"],"defaultOutputModes":["application/json"],"preferredTransport":"JSONRPC","supportedInterfaces":[{"url":"https://www.gaipagents.com/a2a/witness-agent","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"securityRequirements":[]},"status":"verified","publisher_domain":"gaipagents.com","signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-28T15:08:33.023534+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Publisher Agent Card","source_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","last_check":{"checked_at":"2026-10-28T15:08:33.023534+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"also_published_at":[],"history_urls":["https://www.gaipagents.com/agents/witness/.well-known/agent-card.json"],"skills":[{"skill_id":"assurance-complete","name":"Assurance Complete","description":"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. Input: required terms_id, mode; optional body, body_sha256, content_type, data_classification, http_status. A2A: send message/send with metadata.gaip_tool=\"assurance_complete\" and one data part holding the input object; MCP: tools/call name \"assurance_complete\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"assurance-prepare","name":"Assurance Prepare","description":"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. Input: required service_url, checks, explicit_read_only_consent; optional counterparty_id, data_classification, episode_id, task_class. A2A: send message/send with metadata.gaip_tool=\"assurance_prepare\" and one data part holding the input object; MCP: tools/call name \"assurance_prepare\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"assurance-verify","name":"Assurance Verify","description":"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). Input: required receipt_id. A2A: send message/send with metadata.gaip_tool=\"assurance_verify\" and one data part holding the input object; MCP: tools/call name \"assurance_verify\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-check-sar-receipt","name":"Gaip Check Sar Receipt","description":"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. Input: required sar_receipt; optional public_key. A2A: send message/send with metadata.gaip_tool=\"gaip_check_sar_receipt\" and one data part holding the input object; MCP: tools/call name \"gaip_check_sar_receipt\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-citation-witness","name":"Gaip Citation Witness","description":"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. Input: required citations; optional data_classification. A2A: send message/send with metadata.gaip_tool=\"gaip_citation_witness\" and one data part holding the input object; MCP: tools/call name \"gaip_citation_witness\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-evidence-pack","name":"Gaip Evidence Pack","description":"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. Input: required subject; optional requester, scope. A2A: send message/send with metadata.gaip_tool=\"gaip_evidence_pack\" and one data part holding the input object; MCP: tools/call name \"gaip_evidence_pack\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-incident-bundle","name":"Gaip Incident Bundle","description":"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. Input: required none; optional ai_system_ref, data_classification, observations, receipt_ids, title. A2A: send message/send with metadata.gaip_tool=\"gaip_incident_bundle\" and one data part holding the input object; MCP: tools/call name \"gaip_incident_bundle\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-measure-outcome-value","name":"Gaip Measure Outcome Value","description":"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. Input: required episode_id, task, delivery, costs; optional baseline_cost_gbp, continuity_handle, counterparty_id, currency, data_classification, delivery_check, downstream_use, evidence_refs, fx_to_gbp, independent_operator_id, synthetic, task_class. A2A: send message/send with metadata.gaip_tool=\"gaip_measure_outcome_value\" and one data part holding the input object; MCP: tools/call name \"gaip_measure_outcome_value\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-receipt-export","name":"Gaip Receipt Export","description":"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. Input: required receipt_id, format. A2A: send message/send with metadata.gaip_tool=\"gaip_receipt_export\" and one data part holding the input object; MCP: tools/call name \"gaip_receipt_export\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-record-extract","name":"Gaip Record Extract","description":"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. Input: required url; optional limit, since, until. A2A: send message/send with metadata.gaip_tool=\"gaip_record_extract\" and one data part holding the input object; MCP: tools/call name \"gaip_record_extract\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-verify-supplier-claims","name":"Gaip Verify Supplier Claims","description":"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. Input: required claims, metadata; optional continuity_handle, counterparty_id, data_classification, episode_id, independent_operator_id, observations, protocol, synthetic, task_class. A2A: send message/send with metadata.gaip_tool=\"gaip_verify_supplier_claims\" and one data part holding the input object; MCP: tools/call name \"gaip_verify_supplier_claims\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-watch-events","name":"Gaip Watch Events","description":"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. Input: required continuity_handle; optional limit, watch_id. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_events\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_events\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-watch-list","name":"Gaip Watch List","description":"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). Input: required continuity_handle. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_list\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_list\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-watch-register","name":"Gaip Watch Register","description":"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. Input: required continuity_handle, kind; optional data_classification, interval_hours, sla, target_url, terms_id, webhook_url. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_register\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_register\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"gaip-watch-remove","name":"Gaip Watch Remove","description":"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. Input: required continuity_handle, watch_id. A2A: send message/send with metadata.gaip_tool=\"gaip_watch_remove\" and one data part holding the input object; MCP: tools/call name \"gaip_watch_remove\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"inspect-counterparty-evidence","name":"Inspect Counterparty Evidence","description":"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. Input: required none; optional continuity_handle, counterparty_id, data_classification, episode_id, independent_operator_id, max_age_days, observations, synthetic, task_class. A2A: send message/send with metadata.gaip_tool=\"inspect_counterparty_evidence\" and one data part holding the input object; MCP: tools/call name \"inspect_counterparty_evidence\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"verify-gaip-receipt","name":"Verify Gaip Receipt","description":"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. Input: required receipt_id; optional continuity_handle, data_classification, episode_id, independent_operator_id, synthetic. A2A: send message/send with metadata.gaip_tool=\"verify_gaip_receipt\" and one data part holding the input object; MCP: tools/call name \"verify_gaip_receipt\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"witness-accept-terms","name":"Witness Accept Terms","description":"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. Input: required terms_id; optional acceptance_rule, agreement_cancelled, agreement_id, business_purpose_statement, consumer_contract, continuity_handle, data_classification, finding_mode, mandate_check_receipt, seller_key_proof. A2A: send message/send with metadata.gaip_tool=\"witness_accept_terms\" and one data part holding the input object; MCP: tools/call name \"witness_accept_terms\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"witness-delivery","name":"Witness Delivery","description":"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. Input: required terms_id, mode; optional body, body_sha256, content_type, continuity_handle, data_classification, episode_id, http_status, independent_operator_id, research_consent, synthetic. A2A: send message/send with metadata.gaip_tool=\"witness_delivery\" and one data part holding the input object; MCP: tools/call name \"witness_delivery\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"witness-dispute-bundle","name":"Witness Dispute Bundle","description":"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. Input: required none; optional continuity_handle, receipt_format, receipt_id, terms_id. A2A: send message/send with metadata.gaip_tool=\"witness_dispute_bundle\" and one data part holding the input object; MCP: tools/call name \"witness_dispute_bundle\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"witness-finding","name":"Witness Finding","description":"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. Input: required agreement_id; optional continuity_handle, data_classification. A2A: send message/send with metadata.gaip_tool=\"witness_finding\" and one data part holding the input object; MCP: tools/call name \"witness_finding\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"witness-register-terms","name":"Witness Register Terms","description":"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. Input: required service_url; optional checks, data_classification, research_consent, seller_ref. A2A: send message/send with metadata.gaip_tool=\"witness_register_terms\" and one data part holding the input object; MCP: tools/call name \"witness_register_terms\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false},{"skill_id":"witness-signoff","name":"Witness Signoff","description":"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. Input: required proposal_sha256, decision; optional agent_url, agreement_id, continuity_handle, data_classification, reason_sha256, role, role_id. A2A: send message/send with metadata.gaip_tool=\"witness_signoff\" and one data part holding the input object; MCP: tools/call name \"witness_signoff\" at https://www.gaipagents.com/mcp/agents/witness.","tags":["delivery","evidence","receipts"],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":1,"passed":1},"recent_checks":[{"card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","checked_at":"2026-10-28T15:08:33.023534+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":{"checked_at":"2026-10-28T15:08:33.023534+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-10-28T15:08:33.023534+00:00","endpoint":"https://www.gaipagents.com/a2a/witness-agent","protocol_binding":"JSONRPC","protocol_version":"1.0","state":"a2a_response","http_status":404,"detail":"A2A task-not-found response to a read-only task lookup","request_diagnostics":{"requests":[{"path":"/a2a/witness-agent","allow":[],"method":"POST","status":404,"version_header":"1.0","protocol_method":"GetTask","redirect_followed":false}],"capture_version":1}},"declared_primary_endpoint":"https://www.gaipagents.com/a2a/witness-agent","selected_connection_interface":{"url":"https://www.gaipagents.com/a2a/witness-agent","protocolBinding":"JSONRPC","protocolVersion":"1.0"},"protocol_interface_checks":[{"endpoint":"https://www.gaipagents.com/a2a/witness-agent","protocol_binding":"JSONRPC","protocol_version":"1.0","selected":true,"state":"a2a_response","checked_at":"2026-10-28T15:08:33.023534+00:00","http_status":404,"detail":"A2A task-not-found response to a read-only task lookup","binding_recorded":true}],"connection_selection_note":"The selected connection uses an address advertised in the publisher card. Read-only observations do not establish task quality or safety.","x402_price_check":null,"events":[],"relationships":[{"id":63710,"relation":"references_agent_card","evidence":{"claim":"Source card directly contains the target card URL","source_card_url":"https://join.agentminder.co.uk/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json"},"evidence_url":"https://join.agentminder.co.uk/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":354907,"source_agent_name":"GAIP","target_agent_id":499071,"target_agent_name":"GAIP Witness Agent"},{"id":65609,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://www.gaipagents.com","source_card_url":"https://join.agentminder.co.uk/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json"},"evidence_url":"https://join.agentminder.co.uk/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":354907,"source_agent_name":"GAIP","target_agent_id":499071,"target_agent_name":"GAIP Witness Agent"},{"id":65615,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://www.gaipagents.com","source_card_url":"https://www.gaipagents.com/agents/integration-protocol/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json"},"evidence_url":"https://www.gaipagents.com/agents/integration-protocol/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":498969,"source_agent_name":"GAIP Integration & Protocol Agent","target_agent_id":499071,"target_agent_name":"GAIP Witness Agent"},{"id":65620,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://www.gaipagents.com","source_card_url":"https://www.gaipagents.com/agents/listing-observer/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json"},"evidence_url":"https://www.gaipagents.com/agents/listing-observer/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":499022,"source_agent_name":"GAIP Listing Observer","target_agent_id":499071,"target_agent_name":"GAIP Witness Agent"},{"id":65624,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://www.gaipagents.com","source_card_url":"https://www.gaipagents.com/agents/art-intelligence/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json"},"evidence_url":"https://www.gaipagents.com/agents/art-intelligence/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":499049,"source_agent_name":"GAIP Digital Art Intelligence Agent","target_agent_id":499071,"target_agent_name":"GAIP Witness Agent"},{"id":65628,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://www.gaipagents.com","source_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/buyer-assurance/.well-known/agent-card.json"},"evidence_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":499071,"source_agent_name":"GAIP Witness Agent","target_agent_id":499075,"target_agent_name":"GAIP Buyer Assurance Agent"},{"id":65629,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://www.gaipagents.com","source_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/integration-repair/.well-known/agent-card.json"},"evidence_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":499071,"source_agent_name":"GAIP Witness Agent","target_agent_id":499081,"target_agent_name":"GAIP Integration Repair Agent"},{"id":65630,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://www.gaipagents.com","source_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","target_card_url":"https://www.gaipagents.com/agents/opportunity-broker/.well-known/agent-card.json"},"evidence_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","first_seen":"2026-10-28T15:15:56.922020+00:00","last_seen":"2026-10-28T15:15:56.922020+00:00","source_agent_id":499071,"source_agent_name":"GAIP Witness Agent","target_agent_id":499118,"target_agent_name":"GAIP Opportunity Broker"}],"verification":{"agent_card_url":"https://www.gaipagents.com/agents/witness/.well-known/agent-card.json","last_successful_card_check":"2026-10-28T15:08:33.023534+00:00","latest_card_check":{"checked_at":"2026-10-28T15:08:33.023534+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"signature_status":"unsigned","signature_checked_at":"2026-10-28T15:08:33.023534+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-10-28T15:08:33.023534+00:00","endpoint_tls_reachable":true,"protocol_check_state":"a2a_response","protocol_checked_at":"2026-10-28T15:08:33.023534+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null},"synthetic_capability_tests":{"agent_id":499071,"status":"not_tested","reason_code":"not_yet_tested","consent_status":"not_confirmed","latest_observation_status":null,"last_checked_at":null,"fixture_version":"1","reference_demonstration":false,"scope":"A publisher-authorized synthetic test of a dedicated free test endpoint. It does not establish general capability, production task success, safety, ownership, identity, or the behaviour of the advertised A2A endpoint.","methodology_url":"https://localmark.ai/capability-tests","history":[]},"repair_links":{"agent_repair_url":"https://localmark.ai/agents/499071/repair","publisher_report_url":"https://localmark.ai/publishers/gaipagents.com/repair","diagnostics_json_url":"https://localmark.ai/publishers/gaipagents.com/repair/diagnostics.json","diagnostics_csv_url":"https://localmark.ai/publishers/gaipagents.com/repair/diagnostics.csv"},"_localmark":{"contribution":{"optional":true,"directory_access":"free","operator_authorization_required":true,"affects_rankings":false,"message":"LocalMark is free. Optional contributions help fund ongoing checks.","support_url":"https://localmark.ai/support","metadata_url":"https://localmark.ai/api/v1/support/contributions"}}}