{"id":293133,"recorded_at":"2026-10-26T21:13:15.186126Z","observed_at":"2026-10-26T21:13:15.186044Z","subject_kind":"endpoint","subject":"76094c51-ac10-44f3-bcb3-5c9054e8a9ab","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":23,"tools":[{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"examples":[{"mode":"PUBLIC_REPLAY","terms_id":"<terms_id from assurance_prepare>"}],"properties":{"body":{"description":"BUYER_SUBMITTED: the response body you received (max 32 KiB).","type":"string"},"body_sha256":{"description":"BUYER_SUBMITTED: SHA-256 of the body, instead of the body.","type":"string"},"content_type":{"description":"BUYER_SUBMITTED: the Content-Type you received.","type":"string"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"http_status":{"description":"BUYER_SUBMITTED: the HTTP status you received.","type":"integer"},"mode":{"description":"PUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.","enum":["BUYER_SUBMITTED","PUBLIC_REPLAY"]},"terms_id":{"description":"The terms_id returned when the terms were registered.","type":"string"}},"required":["terms_id","mode"],"type":"object"},"name":"assurance_complete"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"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"}],"properties":{"checks":{"description":"1-8 checks, each {\"id\": \"http_status_in\", \"allowed\": [200]}, {\"id\": \"content_type_is\", \"value\": \"application/json\"}, {\"id\": \"non_empty\"}, {\"id\": \"json_parses\"}, {\"id\": \"json_required_keys\", \"keys\": [\"a.b\"]}, {\"id\": \"json_path_equals\", \"path\": \"a.b\", \"value\": 1}, {\"id\": \"max_latency_ms\", \"limit\": 2000}, {\"id\": \"max_bytes\", \"limit\": 20000}, {\"id\": \"text_contains\", \"value\": \"ok\"} or {\"id\": \"regex\", \"pattern\": \"ok|up\"}.","maxItems":8,"minItems":1,"type":"array"},"counterparty_id":{"description":"Name or URL of the agent or service.","type":"string"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"description":"Optional: your own id to group related calls.","type":"string"},"explicit_read_only_consent":{"const":true,"description":"Must be true: you consent to a public, read-only check."},"service_url":{"description":"Public https URL of the service.","type":"string"},"task_class":{"description":"Optional: short name of the task, e.g. weather_forecast.","type":"string"}},"required":["service_url","checks","explicit_read_only_consent"],"type":"object"},"name":"assurance_prepare"},{"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). Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"examples":[{"receipt_id":"<receipt_id from assurance_prepare or assurance_complete>"}],"properties":{"receipt_id":{"description":"A receipt_id returned by an earlier GAIP call.","type":"string"}},"required":["receipt_id"],"type":"object"},"name":"assurance_verify"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"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"}}],"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"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":true,"examples":[{"citations":[{"claimed_title":"GAIP","quote":"GAIP","url":"https://www.gaipagents.com/"}]}],"properties":{"citations":{"description":"1-20 citations, each {url, quote?, claimed_title?, claimed_date?}.","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","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"}},"required":["citations"],"type":"object"},"name":"gaip_citation_witness"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"requester":{"purpose":"INSURER"},"scope":{"max_items":50,"since":"2026-09-01"},"subject":{"counterparty_id":"example-weather-agent"}}],"properties":{"requester":{"additionalProperties":false,"description":"Optional: {purpose, continuity_handle} to include your own receipts.","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,"description":"Optional: {receipt_ids, since, until, categories, max_items}.","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"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"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 returned by any GAIP tool>"],"title":"Forecast endpoint returned errors"}],"properties":{"ai_system_ref":{"description":"Optional: public id or URL of the AI system involved; given alone, GAIP starts the timeline from its own public records of that system.","maxLength":256,"type":"string"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"observations":{"description":"Attributed observations, each {source, statement, observed_at_utc}.","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":{"description":"GAIP receipt ids you hold about the incident.","items":{"type":"string"},"maxItems":50,"type":"array"},"title":{"description":"Optional: short incident title.","maxLength":120,"type":"string"}},"type":"object"},"name":"gaip_incident_bundle"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"additionalProperties":true,"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}],"properties":{"baseline_cost_gbp":{"description":"Optional: what the task cost before, in GBP.","oneOf":[{"type":"number"},{"type":"string"}]},"continuity_handle":{"additionalProperties":false,"description":"Optional: the continuity_handle from an earlier GAIP result; adds running totals over your own earlier tasks.","properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"costs":{"description":"Caller-stated costs in GBP: agent_gbp, compute_gbp, human_review_gbp, repair_gbp.","type":"object"},"counterparty_id":{"description":"Name or URL of the agent or service.","type":"string"},"currency":{"default":"GBP","description":"Optional: ISO 4217 code of the cost amounts (default GBP).","type":"string"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"delivery":{"description":"What was delivered: {status, receipt_id?}.","required":["status"],"type":"object"},"delivery_check":{"description":"Optional: {url, checks} - GAIP tests the delivery at this public https URL now with Witness checks; its verdict sets delivery.status.","properties":{"checks":{"items":{"type":"object"},"maxItems":8,"minItems":1,"type":"array"},"url":{"type":"string"}},"required":["url"],"type":"object"},"downstream_use":{"description":"Optional: {status: USED|NOT_USED, evidence_ref}.","type":"object"},"episode_id":{"description":"Optional: your own id to group related calls.","type":"string"},"evidence_refs":{"description":"Optional: references to your own evidence (ids or URLs).","items":{"type":"string"},"maxItems":20,"type":"array"},"fx_to_gbp":{"description":"Optional: {rate, as_of, source} - your GBP rate; GBP equivalents are then reported, labelled with it. GAIP never uses built-in rates.","properties":{"as_of":{"type":"string"},"rate":{"type":"number"},"source":{"type":"string"}},"required":["rate","as_of","source"],"type":"object"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","type":"string"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"},"task":{"description":"The task: {acceptance_criteria}.","required":["acceptance_criteria"],"type":"object"},"task_class":{"description":"Optional: short name of the task, e.g. weather_forecast.","type":"string"}},"required":["episode_id","task","delivery","costs"],"type":"object"},"name":"gaip_measure_outcome_value"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"format":"x402","receipt_id":"<receipt_id returned by any GAIP tool>"}],"properties":{"format":{"description":"x402, erc8004 or vc.","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"},{"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. Free, read-only, no account; inputs must be public and non-personal.","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"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"additionalProperties":true,"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"}]}],"properties":{"claims":{"description":"Claims to check, each {id, text}.","items":{"type":"object"},"maxItems":20,"minItems":1,"type":"array"},"continuity_handle":{"additionalProperties":false,"description":"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.","properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"counterparty_id":{"description":"Name or URL of the agent/service. Optional.","type":"string"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"description":"Optional: your own id to group related calls.","type":"string"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","type":"string"},"metadata":{"description":"The published agent card, MCP server description or OpenAPI document (as JSON).","type":"object"},"observations":{"description":"Optional: what you saw, each {claim_id, result: PASS|FAIL, detail}.","items":{"type":"object"},"maxItems":30,"type":"array"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"],"type":"string"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"},"task_class":{"default":"supplier_claim_check","description":"Optional: short name of the task, e.g. weather_forecast.","type":"string"}},"required":["claims","metadata"],"type":"object"},"name":"gaip_verify_supplier_claims"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"continuity_handle":{"continuity_id":"<continuity_handle.continuity_id returned by any GAIP tool>","token":"<continuity_handle.token returned by any GAIP tool>"},"limit":10,"watch_id":"<watch_id from gaip_watch_register>"}],"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":{"description":"Optional: maximum events to return.","maximum":50,"minimum":1,"type":"integer"},"watch_id":{"description":"The watch_id returned by gaip_watch_register.","type":"string"}},"required":["continuity_handle"],"type":"object"},"name":"gaip_watch_events"},{"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). Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"continuity_handle":{"continuity_id":"<continuity_handle.continuity_id returned by any GAIP tool>","token":"<continuity_handle.token returned by any GAIP tool>"}}],"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"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"continuity_handle":{"continuity_id":"<continuity_handle.continuity_id returned by any GAIP tool>","token":"<continuity_handle.token returned by any GAIP tool>"},"interval_hours":24,"kind":"DELIVERY_TERMS","terms_id":"<terms_id from witness_register_terms>"}],"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","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","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":{"description":"AGENT_READINESS (agent URL), SUPPLIER_CARD (published card), DELIVERY_TERMS (terms_id) or DELIVERY_SLA (terms_id plus sla terms).","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"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"continuity_handle":{"continuity_id":"<continuity_handle.continuity_id returned by any GAIP tool>","token":"<continuity_handle.token returned by any GAIP tool>"},"watch_id":"<watch_id from gaip_watch_register>"}],"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":{"description":"The watch_id returned by gaip_watch_register.","type":"string"}},"required":["continuity_handle","watch_id"],"type":"object"},"name":"gaip_watch_remove"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":true,"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"}],"properties":{"continuity_handle":{"additionalProperties":false,"description":"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.","properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"counterparty_id":{"description":"Name or URL of the agent or service.","type":"string"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"description":"Optional: your own id to group related calls.","type":"string"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","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":{"description":"Optional: observations about it, each {source, observed_at, evidence_digest, lifecycle_state, claim}.","items":{"type":"object"},"type":"array"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"},"task_class":{"default":"COUNTERPARTY_EVIDENCE","description":"Task you want evidence for. Optional.","type":"string"}},"type":"object"},"name":"inspect_counterparty_evidence"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":true,"examples":[{"receipt_id":"<receipt_id returned by any GAIP tool>"}],"properties":{"continuity_handle":{"additionalProperties":false,"description":"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.","properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"data_classification":{"description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"description":"Optional: your own id to group related calls.","type":"string"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","type":"string"},"receipt_id":{"description":"A receipt_id returned by an earlier GAIP call.","maxLength":128,"minLength":1,"type":"string"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"}},"required":["receipt_id"],"type":"object"},"name":"verify_gaip_receipt"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"business_purpose_statement":true,"continuity_handle":{"continuity_id":"<continuity_handle.continuity_id returned by any GAIP tool>","token":"<continuity_handle.token returned by any GAIP tool>"},"terms_id":"<terms_id from witness_register_terms>"}],"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":["terms_id"],"type":"object"},"name":"witness_accept_terms"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"additionalProperties":true,"examples":[{"mode":"PUBLIC_REPLAY","terms_id":"<terms_id from witness_register_terms>"}],"properties":{"body":{"description":"BUYER_SUBMITTED: the response body you received (max 32 KiB).","maxLength":32768,"type":"string"},"body_sha256":{"description":"BUYER_SUBMITTED: SHA-256 of the body, instead of the body.","type":"string"},"content_type":{"description":"BUYER_SUBMITTED: the Content-Type you received.","type":"string"},"continuity_handle":{"additionalProperties":false,"description":"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.","properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"description":"Optional: your own id to group related calls.","type":"string"},"http_status":{"description":"BUYER_SUBMITTED: the HTTP status you received.","type":"integer"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","type":"string"},"mode":{"description":"PUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.","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":{"description":"Optional: true marks a test call.","type":"boolean"},"terms_id":{"description":"The terms_id returned when the terms were registered.","type":"string"}},"required":["terms_id","mode"],"type":"object"},"name":"witness_delivery"},{"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. Free, read-only, no account; inputs must be public and non-personal.","inputSchema":{"examples":[{"receipt_id":"<receipt_id from witness_delivery>"}],"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"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"agreement_id":"<agreement_id from witness_accept_terms>","continuity_handle":{"continuity_id":"<continuity_handle.continuity_id returned by any GAIP tool>","token":"<continuity_handle.token returned by any GAIP tool>"}}],"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":["agreement_id"],"type":"object"},"name":"witness_finding"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"examples":[{"checks":[{"allowed":[200],"id":"http_status_in"},{"id":"json_parses"}],"seller_ref":"example-weather-agent","service_url":"https://weather.example.com/forecast.json"}],"properties":{"checks":{"description":"1-8 checks, each {\"id\": \"http_status_in\", \"allowed\": [200]}, {\"id\": \"content_type_is\", \"value\": \"application/json\"}, {\"id\": \"non_empty\"}, {\"id\": \"json_parses\"}, {\"id\": \"json_required_keys\", \"keys\": [\"a.b\"]}, {\"id\": \"json_path_equals\", \"path\": \"a.b\", \"value\": 1}, {\"id\": \"max_latency_ms\", \"limit\": 2000}, {\"id\": \"max_bytes\", \"limit\": 20000}, {\"id\": \"text_contains\", \"value\": \"ok\"} or {\"id\": \"regex\", \"pattern\": \"ok|up\"}.","maxItems":8,"minItems":1,"type":"array"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"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":{"description":"Optional: name of the supplier. Defaults to the host of service_url.","type":"string"},"service_url":{"description":"Public https URL of the service.","type":"string"}},"required":["service_url"],"type":"object"},"name":"witness_register_terms"},{"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. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.","inputSchema":{"additionalProperties":false,"examples":[{"agreement_id":"<agreement_id returned by witness_accept_terms>","decision":"APPROVED","proposal_sha256":"a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1","role":"APPROVER"}],"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":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","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":["proposal_sha256","decision"],"type":"object"},"name":"witness_signoff"}]},"body_sha256":"5c3a52a9e74a3cd52a3f7a61cc54963730ebcc631deb6dd4c0714f1ca3a8ea63","prev_id":null,"leaf":"0x3b2a52668ac220a112ad4cda08e3aadbe5dc2c02d3a85da33834f8905f44af4b","leaf_text":"{\"body\":\"5c3a52a9e74a3cd52a3f7a61cc54963730ebcc631deb6dd4c0714f1ca3a8ea63\",\"id\":293133,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793049195186044,\"prev\":null,\"subject\":\"76094c51-ac10-44f3-bcb3-5c9054e8a9ab\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0x3b2a529d9021507835724675f78de918d2da188de54c4a8f91de365966f5a00d","0xf6c39108c78b7df64cf50c6640ae4019b0e6e756fcc47c9cf32004054480f13a","0x6bf62707c9c485ef0d0f22367c8c680df0c14cbbdf434b0df0aa360922057b36","0x65df7bbcda2402c657252cd0ba9098f74726baf9c0c10632db10fbf47516c65e","0x51b2a0940f024eb07b6c9516ae588505fe98a58bdbad3997dc2c5a45cfb90432","0x64793bb2b3f29ed356fc333a3225ee15b99d07cf66986be67bc9507d5ead1953","0x1e980009213e73e23bea2111196d03f4955358e0d36ef644c6827189d6eba7d2","0x68a180c66dde67ee3cf119858c699da9ce7678d6c60afe24c51446450721cdd1","0x18b5713377bea4f923f56bca7d2a93006479c12b53ba7d1abc287c9b630232df","0x0c9588d83dbdbfe86d2f03c80aaae11aaa963d8c04ce31ca8923453d940310f4","0x229584c1d304842544db84ca7b368b5ececeb9d3bea2b23265eba1c7595d1220","0xdb4b9388e3fe1df4b04e149e559f925fb354066ae1d2537fd6f918162716fadf","0xe2214b3d6a48396930d1739b02ea366de2aac5337c9b9ff2aff28cecf6518139","0x7f594f5609f388d64d3cda87b5631d393ee8300bb09bad71f150113a5886ee33","0x4b52a97f7a80ff7778a702b85267b8d2e5c93ce160942656435c29ae7be68bf4","0x2e6a32eb32761c210560e852405e2f865f958ddbe01027894f8b9c1b3433b9f0","0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d","0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}