Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "gaip_verify" and "second_look_check"
⟨31 unchanged words⟩ or `claims` with `observations`. Returns a result peritem and a receipt.item. Free, no account;recordsonlyadeliveryGAIPkeepsreceiptaonly.record. Inputs must be public and non-personal.
⟨356 unchanged words⟩ ,"token"],"type":"object"},"keep_receipt":{"default":false,"description":"Optional: true keeps a dated GAIP receipt of this answer and returns a continuity handle. Default: GAIP keeps no record of the task (usage is counted without its content).","type":"boolean"},"metadata":{"description":"Optional (claims): ⟨126 unchanged words⟩
⟨26 unchanged words⟩ page `url` and the `claim`. Returns what theshoppageshowsshowednow,besidewhetherwhatitthematchesclaim said, and a signed, dated receipt. Second Look ⟨14 unchanged words⟩
⟨106 unchanged words⟩ (optional).","type":"boolean"},"mandate_ref":{"description":"Optional: your own reference to the shopper's mandate for this purchase. Kept only as a keyed hash (mandate_sha256) on the receipt, never in clear.","maxLength":200,"type":"string"},"price":{"description":"Claimed price, e.g. ⟨65 unchanged words⟩
Changed the definition of "gaip_verify" and "second_look_check"
⟨31 unchanged words⟩ or `claims` with `observations`. Returns a result peritem and a receipt.item. Free, no account;recordsonlyadeliveryGAIPkeepsreceiptaonly.record. Inputs must be public and non-personal.
⟨356 unchanged words⟩ Changed the definition of "second_look_check"
⟨43 unchanged words⟩ "maxLength":2000,"type":"string"},"continuity_handle":{"additionalProperties":false,"description":"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones (needed to see or remove your watches later).","properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"currency":{"description":"ISO currency, e.g. ⟨88 unchanged words⟩
Changed the definition of "second_look_check"
⟨43 unchanged words⟩ "maxLength":2000,"type":"string"},"continuity_handle":{"additionalProperties":false,"description":"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones (needed to see or remove your watches later).","properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"currency":{"description":"ISO currency, e.g. ⟨88 unchanged words⟩
Changed the definition of "gaip_diagnose"
⟨25 unchanged words⟩ the exact fix (e.g. the missing argument),retry_after_secondsand retry_after_seconds; `keep_receipt: true` adds a dated receipt. Free, read-only, no account;records a GAIP receipt only. Inputsinputs must be public and non-personal.
⟨90 unchanged words⟩ "minimum":100,"type":"integer"},"keep_receipt":{"default":false,"description":"Optional: true keeps a dated GAIP receipt of this answer and returns a continuity handle. Default: GAIP keeps no record of the task (usage is counted without its content).","type":"boolean"},"
Changed the definition of "gaip_diagnose"
⟨25 unchanged words⟩ the exact fix (e.g. the missing argument),retry_after_secondsand retry_after_seconds; `keep_receipt: true` adds a dated receipt. Free, read-only, no account;records a GAIP receipt only. Inputsinputs must be public and non-personal.
⟨90 unchanged words⟩ "minimum":100,"type":"integer"},"keep_receipt":{"default":false,"description":"Optional: true keeps a dated GAIP receipt of this answer and returns a continuity handle. Default: GAIP keeps no record of the task (usage is counted without its content).","type":"boolean"},"
Added "second_look_check" (4 tools before, 5 now)
Second Look: check before you buy — Use this when a shopper is about to buy something an AI suggested, or asks if a price or stock claim is right. Pass the product page `url` and the `claim`. Returns what the shop shows now, whether it matches, and a signed, dated receipt. Second Look by GAIP. Free, no account, no affiliate links; inputs must be public and non-personal.
Added "second_look_check" (4 tools before, 5 now)
Second Look: check before you buy — Use this when a shopper is about to buy something an AI suggested, or asks if a price or stock claim is right. Pass the product page `url` and the `claim`. Returns what the shop shows now, whether it matches, and a signed, dated receipt. Second Look by GAIP. Free, no account, no affiliate links; inputs must be public and non-personal.
Changed the definition of "gaip_check", "gaip_verify" and "gaip_watch"
⟨5 unchanged words⟩ an AI agent, MCP server or API works,is validor haschanged. Passchanged,itse.g.`url`before(agentaddingcard,orMCPpayingendpointit.orPass
Changed the definition of "gaip_check", "gaip_verify" and "gaip_watch"
⟨5 unchanged words⟩ an AI agent, MCP server or API works,is validor haschanged. Passchanged,itse.g.`url`before(agentaddingcard,orMCPpayingendpointit.orPass
Changed the definition of "gaip_check"
⟨37 unchanged words⟩ when GAIP observes it, and a receipt. With `agent`: may your bot fetch it? Free, read-only, no account; inputs must be public and non-personal.
⟨4 unchanged words⟩ ":"https://www.gaipagents.com/.well-known/agent-card.json"}],"properties":{"agent":{"description":"Optional: ask \"may my agent fetch this url?\" instead. Your agent's user-agent token, e.g. GPTBot; GAIP reads the site's robots.txt and AI-permission files (gaip_check_permission).","maxLength":300,"type":"string"},"continuity_handle":{"additionalProperties":false,"description":"Optional ⟨120 unchanged words⟩
Changed the definition of "gaip_check"
⟨37 unchanged words⟩ when GAIP observes it, and a receipt. With `agent`: may your bot fetch it? Free, read-only, no account; inputs must be public and non-personal.
⟨4 unchanged words⟩ ":"https://www.gaipagents.com/.well-known/agent-card.json"}],"properties":{"agent":{"description":"Optional: ask \"may my agent fetch this url?\" instead. Your agent's user-agent token, e.g. GPTBot; GAIP reads the site's robots.txt and AI-permission files (gaip_check_permission).","maxLength":300,"type":"string"},"continuity_handle":{"additionalProperties":false,"description":"Optional ⟨120 unchanged words⟩
Certificate changed, valid to 2026-12-26
Changed the definition of "gaip_check", "gaip_diagnose", "gaip_verify" and 1 more
⟨10 unchanged words⟩ or API works, is valid or haschanged, or whether a shop product page'schanged.pricePassanditsstock`url`agree(agentacrosscard,itsMCPsources.endpointPassor
Changed the definition of "gaip_check", "gaip_diagnose", "gaip_verify" and 1 more
⟨10 unchanged words⟩ or API works, is valid or haschanged, or whether a shop product page'schanged.pricePassanditsstock`url`agree(agentacrosscard,itsMCPsources.endpointPassor
Changed the definition of "gaip_check"
⟨7 unchanged words⟩ agent, MCP server or API works, isreachable, isvalid or haschanged.changed, or whether a shop product page's price and stock agree across its sources. Pass its `url`. Returns a one-line verdict(READY, FIXES_NEEDED, NO_AGENT_CARD or UNREACHABLE), fixes, dated history when GAIP observes it ⟨13 unchanged words⟩
Changed the definition of "gaip_check"
⟨7 unchanged words⟩ agent, MCP server or API works, isreachable, isvalid or haschanged.changed, or whether a shop product page's price and stock agree across its sources. Pass its `url`. Returns a one-line verdict(READY, FIXES_NEEDED, NO_AGENT_CARD or UNREACHABLE), fixes, dated history when GAIP observes it ⟨13 unchanged words⟩
Added "gaip_check", "gaip_diagnose", "gaip_verify" and 1 more; removed "assurance_complete", "assurance_prepare", "assurance_verify" and 25 more (28 tools before, 4 now)
Check an AI agent, MCP server or API — Use this when asked whether an AI agent, MCP server or API works, is reachable, is valid or has changed. Pass its `url`. Returns a one-line verdict (READY, FIXES_NEEDED, NO_AGENT_CARD or UNREACHABLE), fixes, dated history when GAIP observes it, and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Why did my agent or API call fail? — Use this when an agent, MCP or API call failed and you are asked why or how to fix it. Pass the `error` text and/or `http_status`; add the service `url` to see changes GAIP observed around then. Returns the likely cause, when to retry, fix steps and a receipt. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Verify claims, citations or a delivery — Use this when asked whether something delivered what was promised, whether claims are true, or whether citations are accurate. Pass `citations`, or `claims` (+ `url`), or a service `url` plus the `result` you got. Returns which check ran and each result. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Added "gaip_check", "gaip_diagnose", "gaip_verify" and 1 more; removed "assurance_complete", "assurance_prepare", "assurance_verify" and 24 more (27 tools before, 4 now)
Check an AI agent, MCP server or API — Use this when asked whether an AI agent, MCP server or API works, is reachable, is valid or has changed. Pass its `url`. Returns a one-line verdict (READY, FIXES_NEEDED, NO_AGENT_CARD or UNREACHABLE), fixes, dated history when GAIP observes it, and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Why did my agent or API call fail? — Use this when an agent, MCP or API call failed and you are asked why or how to fix it. Pass the `error` text and/or `http_status`; add the service `url` to see changes GAIP observed around then. Returns the likely cause, when to retry, fix steps and a receipt. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Verify claims, citations or a delivery — Use this when asked whether something delivered what was promised, whether claims are true, or whether citations are accurate. Pass `citations`, or `claims` (+ `url`), or a service `url` plus the `result` you got. Returns which check ran and each result. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Added "gaip_since_last_call"; changed the definition of "assurance_complete", "assurance_prepare", "assurance_verify" and 24 more (27 tools before, 28 now)
before
—after
Complete a buyer-side delivery checkFinishUse this when finishing a Buyer Assurancecheck:check. Pass the `terms_id` from assurance_prepare and mode PUBLIC_REPLAY (GAIP replays thepublicservice)(orchecks aBUYER_SUBMITTED.
Added "gaip_citation_witness", "gaip_evidence_pack", "gaip_incident_bundle" and 11 more; changed the definition of "check_agent_conformance", "evaluate_public_art_evidence", "gaip_compare_supplier_snapshots" and 2 more (13 tools before, 27 now)
⟨14 unchanged words⟩ (site, A2A agent card, MCP serverdescriptioncard / server.json or OpenAPI link): GAIP fetches the card, validates it against the A2A, MCP or OpenAPI spec, tests that its endpoint answers and returns READY / FIXES_NEEDED /UNREACHABLE with concrete fixes andNO_AGENT_CARDa/receipt.UNREACHABLE. Or pass the card itself as `metadata`. Every finding has a severity, JSON path, plain-English fix and spec link, plus a 0-100 score and a JSON Patch with placeholders; the receipt verifies with verify_gaip_receipt.
Added "gaip_citation_witness", "gaip_evidence_pack", "gaip_incident_bundle" and 11 more; changed the definition of "check_agent_conformance", "evaluate_public_art_evidence", "gaip_compare_supplier_snapshots" and 2 more (13 tools before, 27 now)
⟨14 unchanged words⟩ (site, A2A agent card, MCP serverdescriptioncard / server.json or OpenAPI link): GAIP fetches the card, validates it against the A2A, MCP or OpenAPI spec, tests that its endpoint answers and returns READY / FIXES_NEEDED /UNREACHABLE with concrete fixes andNO_AGENT_CARDa/receipt.UNREACHABLE. Or pass the card itself as `metadata`. Every finding has a severity, JSON path, plain-English fix and spec link, plus a 0-100 score and a JSON Patch with placeholders; the receipt verifies with verify_gaip_receipt.
Added "gaip_quickstart"; changed the definition of "assurance_complete", "assurance_prepare", "assurance_verify" and 9 more (12 tools before, 13 now)
CheckFinish abuyer-submittedBuyer Assurance check: GAIP replays the publicresponseservice (orlatercheckspublicareplayresponse you submit) againstregisteredthe terms from assurance_prepare
Added "gaip_quickstart"; changed the definition of "assurance_complete", "assurance_prepare", "assurance_verify" and 9 more (12 tools before, 13 now)
CheckFinish abuyer-submittedBuyer Assurance check: GAIP replays the publicresponseservice (orlatercheckspublicareplayresponse you submit) againstregisteredthe terms from assurance_prepare
Added "assurance_complete", "assurance_prepare", "assurance_verify" and 2 more (7 tools before, 12 now)
Check a buyer-submitted public response or later public replay against registered terms and verify the retained receipt.
Preflight one buyer-selected public service and record caller-declared delivery checks. No supplier appointment, call, contract or payment.
Verify a retained Buyer Assurance terms or delivery receipt without assigning external-use credit.
Export a no-fault evidence bundle for a retained delivery receipt.
Register caller-declared checks for a public HTTPS service. This does not verify seller agreement or payment.
Added "assurance_complete", "assurance_prepare", "assurance_verify" and 2 more (7 tools before, 12 now)
Check a buyer-submitted public response or later public replay against registered terms and verify the retained receipt.
Preflight one buyer-selected public service and record caller-declared delivery checks. No supplier appointment, call, contract or payment.
Verify a retained Buyer Assurance terms or delivery receipt without assigning external-use credit.
Export a no-fault evidence bundle for a retained delivery receipt.
Register caller-declared checks for a public HTTPS service. This does not verify seller agreement or payment.
Certificate recorded, valid to 2026-12-18
Authorization not required
First tool surface recorded: 7 tools (server version 1.0.0)
https://www.gaipagents.com/mcp (mcp_streamable_http) — from mcp_registry
Added "gaip_compare_supplier_snapshots", "gaip_diagnose_integration_failure" and "gaip_verify_supplier_claims" (4 tools before, 7 now)
Compare supplier snapshots — Compare two supplied public snapshots and return material changes with a retained receipt. The separate scheduled GAIP cohort watch is published at /v1/free/commercial/watch-status.
Diagnose integration failure — Classify a supplied public handshake or task failure and return a bounded repair plan and retained receipt. No patch or replay of another operator's system.
Compare supplier claims — Compare supplied public claims and task observations, check declared metadata, and return dispositions with a retained receipt. No supplier approval or independent claim verification.
Added "witness_delivery" (3 tools before, 4 now)
Check public delivery evidence — Compare a registered caller assertion against a later public replay or submitted public response. Unknown when evidence is unavailable; no original transaction or seller agreement proof.
Added "check_agent_conformance" and "evaluate_public_art_evidence"; removed "assess_agent_card", "compare_agent_candidates", "gaip_capture_dispute_evidence" and 18 more; changed the definition of "verify_gaip_receipt" (22 tools before, 3 now)
VerifyUse this when you have a GAIP receipt ID and need to check retainedreceipt'shistory, hash chain and Merkleinclusionproof.proofIntegritybydoesexactnotid.establish the truth of the underlying claim.
Added "gaip_capture_dispute_evidence", "gaip_check_evidence_freshness", "gaip_check_reachability" and 5 more (14 tools before, 22 now)
Capture symmetric dispute evidence — Quarantine an attributed structured evidence submission with an equal response path. GAIP does not determine fault, breach or liability.
Check evidence freshness — Classify supplied evidence as current, aging, stale for re-verification, superseded, revoked or unknown without deleting history.
Check timestamped reachability — Perform an optional bounded public HTTPS probe and report timestamped status from one vantage point; not a reliability verdict.
Get GAIP outbound sales authority — Return the active S0-S1 revenue-operations boundary and the safeguards required before S2 B2B email outreach.
Added "gaip_get_counterparty_evidence", "gaip_get_external_service_qualification", "gaip_prepare_delegation_evidence" and 3 more (8 tools before, 14 now)
Get counterparty evidence — Return task-specific evidence coverage for a supplied public counterparty reference without a score, certification, recommendation or delegation decision.
Qualify GAIP external services — Run bounded read-only probes and return explicit connected, degraded, metadata-only, blocked or not-registered states.
Prepare delegation evidence — Package supplied public evidence for a caller-owned delegation decision without a live probe, verdict or authority expansion.
Run governed agent loop — Execute the existing Broker → Integration → Trust → Specialist loop for a £0 public read-only task and retain its receipt.
Certificate recorded, valid to 2026-10-27
Authorization not required
Unknown → Live
First tool surface recorded: 8 tools (server version 1.1.0)
https://gaip-agent-to-art-prototype-production.up.railway.app/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 40 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨26 unchanged words⟩ page `url` and the `claim`. Returns what theshoppageshowsshowednow,besidewhetherwhatitthematchesclaim said, and a signed, dated receipt. Second Look ⟨14 unchanged words⟩
⟨106 unchanged words⟩ (optional).","type":"boolean"},"mandate_ref":{"description":"Optional: your own reference to the shopper's mandate for this purchase. Kept only as a keyed hash (mandate_sha256) on the receipt, never in clear.","maxLength":200,"type":"string"},"price":{"description":"Claimed price, e.g. ⟨65 unchanged words⟩
{"destructiveHint":false,"idempotentHint":falsetrue,"openWorldHint":false,"readOnlyHint":falsetrue}
{"destructiveHint":false,"idempotentHint":falsetrue,"openWorldHint":false,"readOnlyHint":falsetrue}
⟨24 unchanged words⟩ `url` (+ `checks`, the `result` you got);, or `claims`arewithcompared`observations`.withReturns`observations`ayouresultsupply.per item and a receipt. Free, no account; records a GAIP receipt ⟨7 unchanged words⟩
⟨16 unchanged words⟩ be alerted when it changes. Pass its `url`for:no-accountreturns feed links and its latest dated changes; add `webhook_url`to registerfor a free watch (checked every 24 h, ⟨21 unchanged words⟩
⟨24 unchanged words⟩ `url` (+ `checks`, the `result` you got);, or `claims`arewithcompared`observations`.withReturns`observations`ayouresultsupply.per item and a receipt. Free, no account; records a GAIP receipt ⟨7 unchanged words⟩
⟨16 unchanged words⟩ be alerted when it changes. Pass its `url`for:no-accountreturns feed links and its latest dated changes; add `webhook_url`to registerfor a free watch (checked every 24 h, ⟨21 unchanged words⟩
⟨84 unchanged words⟩ OpenAPI document. GAIP fetches, validates and reach-testsit.it; an MCP endpoint gets a read-only handshake (initialize, tools/list).","format":"uri","maxLength":2048,"type":"string"},"verbose":{"default":false,"description":"Optional: true returns the full result with every underlying field. Default: a short answer.","type":"boolean"}},"required":["url"],"type":"object"}
Use this when an agent, MCP or API callfailed and you are asked why or how to fix it.failed.PassPaste the `error` text and/or `http_status`; add the service `url`to see changes GAIP observed aroundifthen.known. Returns thelikelycause,when totheretry,exact fixsteps(e.g. the missing argument), retry_after_seconds and a receipt. Free, no account; records ⟨10 unchanged words⟩
⟨111 unchanged words⟩ ","maxLength":2048,"type":"string"},"verbose":{"default":false,"description":"Optional: true returns the full result with every underlying field. Default: a short answer.","type":"boolean"}},"type":"object"}
Verifyclaims,acitationsdelivery ora deliverycitations
Use this when asked whethersomethinga service delivered what was promised,whether claims are true,or whethercitations arecitedaccurate.pagesPasscontain`citations`,theorquoted`claims`text.(+Pass`url`)`citations`, or a service `url`plus(+ `checks`, the `result` yougot.got);Returns`claims`whicharecheckcomparedranwithand`observations`eachyouresult.supply. Free, no account; records a GAIP receipt ⟨7 unchanged words⟩
⟨12 unchanged words⟩ Optional (delivery): what a good response is, e.g. [{\"id\":http_status_in\"http_status_in\", \"allowed\": [200]}, {\"id\": \"json_parses\"}]. Default: HTTP 200 and a non-empty body.","examples":[[{"allowed":[200],"id":"http_status_in"},{"id":"content_type_is","value":"application/json"},{"id":"non_empty"},{"id":"json_parses"}],[{"allowed":[200],"id":"http_status_in"},{"id":"json_required_keys","keys":["status"]},{"id":"json_path_equals","path":"status","value":"ok"},{"id":"max_latency_ms","limit":2000}]],"items":{"additionalProperties":false,"properties":{"allowed":{"description":"http_status_in: the acceptable HTTP statuses, e.g. [200].","items":{"maximum":599,"minimum":100,"type":"integer"},"maxItems":10,"minItems":1,"type":"array"},"id":{"description":"http_status_in (allowed), content_type_is (value), non_empty,json_parses.json_parses,Defaultjson_required_keys (keys), json_path_equals (path, value), max_latency_ms (limit), max_bytes (limit), text_contains (value), regex (pattern).","enum":["http_status_in","content_type_is","non_empty","json_parses","json_required_keys","json_path_equals","max_latency_ms","max_bytes","text_contains","regex"],"type":"string"},"keys":{"description":"json_required_keys:
⟨67 unchanged words⟩ "maxLength":2048,"type":"string"},"verbose":{"default":false,"description":"Optional: true returns the full result with every underlying field. Default: a short answer.","type":"boolean"},"webhook_url":{"description":"Optional: your own ⟨27 unchanged words⟩
⟨84 unchanged words⟩ OpenAPI document. GAIP fetches, validates and reach-testsit.it; an MCP endpoint gets a read-only handshake (initialize, tools/list).","format":"uri","maxLength":2048,"type":"string"},"verbose":{"default":false,"description":"Optional: true returns the full result with every underlying field. Default: a short answer.","type":"boolean"}},"required":["url"],"type":"object"}
Use this when an agent, MCP or API callfailed and you are asked why or how to fix it.failed.PassPaste the `error` text and/or `http_status`; add the service `url`to see changes GAIP observed aroundifthen.known. Returns thelikelycause,when totheretry,exact fixsteps(e.g. the missing argument), retry_after_seconds and a receipt. Free, no account; records ⟨10 unchanged words⟩
⟨111 unchanged words⟩ ","maxLength":2048,"type":"string"},"verbose":{"default":false,"description":"Optional: true returns the full result with every underlying field. Default: a short answer.","type":"boolean"}},"type":"object"}
Verifyclaims,acitationsdelivery ora deliverycitations
Use this when asked whethersomethinga service delivered what was promised,whether claims are true,or whethercitations arecitedaccurate.pagesPasscontain`citations`,theorquoted`claims`text.(+Pass`url`)`citations`, or a service `url`plus(+ `checks`, the `result` yougot.got);Returns`claims`whicharecheckcomparedranwithand`observations`eachyouresult.supply. Free, no account; records a GAIP receipt ⟨7 unchanged words⟩
⟨12 unchanged words⟩ Optional (delivery): what a good response is, e.g. [{\"id\":http_status_in\"http_status_in\", \"allowed\": [200]}, {\"id\": \"json_parses\"}]. Default: HTTP 200 and a non-empty body.","examples":[[{"allowed":[200],"id":"http_status_in"},{"id":"content_type_is","value":"application/json"},{"id":"non_empty"},{"id":"json_parses"}],[{"allowed":[200],"id":"http_status_in"},{"id":"json_required_keys","keys":["status"]},{"id":"json_path_equals","path":"status","value":"ok"},{"id":"max_latency_ms","limit":2000}]],"items":{"additionalProperties":false,"properties":{"allowed":{"description":"http_status_in: the acceptable HTTP statuses, e.g. [200].","items":{"maximum":599,"minimum":100,"type":"integer"},"maxItems":10,"minItems":1,"type":"array"},"id":{"description":"http_status_in (allowed), content_type_is (value), non_empty,json_parses.json_parses,Defaultjson_required_keys (keys), json_path_equals (path, value), max_latency_ms (limit), max_bytes (limit), text_contains (value), regex (pattern).","enum":["http_status_in","content_type_is","non_empty","json_parses","json_required_keys","json_path_equals","max_latency_ms","max_bytes","text_contains","regex"],"type":"string"},"keys":{"description":"json_required_keys:
⟨67 unchanged words⟩ "maxLength":2048,"type":"string"},"verbose":{"default":false,"description":"Optional: true returns the full result with every underlying field. Default: a short answer.","type":"boolean"},"webhook_url":{"description":"Optional: your own ⟨27 unchanged words⟩
Watch an agent or MCP server for changes — Use this when asked to keep an eye on an agent or MCP server, or to be alerted when it changes. Pass its `url` for no-account feed links and its latest dated changes; add `webhook_url` to register a free watch (checked every 24 h, signed webhook on change). Free, no account; with a webhook it records a watch. Inputs must be public and non-personal.
Complete a buyer-side delivery check — 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.
Prepare a buyer-side delivery check — 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.
Verify a Buyer Assurance receipt — 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.
Check an AI agent or MCP server — Use this when asked to check an AI agent or MCP server: does it work, is it reachable, is its card valid ("check this agent", "is this MCP server up?"). Pass just its `url`. Returns READY / FIXES_NEEDED / NO_AGENT_CARD / UNREACHABLE with fixes and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Check public art evidence — Use this when asked whether public NFT or digital-art records agree (creator, title, edition, contract, token). Pass a `question` and `evidence_items`. Returns AGREES / CONFLICT / SINGLE_SOURCE per field with a receipt. URLs are not fetched; no authenticity, ownership or price finding. Free, read-only, no account; inputs must be public and non-personal.
Verify citations and quotes — 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.
What changed between two versions — Use this when asked what changed between two versions of an agent card, MCP server description or OpenAPI document ("did this API break?"). Pass `prior` and `current`. Returns each change as BREAKING / NON_BREAKING / INFO with migration notes and a receipt. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Why did my agent call fail? — Use this when an agent, MCP or API call failed ("why did my call fail?", "what does this 429 mean?"). Pass the `failure` ({code, detail}) or the raw error text. Returns the likely cause, when and how to retry, fix steps and a receipt. GAIP touches no other system. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Build an evidence pack — 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.
Build an incident evidence bundle — 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.
What changed recently (manifest log) — Use this when asked which MCP servers or agents changed recently ("what changed this week?"). Optional `since` (RFC 3339), `target_id`, `limit` (max 100). Returns the Observatory's hash-chained log of manifest changes: before/after hashes, neutral facts, receipts. Free, read-only, no account; inputs must be public and non-personal.
Did the task deliver, and at what cost? — Use this when asked whether an outcome-priced task delivered and what it cost. Pass `episode_id`, `task` (acceptance_criteria), `delivery` (status) and `costs`. Returns a delivery, downstream-use and cost dossier with a receipt. Unverified claims stay marked; no ROI claim. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Look up an MCP server's or agent's history — Use this when asked about an MCP server's or agent's history ("has this server changed?", "was it up last week?"). Pass its `url` or `name`. Returns dated facts the Agent Observatory observed: status history, manifest hash, conformance codes, change log. Not an assessment. Free, read-only, no account; inputs must be public and non-personal.
Start here: try GAIP in one call — Use this first when you are unsure which GAIP tool fits, or to see what GAIP does. No input. Returns 3-5 ready-to-run calls against real public targets, a live sample check and an example for every tool. Free, read-only, no account; inputs must be public and non-personal.
Export a GAIP receipt — 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). Unsigned; integrity via hash chain and Merkle proof; no on-chain write. Free, read-only, no account; inputs must be public and non-personal.
What changed since my last call — Use this when coming back and asking "what changed since last time?". Pass the `continuity_handle` from any earlier GAIP result. Returns new watch events, verdict changes on targets you checked and receipts added under your handle. Reads only your own records. Free, read-only, no account; inputs must be public and non-personal.
Why is my supplier failing? — Use this when a supplier agent or API you depend on started failing ("did something change on their side?"). Pass its `supplier_url` and the `failure`. Returns the diagnosis plus changes GAIP observed around then (correlated in time, not causation), with receipts. Free, read-only, no account; inputs must be public and non-personal.
Verify an agent's or supplier's claims — Use this when asked to verify what an agent, API or supplier claims ("verify these claims"). Pass `claims` (each with an `id`), your `observations` and its `metadata`. Returns OBSERVED_AS_REPORTED / CONTRADICTED / MIXED / UNTESTED per claim with a receipt. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Read watch change events — 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.
List my watches — 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.
Watch an agent or MCP server for changes — 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.
Remove a watch — 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.
What evidence exists about this agent? — 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.
Which agent can do this task? — Use this when choosing which agent to hand a task to ("which of these agents can do X?"). Pass `task_class` and `candidates` (A2A agent cards). Returns callable candidates ordered by declared skill match (not a quality ranking), held ones with reasons and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Verify a GAIP receipt — 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.
Did the service deliver? — 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 and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Export a delivery evidence bundle — Use this when a witnessed delivery failed and you need to share the facts with the other party. Pass the delivery `receipt_id`. Returns a neutral, no-fault evidence bundle with verifiable receipts. Free, read-only, no account; inputs must be public and non-personal.
Register what a service should deliver — 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. Returns a `terms_id`; then call witness_delivery. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Watch an agent or MCP server for changes — Use this when asked to keep an eye on an agent or MCP server, or to be alerted when it changes. Pass its `url` for no-account feed links and its latest dated changes; add `webhook_url` to register a free watch (checked every 24 h, signed webhook on change). Free, no account; with a webhook it records a watch. Inputs must be public and non-personal.
Finish a Buyer Assurance check: GAIP replays the public service (or checks a response you submit) against the terms from assurance_prepare and returns a delivery receipt. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Buyer-side assurance in one step: preflight a public service you chose and record the delivery checks you expect. Returns a `terms_id`; finish with assurance_complete and check any receipt with assurance_verify. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Verify a Buyer Assurance terms or delivery receipt by ID. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Check an agent interface — Check any AI agent before you install or call it. Pass just its `url` (site, A2A agent card, MCP server card / server.json or OpenAPI link): GAIP fetches the card, validates it against the A2A, MCP or OpenAPI spec, tests that its endpoint answers and returns READY / FIXES_NEEDED / NO_AGENT_CARD / UNREACHABLE. Or pass the card itself as `metadata`. Every finding has a severity, JSON path, plain-English fix and spec link, plus a 0-100 score and a JSON Patch with placeholders; the receipt verifies with verify_gaip_receipt. Set mode=VERIFY_BEFORE_CALL with `target` to get task-specific evidence a…
Check public art evidence — Compare public digital-art / NFT records (marketplace listing, block explorer, artist catalogue) field by field. Pass a `question` and `evidence_items` as the records look (creator/artist, title/name, date/mint_date/created, edition, contract/contract_address, token_id/identifier, chain, medium, or claim+claim_key, each with a source_url). Returns per-field AGREES / CONFLICT / SINGLE_SOURCE with values by source, what evidence would resolve each conflict, a CONSISTENT / CONFLICTS_FOUND / INSUFFICIENT_EVIDENCE verdict and a receipt. URLs are not fetched; does not establish authenticity, owners…
Witness citations — Check that cited web pages contain the quoted text. Pass `citations` (1-20 {url, quote?, claimed_title?, claimed_date?}). GAIP fetches each public page once (robots.txt respected), and per citation returns QUOTE_FOUND / QUOTE_NOT_FOUND_IN_FETCHED_VERSION / SOURCE_UNREACHABLE / SOURCE_NOT_FOUND_404 / CONTENT_NOT_TEXT / ROBOTS_DISALLOWED, the fetch time, HTTP status, SHA-256 of the fetched bytes, a matched excerpt of at most 300 characters and a receipt. No page copies are kept. Facts about the fetched version only; pages change. Not legal advice and not a judgement on any author. Free, read-on…
Compare supplier snapshots — Detect breaking changes in an agent or API you depend on. Pass `prior` and `current`: two versions of an A2A agent card, MCP server description, OpenAPI document or a {version, endpoint, permissions, ...} snapshot. Returns each change (skill/tool/operation removed, auth added, endpoint moved, HTTPS downgrade, major version, capability or mode removed) as BREAKING / NON_BREAKING / INFO with impact and migration notes, an overall verdict and a receipt. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Diagnose integration failure — An agent-to-agent call failed? Pass the `failure` ({code, detail}): an HTTP status (400-504), a JSON-RPC, A2A or MCP error code, or the raw error text (TLS, DNS, connection refused, timeout, schema mismatch). Returns a specific diagnosis, severity, whether and how to retry (attempts, backoff, Retry-After), ordered fix steps, the likely owner, evidence to capture and a receipt. Proposal only; GAIP does not touch the other system. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Build an evidence pack — An insurer, auditor or buyer asking what evidence exists about an agent or supplier? Pass its `subject` (public id or https URL), an optional `scope` (receipt_ids, since/until, categories, max_items) and optional `requester` (continuity_handle to include your own receipts). Get conformance, watch, witness, repair and incident records, each with a verify URL and Merkle proof, a manifest of counts and gaps, and a reference table of where it may help locate evidence for AIUC-1 / ISO/IEC 42001 reviews. An evidence compilation, not a certification or advice. If BLOCKED, read `hint`. Free, read-onl…
Build an incident evidence bundle — Something went wrong with an agent and you need the facts in order? Pass the `receipt_ids` you hold and attributed `observations` ({source, statement, observed_at_utc}). GAIP verifies each receipt, orders a timeline, attributes every entry to its source and adds an EU AI Act Article 73 reference aid. No fault, cause or liability finding; not a regulatory filing. If BLOCKED, read `hint`. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Read manifest change log — Read the Agent Observatory's hash-chained Manifest Transparency Log: which published manifests changed, before/after hashes, neutral change facts and receipts. Optional `target_id`, `since` (RFC 3339), `limit` (max 100). Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Measure task outcome and value — Independent outcome evidence for outcome-priced contracts: record what a task actually delivered and what the caller says it cost. Pass `counterparty_id`, `task_class`, `episode_id`, the `task` (acceptance_criteria), `delivery` (status) and `costs`; get a delivery, downstream-use and full-cost dossier with a receipt. Missing costs and unverified claims stay explicit; no ROI claim. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Look up Observatory facts — What has an MCP server or A2A agent published over time? Pass a `url` or `name` to find its Observatory target_id, or a `target_id` for its dated facts: status history, manifest hash and bounded snapshot, conformance codes, metadata-signal rules (pattern present / not present) and the receipted change log. Facts observed at a time; not an assessment of safety or quality. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Try GAIP in one call — Start here. No input needed. Returns what GAIP can do for an agent, a live sample result, and a ready-to-run argument set for every GAIP tool. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Export a GAIP receipt — Need a GAIP receipt in another ecosystem's shape? Pass `receipt_id` and `format`: `x402` (Settlement Attestation Receipt proposal style), `erc8004` (validation-response shape for off-chain publication) or `vc` (W3C-VC-like JSON-LD). Unsigned: integrity via hash chain and Merkle proof only; no on-chain write. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Diagnose a supplier failure with recent changes — A supplier agent or API started failing? Pass the `failure` ({code, detail}), the supplier's public `supplier_url` and optionally `failure_started_at`. Returns the Integration Repair diagnosis plus the supplier card and readiness changes GAIP observed around that time, each with a receipt and labelled correlated in time (not causation), next steps and an offer to watch the supplier. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Compare supplier claims — Before relying on another agent or API, check its claims against what was actually observed. Pass `claims` (each with an `id`), optional `observations` ({claim_id, result: PASS|FAIL, detail}) and its `metadata`. Returns per-claim OBSERVED_AS_REPORTED / CONTRADICTED / MIXED / UNTESTED with pass/fail counts and evidence, warnings for unusable observations, an interface check and a receipt. Not a certification. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Read watch change events — Read recent change events for your watches (all, or one `watch_id`): verdict before and after, a compact change summary, the event receipt and whether the webhook delivery succeeded. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
List my watches — See your watches: kind, target, last verdict, last and next check, and webhook endpoint (never the secret). Pass your `continuity_handle`. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Watch an agent, card or delivery — Keep watching an agent you depend on, for free. kind=AGENT_READINESS re-checks an agent URL's readiness, SUPPLIER_CARD re-fetches its published card and flags BREAKING / NON_BREAKING changes, DELIVERY_TERMS replays witness terms (terms_id from witness_register_terms) and flags NOT_MET. Pass the `continuity_handle` an earlier GAIP result gave you (it proves the watches are yours) and optionally your own public https `webhook_url`: changes are POSTed there signed with X-GAIP-Signature (HMAC-SHA256; the `webhook_secret` is shown once). FREE: 3 watches, each checked at most every 24 hours; every …
Remove a watch — Stop a watch: pass your `continuity_handle` and the `watch_id`. Its stored events are deleted; retained receipts stay verifiable. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Inspect counterparty evidence — Need evidence about an agent before you delegate to it? Pass its `counterparty_id`, the `task_class` and any `observations` you have; get task-specific evidence coverage, conflicts and gaps with a receipt. No universal trust score or decision. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Preflight candidate agents — Choosing between agents or services for a task? Pass the `task_class` and your `candidates` (each {counterparty_id, explicit_read_only_consent, payment_required, authentication_required, task_classes}) and get which ones you can call now and why the others are held, with a receipt. No ranking, outreach or appointment. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Verify a GAIP receipt — Verify any GAIP receipt ID: retained history, 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; calling declares that (data_classification defaults to PUBLIC).
Check public delivery evidence — Check a service's real response against terms you registered with witness_register_terms. mode=PUBLIC_REPLAY makes GAIP fetch the public URL itself; mode=BUYER_SUBMITTED checks a response you pass in. Returns PASS/FAIL/UNKNOWN per check and a receipt. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Export a neutral, no-fault evidence bundle for a witnessed delivery receipt, e.g. to share with the other party. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
About to depend on a public HTTPS service? Register what a good response looks like (`checks`: http_status_in, content_type_is, non_empty, json_parses) and get a `terms_id`. Then call witness_delivery to have GAIP independently check what the service returns. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
⟨6 unchanged words⟩ 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":[" ⟨4 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}
before
—after
Prepare a buyer-side delivery checkBuyer-sideUseassurancethisinwhenoneyou,step:thepreflightbuyer, chose a public serviceyou choseandrecordwanttheits deliverycheckscheckedyouendexpect.toReturnsend.aPass`terms_id`;`service_url`,finish`checks`withandassurance_completeexplicit_read_only_consent=true. GAIP preflights it andcheckrecordsanyyourreceiptchecks;withreturnsassurance_verify.aFree,`terms_id`read-only,fornoassurance_complete.account.Free,Inputsnomustaccount;berecordspublicaandGAIPnon-personal;receiptcallingonly.declaresInputsthatmust(data_classificationbedefaultspublictoandPUBLIC).non-personal.
⟨16 unchanged words⟩ weather_forecast"}],"properties":{"checks":{"description":"Checks: http_status_in {allowed}, content_type_is {value}, non_empty, json_parses.","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":[" ⟨5 unchanged words⟩
{"destructiveHint":false,"openWorldHintidempotentHint":false,"openWorldHint":true,"readOnlyHint":false}
before
—after
Verify a Buyer Assurance receiptVerifyUse this when you hold a Buyer Assurance terms or deliveryreceiptreceipt_idbyandID.want to confirm it. Returns the retained record and its integrity proof (integrity only). Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨6 unchanged words⟩ assurance_complete>"}],"properties":{"receipt_id":{"description":"A receipt_id returned by an earlier GAIP call.","type":"string"}},"required":["receipt_id ⟨2 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
Check an AI agentinterfaceor MCP server
CheckUseanythisAIwhenagentaskedbeforetoyoucheckinstallanorAIcallagentit.orPassMCPjustserver:itsdoes`url`it(sitework,A2Aisagentitcardreachable,MCPisserverits card/ server.json or OpenAPI link): GAIPvalidfetches("checkthethiscardagent",validates it against the"isA2A,this MCPor OpenAPIserverspec,up?").testsPassthatjust itsendpoint answers and`url`.returnsReturns READY / FIXES_NEEDED / NO_AGENT_CARD /UNREACHABLE. Or pass the card itself as `metadata`. Every finding has a severity, JSON path, plain-English fix and spec link, plus a 0-100 score and a JSON Patch with placeholders; the receipt verifies with verify_gaip_receipt. Set mode=VERIFY_BEFORE_CALLUNREACHABLE with`target` to get task-specific evidencefixesaboutand acounterparty instead.receipt. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
{"additionalProperties":false,"examples":[{"url":"https://www.gaipagents.com/.well-known/agent-card.json"},{"metadata":{"name":"GAIP Broker","protocolVersion ⟨6 unchanged words⟩ :{"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"declared_identity":{"description":"Optional: the name the agent claims.","type":"string"},"expected_endpoint":{"description" ⟨15 unchanged words⟩ ,"type":"string"},"intended_task":{"description":"VERIFY_BEFORE_CALL: what you intend to delegate.","type":"string"},"metadata":{"description":"Alternative to url: the agent card or MCP/OpenAPI document itself.","type":"object"},"mode":{"description":"CONFORMANCE (default) checks the interface; VERIFY_BEFORE_CALL returns task-specific evidence about `target` for `intended_task`.","enum":["CONFORMANCE","VERIFY_BEFORE_CALL"],"type" ⟨36 unchanged words⟩ 2048,"type":"string"},"target":{"description":"VERIFY_BEFORE_CALL: the counterparty URL or reference.","oneOf":[{"format":"uri","type ⟨39 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":falsetrue,"readOnlyHint":true}
Compare public digital-art / NFT records (marketplace listing, block explorer, artist catalogue) field byUsefield.thisPasswhenaasked`question`whetherandpublic`evidence_items`NFTasorthedigital-art recordslookagree (creator/artist, title/namecreator,date/mint_date/createdtitle, edition,contract/contract_address, token_id/identifier, chain, mediumcontract,ortoken).claim+claim_key,Passeachawith`question`aandsource_url).`evidence_items`. Returnsper-fieldAGREES / CONFLICT / SINGLE_SOURCEwith values by source, what evidence would resolve each conflict, a CONSISTENT / CONFLICTS_FOUND / INSUFFICIENT_EVIDENCEperverdictfieldandwith a receipt. URLs are not fetched;does not establishno authenticity, ownership orprice.price finding. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨72 unchanged words⟩ 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" ⟨8 unchanged words⟩ },"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"},"evidence_items":{"description":"Records as they appear, each with a source_url (not fetched).","items":{"type":"object"},"type":"array"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","type":"string"},"question":{"description":"What you want to know about the records.","type":"string"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"}},"required":[" ⟨4 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
WitnessVerify citations and quotes
CheckUsethatthiscitedwhenwebaskedpagestocontainverifythecitationsquotedortext.quotes ("do these sources really say this?"). Pass `citations` (1-20 {url,quote?, claimed_title?, claimed_date?quote}). GAIP fetches eachpublicpage once (robots.txt respected), and per citation; returns QUOTE_FOUND / QUOTE_NOT_FOUND_IN_FETCHED_VERSION /SOURCE_UNREACHABLE / SOURCE_NOT_FOUND_404 / CONTENT_NOT_TEXT / ROBOTS_DISALLOWED, the fetch time, HTTP status, SHA-256 of the fetched bytesSOURCE_UNREACHABLE...,a matchedan excerptof at most 300 charactersand a receipt.No page copies are kept. Facts about the fetched version only; pages change. Not legal advice and not a judgement on any author.Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨11 unchanged words⟩ }]}],"properties":{"citations":{"description":"1-20 citations, each {url, quote?, claimed_title?, claimed_date?}.","items":{"additionalProperties":false,"properties":{" ⟨31 unchanged words⟩ "array"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"], ⟨6 unchanged words⟩
CompareWhatsupplierchangedsnapshotsbetween two versions
Detect breaking changes in an agent or API youUsedependthison.whenPassasked`prior`whatandchanged`current`:between two versions of anA2Aagent card, MCP server description,or OpenAPI documentor("didathis{version,APIendpoint,break?").permissions,Pass...}`prior`snapshot.and `current`. Returns each change(skill/tool/operation removed, auth added, endpoint moved, HTTPS downgrade, major version, capability or mode removed)as BREAKING / NON_BREAKING / INFO withimpact andmigration notes,an overall verdictand a receipt. Free,read-only,noaccount. Inputs mustaccount;berecordspublicaandGAIPnon-personal;receiptcallingonly.declaresInputsthatmust(data_classificationbedefaultspublictoandPUBLIC).non-personal.
⟨57 unchanged words⟩ 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" ⟨17 unchanged words⟩ ,"type":"string"},"current":{"description":"The later version, same kind as `prior`.","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"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","type":"string"},"prior":{"description":"The earlier version: agent card, MCP server description, OpenAPI document or snapshot.","type":"object"},"protocol":{"description" ⟨13 unchanged words⟩ ,"type":"string"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"},"task_class":{"default":"supplier_snapshot_comparison","description":"Optional: short name of the task, e.g. weather_forecast.","type":"string"}},"required": ⟨4 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
DiagnoseWhyintegrationdidfailuremy agent call fail?
AnUseagent-to-agentthiscallwhenfailed?anPassagent,theMCP`failure`or({code,APIdetail}):callanfailedHTTP("whystatusdid(400-504),myacallJSON-RPCfail?",A2A"whatordoesMCPthiserror429code,mean?").orPass theraw error text`failure` (TLS{code,DNS,detail})connectionorrefused,thetimeout,rawschemaerrormismatch).text. Returnsa specificthediagnosis,likelyseveritycause,whetherwhen and how to retry(attempts,backoff, Retry-After), orderedfix steps,the likely owner, evidence to captureand a receipt.Proposal only;GAIPdoes not touchtouchestheno other system. Free,read-only,noaccount. Inputs mustaccount;berecordspublicaandGAIPnon-personal;receiptcallingonly.declaresInputsthatmust(data_classificationbedefaultspublictoandPUBLIC).non-personal.
⟨16 unchanged words⟩ 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" ⟨19 unchanged words⟩ },"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"},"failure":{"description":"The error: {code, detail}. code is an HTTP status, JSON-RPC/A2A/MCP code or error text.","type":"object"},"independent_operator_id":{"description":"Optional: your operator id (recorded as a claim, not verified).","type":"string"},"protocol":{"description" ⟨13 unchanged words⟩ ,"type":"string"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"},"task_class":{"default":"integration_failure_diagnosis","description":"Optional: short name of the task, e.g. weather_forecast.","type":"string"}},"required": ⟨3 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
AnUse this when an insurer, auditor or buyeraskingasks what evidence exists about an agent orsupplier?supplier. Pass its `subject` (public id or https URL), an optional `scope` (receipt_ids, since/until, categories, max_items) and optional `requester` (continuity_handle to include your own receipts).GetReturns conformance, watch, witness, repair and incident records,eachwitha verify URL andMerkleproof, a manifest of counts and gapsproofs,and a reference table of where it may help locate evidence for AIUC-1 / ISO/IEC 42001 reviews.plusAngaps.evidenceA compilation, notacertification or advice.If BLOCKED, read `hint`.Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨14 unchanged words⟩ properties":{"requester":{"additionalProperties":false,"description":"Optional: {purpose, continuity_handle} to include your own receipts.","properties":{"continuity_handle":{"properties":{"continuity_id ⟨20 unchanged words⟩ :"object"},"scope":{"additionalProperties":false,"description":"Optional: {receipt_ids, since, until, categories, max_items}.","properties":{"categories":{"items":{ ⟨77 unchanged words⟩
SomethingUse this when something went wrong with an agent and you need the facts inorder?order. Pass the `receipt_ids` you hold and attributed`observations` ({source, statement, observed_at_utc}). GAIP verifies each receipt,`observations`.ordersReturns atimelineverified,attributes every entry to its sourcesource-attributedandtimelineaddswith an EU AI ActArticleArt. 73 reference aid. No fault, cause or liabilityfinding; not a regulatory filing. If BLOCKED, read `hint`.finding. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨37 unchanged words⟩ errors"}],"properties":{"ai_system_ref":{"description":"Optional: public id or URL of the AI system involved.","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":{" ⟨31 unchanged words⟩ ,"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"}
ReadWhatmanifestchangedchangerecently (manifest log)
Read the Agent Observatory's hash-chainedUseManifestthisTransparencywhenLog:asked whichpublishedMCPmanifestsserverschanged,orbefore/afteragentshashes,changedneutralrecentlychange("whatfactschangedandthisreceipts.week?"). Optional`target_id`,`since` (RFC 3339), `target_id`, `limit` (max 100). Returns the Observatory's hash-chained log of manifest changes: before/after hashes, neutral facts, receipts. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨8 unchanged words⟩ 00Z"}],"properties":{"limit":{"description":"Optional: maximum entries (1-100).","maximum":100,"minimum":1,"type":"integer"},"since":{"description":"Optional: RFC 3339 time, e.g. 2026-09-01T00:00:00Z.","format":"date-time","type":"string"},"target_id":{"description":"Optional: an Observatory target id (obs_...).","pattern":"^obs_[0-9a-f]{24}$"," ⟨4 unchanged words⟩
MeasureDid the taskoutcomedeliver, andvalueat what cost?
Independent outcome evidenceUseforthisoutcome-pricedwhencontracts:askedrecordwhetherwhatanaoutcome-priced taskactuallydelivered and whatthe caller saysit cost. Pass`counterparty_id`, `task_class`,`episode_id`,the`task` (acceptance_criteria), `delivery` (status) and`costs`;`costs`.getReturns a delivery, downstream-use andfull-costcost dossier with a receipt.Missing costs and unverifiedUnverified claims stayexplicit;marked; no ROI claim. Free,read-only,noaccount. Inputs mustaccount;berecordspublicaandGAIPnon-personal;receiptcallingonly.declaresInputsthatmust(data_classificationbedefaultspublictoandPUBLIC).non-personal.
⟨47 unchanged words⟩ :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; links this call to your earlier ones.","properties":{"continuity_id":{"type":"string" ⟨6 unchanged words⟩ ,"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"},"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"},"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"},"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":{
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
Look upObservatoryanfactsMCP server's or agent's history
WhatUsehasthis when asked about an MCPserverserver's orA2Aagent'sagenthistorypublished("hasoverthistime?serverPasschanged?",a"was`url`itorup`name`lasttoweek?").findPass itsObservatory target_id,`url` ora `target_id` for`name`.itsReturns dated facts the Agent Observatory observed: status history, manifest hashand bounded snapshot, conformance codes,metadata-signal rules (pattern present / not present) and the receiptedchange log.Facts observed at a time; notNot anassessment of safety or quality.assessment. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨5 unchanged words⟩ //weather.example.com/mcp"}],"properties":{"name":{"description":"Optional: server or agent name to search for.","maxLength":200,"type":"string"},"target_id":{"description":"Optional: an Observatory target id (obs_...).","pattern":"^obs_[0-9a-f]{24}$","type":"string"},"url":{"description":"Public URL of the MCP server or agent to look up.","maxLength":2048,"type":"string"}},"type":"object"}
TryStart here: try GAIP in one call
StartUsehere.thisNofirstinputwhenneeded.youReturnsare unsure which GAIP tool fits, or to see what GAIPcandoes.doNoforinput.anReturnsagent3-5 ready-to-run calls against real public targets, a live sampleresult,check anda ready-to-run argumentansetexample for everyGAIPtool. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
{"additionalProperties":false,"examples":[{}],"properties":{},"type":"object"}
NeedUse this when you need a GAIP receipt in anotherecosystem's shape?format. Pass `receipt_id` and `format`:`x402`x402 (Settlement Attestation Receipt proposalattestation style),`erc8004`erc8004 (validation-response shapefor off-chain publication) or`vc`vc (W3C-VC-like JSON-LD).Unsigned:Unsigned; integrity via hash chain and Merkleproof only;proof; no on-chain write. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨11 unchanged words⟩ tool>"}],"properties":{"format":{"description":"x402, erc8004 or vc.","enum":["x402","erc8004","vc"],"type":"string"},"receipt_id":{"description":"A receipt_id returned by an earlier GAIP call.","maxLength":128,"minLength":1,"type": ⟨6 unchanged words⟩
Diagnose a supplierWhyfailureiswithmyrecentsupplierchangesfailing?
AUse this when a supplier agent or APIstartedyoufailing?dependPassonthestarted`failure`failing ({code,"diddetail}),somethingthechangesupplier'sonpublictheir side?"). Pass its `supplier_url` andoptionallythe`failure_started_at`.`failure`. Returns theIntegration Repairdiagnosis plusthe supplier card and readinesschanges GAIP observed aroundthat time, each with a receipt and labelledthen (correlated in time,(not causation),next steps and an offer to watch thewithsupplier.receipts. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨15 unchanged words⟩ //weather.example.com/.well-known/agent-card.json"}],"properties":{"counterparty_id":{"description":"Optional: name of the supplier.","type":"string"},"data_classification":{"default":"PUBLIC","description":"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨9 unchanged words⟩ ,"type":"object"},"failure_started_at":{"description":"Optional: RFC 3339 time the failures started.","format":"date-time","type":"string"},"failures":{"description":"Optional: several failures, each {code, detail}.","maxItems":100,"minItems":1,"type":"array"},"lookback_days":{"default":14,"description":"Optional: days of GAIP observations to look back over.","maximum":30,"minimum":1,"type":"integer"},"protocol":{"description":"A2A, MCP or OPENAPI. Inferred when omitted.","enum":["A2A","MCP","OPENAPI"],"type":"string"},"supplier_url":{"description":"Public https URL of the supplier's agent card, MCP server or API.","format":"uri","maxLength":2048,"type":"string"},"task_class":{"description":"Optional: short name of the task, e.g. weather_forecast.","type":"string"}},"required":[" ⟨3 unchanged words⟩
CompareVerifysupplieran agent's or supplier's claims
BeforeUserelyingthisonwhenanotheraskedagenttoorverifyAPI,whatcheckanitsagent,claimsAPIagainstorwhatsupplierwasclaimsactually("verifyobserved.these claims"). Pass `claims` (each with an `id`),optionalyour `observations`({claim_id, result: PASS|FAIL, detail})and its `metadata`. Returnsper-claimOBSERVED_AS_REPORTED / CONTRADICTED / MIXED / UNTESTEDwith pass/fail counts andperevidence,claimwarningswithforaunusablereceipt.observationsFree,an interface check and anoreceipt.account;Notrecords acertification. Free, read-only,GAIPnoreceiptaccount.only. Inputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨49 unchanged words⟩ }]}],"properties":{"claims":{"description":"Claims to check, each {id, text}.","items":{"type":"object"},"maxItems" ⟨4 unchanged words⟩ 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" ⟨19 unchanged words⟩ },"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" ⟨18 unchanged words⟩ ,"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": ⟨4 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
ReadUserecentthischangewheneventsaskedforwhatyourchangedwatcheson(all,a watched agent oroneservice.`watch_id`)Pass your `continuity_handle` and optionally a `watch_id`. Returns recent change events: verdict before and after, acompactchange summary, theeventreceipt andwhether thewebhook deliverysucceeded.status. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨49 unchanged words⟩ ,"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":[" ⟨3 unchanged words⟩
SeeUse this when asked which agents or services you are watching. Pass yourwatches:`continuity_handle`. Returns each watch's kind, target, last verdict, last and next check,and webhook endpoint (never the secret).Pass your `continuity_handle`.Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
Watch an agent,cardordeliveryMCP server for changes
Keep watching anUseagentthisyouwhendependaskedon,toforkeepfree.ankind=AGENT_READINESSeyere-checkson an agentURL's readiness, SUPPLIER_CARD re-fetches its publishedorcardMCPandserverflags("tellBREAKINGme/ifNON_BREAKINGit changes,DELIVERY_TERMS replays witness terms (terms_idorfromgoeswitness_register_termsdown")and flags NOT_MET.. Pass the `continuity_handle`anfromearlierany GAIP resultgave you (it proves the watches are,yours)`kind` andoptionally your own public https `webhook_url`: changes are`target_url`.POSTedGAIPtherere-checkssignedeverywith24X-GAIP-Signaturehours (HMAC-SHA256; the `webhook_secret` is shown once). FREE:3 free watches),eachreceiptscheckedeachatchangemostandeverycan24callhours;youreverywebhook.changeFree,getsnoaaccount;receipt.recordsFree,aread-only,GAIPnoreceiptaccount.only. Inputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨55 unchanged words⟩ },"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":"Optional: hours between checks (24 minimum on the free tier).","maximum":168,"minimum":24,"type":"integer"},"kind":{"description":"AGENT_READINESS (agent URL), SUPPLIER_CARD (published card) or DELIVERY_TERMS (terms_id).","enum":["AGENT_READINESS","DELIVERY_TERMS","SUPPLIER_CARD" ⟨50 unchanged words⟩
StopUseathiswatch:whenpassasked 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,read-only,noaccount. Inputs mustaccount;berecordspublicaandGAIPnon-personal;receiptcallingonly.declaresInputsthatmust(data_classificationbedefaultspublictoandPUBLIC).non-personal.
⟨47 unchanged words⟩ ,"type":"object"},"watch_id":{"description":"The watch_id returned by gaip_watch_register.","type":"string"}},"required":["continuity_handle ⟨3 unchanged words⟩
Inspect counterpartyWhat evidence exists about this agent?
NeedUse this when asked what evidence exists about an agent beforeyou delegatedelegating toit?it. Pass its `counterparty_id`,the `task_class`and any`observations` you have;`observations`.getReturns task-specific evidence coverage, conflicts, gaps andgapsGAIP's own earlier checks of it, with a receipt.NoNeveruniversala trust score ordecision.recommendation. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨41 unchanged words⟩ 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" ⟨6 unchanged words⟩ ,"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"},"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 ⟨12 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
PreflightWhichcandidateagentagentscan do this task?
ChoosingUsebetweenthisagentswhenorchoosingserviceswhichforagentatotask?handPassathetask`task_class`toand("whichyourof`candidates`these(eachagents{counterparty_id,canexplicit_read_only_consent,dopayment_required,X?").authentication_required,Passtask_classes})`task_class` andget which`candidates`ones(A2Ayouagentcancards).callReturnsnowcallableandcandidateswhyorderedthebyothersdeclaredareskillheld,matchwith(not areceipt. Noquality ranking),outreachheldoronesappointment.with reasons and a receipt. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨82 unchanged words⟩ weather_forecast"}],"properties":{"candidates":{"description":"A2A agent cards as published, or {agent_card, explicit_read_only_consent}.","items":{"type":"object"},"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" ⟨8 unchanged words⟩ },"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"},"synthetic":{"description":"Optional: true marks a test call.","type":"boolean"},"task_class":{"description":"Optional: short name of the task, e.g. weather_forecast.","type":"string"}},"required":[" ⟨3 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
VerifyUseanythis when you hold a GAIP receipt_id and want to confirm it ("is this receiptID:genuine?"). Returns the retainedhistoryrecord, hash chain and Merkle inclusion proof. Integrityonly;only: it does not make the underlying claim true. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨10 unchanged words⟩ 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" ⟨6 unchanged words⟩ ,"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":[" ⟨3 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
CheckDidpublicthedeliveryserviceevidencedeliver?
CheckUseathisservice'swhenrealaskedresponsewhetheragainstatermsserviceyoudeliveredregisteredwhatwithwaswitness_register_terms.agreedmode=PUBLIC_REPLAY("didmakestheGAIPsupplierfetchdeliver?"). Pass thepublic`terms_id`URLfromitself;witness_register_termsmode=BUYER_SUBMITTEDandchecksmodeaPUBLIC_REPLAYresponse(GAIPyoufetchespassit)in.or BUYER_SUBMITTED. ReturnsPASS/FAIL/UNKNOWNPASS / FAIL / UNKNOWN per check and a receipt. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨8 unchanged words⟩ 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" ⟨8 unchanged words⟩ },"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"},"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":[" ⟨4 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true}
before
—after
Export a delivery evidence bundleExport a neutral, no-fault evidenceUsebundlethisforwhen a witnessed deliveryreceipt,failede.g.and you need to share the facts with the other party. Pass the delivery `receipt_id`. Returns a neutral, no-fault evidence bundle with verifiable receipts. Free, read-only, noaccount.account;Inputsinputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨4 unchanged words⟩ witness_delivery>"}],"properties":{"receipt_id":{"description":"A receipt_id returned by an earlier GAIP call.","type":"string"}},"required":["receipt_id ⟨2 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
before
—after
Register what a service should deliverAboutUse this when about to depend on a public HTTPSservice?serviceRegisterandwhatyouawantgoodneutralresponseevidencelooksoflikewhat(it delivers. Pass `service_url`; `checks`:http_status_in,defaultcontent_type_is,tonon_empty,HTTPjson_parses)200 andgeta`terms_id`. Thennon-emptycallbody.witness_deliveryReturnstoahave`terms_id`;GAIPthenindependentlycallcheckwitness_delivery.whatFree,thenoserviceaccount;returns.recordsFree,aread-only,GAIPnoreceiptaccount.only. Inputs must be public andnon-personal; calling declares that (data_classification defaults to PUBLIC).non-personal.
⟨12 unchanged words⟩ //weather.example.com/forecast.json"}],"properties":{"checks":{"description":"Checks: http_status_in {allowed}, content_type_is {value}, non_empty, json_parses.","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"},"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":["seller_ref","service_url","checks"],"type":"object"}
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
What changed since my last call — Use this when coming back and asking "what changed since last time?". Pass the `continuity_handle` from any earlier GAIP result. Returns new watch events, verdict changes on targets you checked and receipts added under your handle. Reads only your own records. Free, read-only, no account; inputs must be public and non-personal.
⟨22 unchanged words⟩ ,"declared_identity":{"type":"string"},"expected_endpoint":{"description":"Optional: the endpoint you expect; a different primary endpoint is reported as ENDPOINT_DRIFT.","format":"uri","type":"string"},"intended_task":{"type":"string"},"metadata" ⟨19 unchanged words⟩ enum":["A2A","MCP","OPENAPI"],"type":"string"},"source_url":{"description":"Optional: where `metadata` was published, used only to resolve relative endpoints. Never fetched.","format":"uri","maxLength":2048,"type":"string"},"target":{" ⟨43 unchanged words⟩
Compare public digital-art / NFT records (marketplace listing,on-chainblock explorer, artist catalogue)and find wherefieldtheybyconflict.field. Pass a `question` and`evidence_items`;`evidence_items`getasconflictsthe records look (creator/artist,gapstitle/name, date/mint_date/created, edition, contract/contract_address, token_id/identifier, chain, medium, or claim+claim_key, each with a source_url). Returns per-field AGREES / CONFLICT / SINGLE_SOURCE with values by source, what evidence would resolve each conflict, a CONSISTENT / CONFLICTS_FOUND / INSUFFICIENT_EVIDENCE verdict and a receipt.DoesURLs are notprovefetched; does not establish authenticity, ownership or price. Free, read-only, no account. ⟨14 unchanged words⟩
{"additionalProperties":true,"examples":[{"evidence_items":[{"chain":"ethereum","contract":"0xa11ce00000000000000000000000000000000042","creator":"Artist A","edition":"1 of 10","identifier":"7","name":"Harbour at Dusk","source":"marketplace_listing","source_url":"https://opensea.io/assets/ethereum/0xa11ce00000000000000000000000000000000042/7"},{"creatorchain":"eth","contract_address":"0xA11CE00000000000000000000000000000000042","mint_date":"2021-03-14T09:26:53Z","source":"block_explorer","source_url":"https://etherscan.io/nft/0xa11ce00000000000000000000000000000000042/7","token_id":"7"},{"artist":"Artist A","created":"2021","edition":"1/5","medium":"Digital painting","source":"onchain_metadataartist_catalogue","source_url":"https://artist-a.example/catalogue/harbour-at-dusk","title":"Harbour at Dusk"}],"question":"Do these public records agree on thecreator?creator and the edition?"}],"properties":{"continuity_handle":{"additionalProperties ⟨44 unchanged words⟩
⟨7 unchanged words⟩ API you depend on. Pass `prior` and `current`:snapshotstwo(versionversions of an A2A agent card,protocolMCP server description, OpenAPI document or a {version, endpoint, permissions,task_result...} snapshot. Returns each change (skill/tool/operation removed,claims_hashauth added, endpoint moved, HTTPS downgrade, major version, capability or mode removed)andasgetBREAKINGthe/materialNON_BREAKINGchanges/ INFO withaimpactREVIEW_CHANGEand/migrationNO_MATERIAL_CHANGE_OBSERVEDnotes,signalan overall verdict and a receipt. Free, read-only, no account. ⟨14 unchanged words⟩
⟨3 unchanged words⟩ [{"counterparty_id":"example-weather-agent","current":{"endpointcapabilities":{"streaming":true},"name":"Weather Agent","protocolVersion":"0.3.0","security":[{"bearer":[]}],"securitySchemes":{"bearer":{"scheme":"bearer","type":"http"}},"skills":[{"id":"forecast","name":"Forecast"}],"url":"https://weather.example.com/v2/mcp//weather.example.com/v2/a2a","version":"1.12.0.0"},"prior":{"endpointcapabilities":{"streaming":true},"name":"Weather Agent","protocolVersion":"0.3.0","skills":[{"id":"forecast","name":"Forecast"},{"id":"alerts","name":"Severe weather alerts"}],"url":"https://weather.example.com/mcp//weather.example.com/a2a","version":"1.01.4.0"}}],"properties":{"continuity_handle":{" ⟨75 unchanged words⟩
An agent-to-agent call failed? Pass the `failure` ({code, detail}; codes):SCHEMA_MISMATCHan HTTP status (400-504),AUTH_REQUIREDa JSON-RPC,TIMEOUTA2A or MCP error code,TASK_NOT_COMPLETEDor the raw error text (TLS,UNSUPPORTED_PROTOCOL)DNS,andconnectiongetrefused, timeout, schema mismatch). Returns a specific diagnosis,aseverity,concretewhetherrepairandstephow to retry (attempts, backoff, Retry-After), ordered fix steps, the likely owner, evidence to capture and a receipt. Proposal only; GAIP does not ⟨22 unchanged words⟩
⟨3 unchanged words⟩ counterparty_id":"example-weather-agent","failure":{"code":"SCHEMA_MISMATCH"429,"detail":"expectedHTTPfield429'temp_c',ToogotMany'temperature'Requests; Retry-After: 20"}}],"properties":{"continuity_handle":{" ⟨71 unchanged words⟩
⟨21 unchanged words⟩ ), optional `observations` ({claim_id, result: PASS|FAIL, detail}) and its `metadata`. Returns per-claim OBSERVED_AS_REPORTED / CONTRADICTED / MIXED / UNTESTEDpluswith pass/fail counts and evidence, warnings for unusable observations, an interface check and a receipt. Not a ⟨19 unchanged words⟩
⟨6 unchanged words⟩ "text":"Returns JSON forecasts over MCP"},{"id":"c2","text":"Responds within 2 seconds"}],"counterparty_id":"example-weather-agent","metadata":{" ⟨5 unchanged words⟩ ,"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":{ ⟨90 unchanged words⟩
Witness citations — Check that cited web pages contain the quoted text. Pass `citations` (1-20 {url, quote?, claimed_title?, claimed_date?}). GAIP fetches each public page once (robots.txt respected), and per citation returns QUOTE_FOUND / QUOTE_NOT_FOUND_IN_FETCHED_VERSION / SOURCE_UNREACHABLE / SOURCE_NOT_FOUND_404 / CONTENT_NOT_TEXT / ROBOTS_DISALLOWED, the fetch time, HTTP status, SHA-256 of the fetched bytes, a matched excerpt of at most 300 characters and a receipt. No page copies are kept. Facts about the fetched version only; pages change. Not legal advice and not a judgement on any author. Free, read-on…
Build an evidence pack — An insurer, auditor or buyer asking what evidence exists about an agent or supplier? Pass its `subject` (public id or https URL), an optional `scope` (receipt_ids, since/until, categories, max_items) and optional `requester` (continuity_handle to include your own receipts). Get conformance, watch, witness, repair and incident records, each with a verify URL and Merkle proof, a manifest of counts and gaps, and a reference table of where it may help locate evidence for AIUC-1 / ISO/IEC 42001 reviews. An evidence compilation, not a certification or advice. If BLOCKED, read `hint`. Free, read-onl…
Build an incident evidence bundle — Something went wrong with an agent and you need the facts in order? Pass the `receipt_ids` you hold and attributed `observations` ({source, statement, observed_at_utc}). GAIP verifies each receipt, orders a timeline, attributes every entry to its source and adds an EU AI Act Article 73 reference aid. No fault, cause or liability finding; not a regulatory filing. If BLOCKED, read `hint`. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Read manifest change log — Read the Agent Observatory's hash-chained Manifest Transparency Log: which published manifests changed, before/after hashes, neutral change facts and receipts. Optional `target_id`, `since` (RFC 3339), `limit` (max 100). Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Measure task outcome and value — Independent outcome evidence for outcome-priced contracts: record what a task actually delivered and what the caller says it cost. Pass `counterparty_id`, `task_class`, `episode_id`, the `task` (acceptance_criteria), `delivery` (status) and `costs`; get a delivery, downstream-use and full-cost dossier with a receipt. Missing costs and unverified claims stay explicit; no ROI claim. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Look up Observatory facts — What has an MCP server or A2A agent published over time? Pass a `url` or `name` to find its Observatory target_id, or a `target_id` for its dated facts: status history, manifest hash and bounded snapshot, conformance codes, metadata-signal rules (pattern present / not present) and the receipted change log. Facts observed at a time; not an assessment of safety or quality. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Export a GAIP receipt — Need a GAIP receipt in another ecosystem's shape? Pass `receipt_id` and `format`: `x402` (Settlement Attestation Receipt proposal style), `erc8004` (validation-response shape for off-chain publication) or `vc` (W3C-VC-like JSON-LD). Unsigned: integrity via hash chain and Merkle proof only; no on-chain write. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Diagnose a supplier failure with recent changes — A supplier agent or API started failing? Pass the `failure` ({code, detail}), the supplier's public `supplier_url` and optionally `failure_started_at`. Returns the Integration Repair diagnosis plus the supplier card and readiness changes GAIP observed around that time, each with a receipt and labelled correlated in time (not causation), next steps and an offer to watch the supplier. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Read watch change events — Read recent change events for your watches (all, or one `watch_id`): verdict before and after, a compact change summary, the event receipt and whether the webhook delivery succeeded. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
List my watches — See your watches: kind, target, last verdict, last and next check, and webhook endpoint (never the secret). Pass your `continuity_handle`. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Watch an agent, card or delivery — Keep watching an agent you depend on, for free. kind=AGENT_READINESS re-checks an agent URL's readiness, SUPPLIER_CARD re-fetches its published card and flags BREAKING / NON_BREAKING changes, DELIVERY_TERMS replays witness terms (terms_id from witness_register_terms) and flags NOT_MET. Pass the `continuity_handle` an earlier GAIP result gave you (it proves the watches are yours) and optionally your own public https `webhook_url`: changes are POSTed there signed with X-GAIP-Signature (HMAC-SHA256; the `webhook_secret` is shown once). FREE: 3 watches, each checked at most every 24 hours; every …
Remove a watch — Stop a watch: pass your `continuity_handle` and the `watch_id`. Its stored events are deleted; retained receipts stay verifiable. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Inspect counterparty evidence — Need evidence about an agent before you delegate to it? Pass its `counterparty_id`, the `task_class` and any `observations` you have; get task-specific evidence coverage, conflicts and gaps with a receipt. No universal trust score or decision. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Preflight candidate agents — Choosing between agents or services for a task? Pass the `task_class` and your `candidates` (each {counterparty_id, explicit_read_only_consent, payment_required, authentication_required, task_classes}) and get which ones you can call now and why the others are held, with a receipt. No ranking, outreach or appointment. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
⟨22 unchanged words⟩ ,"declared_identity":{"type":"string"},"expected_endpoint":{"description":"Optional: the endpoint you expect; a different primary endpoint is reported as ENDPOINT_DRIFT.","format":"uri","type":"string"},"intended_task":{"type":"string"},"metadata" ⟨19 unchanged words⟩ enum":["A2A","MCP","OPENAPI"],"type":"string"},"source_url":{"description":"Optional: where `metadata` was published, used only to resolve relative endpoints. Never fetched.","format":"uri","maxLength":2048,"type":"string"},"target":{" ⟨43 unchanged words⟩
Compare public digital-art / NFT records (marketplace listing,on-chainblock explorer, artist catalogue)and find wherefieldtheybyconflict.field. Pass a `question` and`evidence_items`;`evidence_items`getasconflictsthe records look (creator/artist,gapstitle/name, date/mint_date/created, edition, contract/contract_address, token_id/identifier, chain, medium, or claim+claim_key, each with a source_url). Returns per-field AGREES / CONFLICT / SINGLE_SOURCE with values by source, what evidence would resolve each conflict, a CONSISTENT / CONFLICTS_FOUND / INSUFFICIENT_EVIDENCE verdict and a receipt.DoesURLs are notprovefetched; does not establish authenticity, ownership or price. Free, read-only, no account. ⟨14 unchanged words⟩
{"additionalProperties":true,"examples":[{"evidence_items":[{"chain":"ethereum","contract":"0xa11ce00000000000000000000000000000000042","creator":"Artist A","edition":"1 of 10","identifier":"7","name":"Harbour at Dusk","source":"marketplace_listing","source_url":"https://opensea.io/assets/ethereum/0xa11ce00000000000000000000000000000000042/7"},{"creatorchain":"eth","contract_address":"0xA11CE00000000000000000000000000000000042","mint_date":"2021-03-14T09:26:53Z","source":"block_explorer","source_url":"https://etherscan.io/nft/0xa11ce00000000000000000000000000000000042/7","token_id":"7"},{"artist":"Artist A","created":"2021","edition":"1/5","medium":"Digital painting","source":"onchain_metadataartist_catalogue","source_url":"https://artist-a.example/catalogue/harbour-at-dusk","title":"Harbour at Dusk"}],"question":"Do these public records agree on thecreator?creator and the edition?"}],"properties":{"continuity_handle":{"additionalProperties ⟨44 unchanged words⟩
⟨7 unchanged words⟩ API you depend on. Pass `prior` and `current`:snapshotstwo(versionversions of an A2A agent card,protocolMCP server description, OpenAPI document or a {version, endpoint, permissions,task_result...} snapshot. Returns each change (skill/tool/operation removed,claims_hashauth added, endpoint moved, HTTPS downgrade, major version, capability or mode removed)andasgetBREAKINGthe/materialNON_BREAKINGchanges/ INFO withaimpactREVIEW_CHANGEand/migrationNO_MATERIAL_CHANGE_OBSERVEDnotes,signalan overall verdict and a receipt. Free, read-only, no account. ⟨14 unchanged words⟩
⟨3 unchanged words⟩ [{"counterparty_id":"example-weather-agent","current":{"endpointcapabilities":{"streaming":true},"name":"Weather Agent","protocolVersion":"0.3.0","security":[{"bearer":[]}],"securitySchemes":{"bearer":{"scheme":"bearer","type":"http"}},"skills":[{"id":"forecast","name":"Forecast"}],"url":"https://weather.example.com/v2/mcp//weather.example.com/v2/a2a","version":"1.12.0.0"},"prior":{"endpointcapabilities":{"streaming":true},"name":"Weather Agent","protocolVersion":"0.3.0","skills":[{"id":"forecast","name":"Forecast"},{"id":"alerts","name":"Severe weather alerts"}],"url":"https://weather.example.com/mcp//weather.example.com/a2a","version":"1.01.4.0"}}],"properties":{"continuity_handle":{" ⟨75 unchanged words⟩
An agent-to-agent call failed? Pass the `failure` ({code, detail}; codes):SCHEMA_MISMATCHan HTTP status (400-504),AUTH_REQUIREDa JSON-RPC,TIMEOUTA2A or MCP error code,TASK_NOT_COMPLETEDor the raw error text (TLS,UNSUPPORTED_PROTOCOL)DNS,andconnectiongetrefused, timeout, schema mismatch). Returns a specific diagnosis,aseverity,concretewhetherrepairandstephow to retry (attempts, backoff, Retry-After), ordered fix steps, the likely owner, evidence to capture and a receipt. Proposal only; GAIP does not ⟨22 unchanged words⟩
⟨3 unchanged words⟩ counterparty_id":"example-weather-agent","failure":{"code":"SCHEMA_MISMATCH"429,"detail":"expectedHTTPfield429'temp_c',ToogotMany'temperature'Requests; Retry-After: 20"}}],"properties":{"continuity_handle":{" ⟨71 unchanged words⟩
⟨21 unchanged words⟩ ), optional `observations` ({claim_id, result: PASS|FAIL, detail}) and its `metadata`. Returns per-claim OBSERVED_AS_REPORTED / CONTRADICTED / MIXED / UNTESTEDpluswith pass/fail counts and evidence, warnings for unusable observations, an interface check and a receipt. Not a ⟨19 unchanged words⟩
⟨6 unchanged words⟩ "text":"Returns JSON forecasts over MCP"},{"id":"c2","text":"Responds within 2 seconds"}],"counterparty_id":"example-weather-agent","metadata":{" ⟨5 unchanged words⟩ ,"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":{ ⟨90 unchanged words⟩
Witness citations — Check that cited web pages contain the quoted text. Pass `citations` (1-20 {url, quote?, claimed_title?, claimed_date?}). GAIP fetches each public page once (robots.txt respected), and per citation returns QUOTE_FOUND / QUOTE_NOT_FOUND_IN_FETCHED_VERSION / SOURCE_UNREACHABLE / SOURCE_NOT_FOUND_404 / CONTENT_NOT_TEXT / ROBOTS_DISALLOWED, the fetch time, HTTP status, SHA-256 of the fetched bytes, a matched excerpt of at most 300 characters and a receipt. No page copies are kept. Facts about the fetched version only; pages change. Not legal advice and not a judgement on any author. Free, read-on…
Build an evidence pack — An insurer, auditor or buyer asking what evidence exists about an agent or supplier? Pass its `subject` (public id or https URL), an optional `scope` (receipt_ids, since/until, categories, max_items) and optional `requester` (continuity_handle to include your own receipts). Get conformance, watch, witness, repair and incident records, each with a verify URL and Merkle proof, a manifest of counts and gaps, and a reference table of where it may help locate evidence for AIUC-1 / ISO/IEC 42001 reviews. An evidence compilation, not a certification or advice. If BLOCKED, read `hint`. Free, read-onl…
Build an incident evidence bundle — Something went wrong with an agent and you need the facts in order? Pass the `receipt_ids` you hold and attributed `observations` ({source, statement, observed_at_utc}). GAIP verifies each receipt, orders a timeline, attributes every entry to its source and adds an EU AI Act Article 73 reference aid. No fault, cause or liability finding; not a regulatory filing. If BLOCKED, read `hint`. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Read manifest change log — Read the Agent Observatory's hash-chained Manifest Transparency Log: which published manifests changed, before/after hashes, neutral change facts and receipts. Optional `target_id`, `since` (RFC 3339), `limit` (max 100). Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Measure task outcome and value — Independent outcome evidence for outcome-priced contracts: record what a task actually delivered and what the caller says it cost. Pass `counterparty_id`, `task_class`, `episode_id`, the `task` (acceptance_criteria), `delivery` (status) and `costs`; get a delivery, downstream-use and full-cost dossier with a receipt. Missing costs and unverified claims stay explicit; no ROI claim. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Look up Observatory facts — What has an MCP server or A2A agent published over time? Pass a `url` or `name` to find its Observatory target_id, or a `target_id` for its dated facts: status history, manifest hash and bounded snapshot, conformance codes, metadata-signal rules (pattern present / not present) and the receipted change log. Facts observed at a time; not an assessment of safety or quality. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Export a GAIP receipt — Need a GAIP receipt in another ecosystem's shape? Pass `receipt_id` and `format`: `x402` (Settlement Attestation Receipt proposal style), `erc8004` (validation-response shape for off-chain publication) or `vc` (W3C-VC-like JSON-LD). Unsigned: integrity via hash chain and Merkle proof only; no on-chain write. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Diagnose a supplier failure with recent changes — A supplier agent or API started failing? Pass the `failure` ({code, detail}), the supplier's public `supplier_url` and optionally `failure_started_at`. Returns the Integration Repair diagnosis plus the supplier card and readiness changes GAIP observed around that time, each with a receipt and labelled correlated in time (not causation), next steps and an offer to watch the supplier. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Read watch change events — Read recent change events for your watches (all, or one `watch_id`): verdict before and after, a compact change summary, the event receipt and whether the webhook delivery succeeded. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
List my watches — See your watches: kind, target, last verdict, last and next check, and webhook endpoint (never the secret). Pass your `continuity_handle`. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Watch an agent, card or delivery — Keep watching an agent you depend on, for free. kind=AGENT_READINESS re-checks an agent URL's readiness, SUPPLIER_CARD re-fetches its published card and flags BREAKING / NON_BREAKING changes, DELIVERY_TERMS replays witness terms (terms_id from witness_register_terms) and flags NOT_MET. Pass the `continuity_handle` an earlier GAIP result gave you (it proves the watches are yours) and optionally your own public https `webhook_url`: changes are POSTed there signed with X-GAIP-Signature (HMAC-SHA256; the `webhook_secret` is shown once). FREE: 3 watches, each checked at most every 24 hours; every …
Remove a watch — Stop a watch: pass your `continuity_handle` and the `watch_id`. Its stored events are deleted; retained receipts stay verifiable. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Inspect counterparty evidence — Need evidence about an agent before you delegate to it? Pass its `counterparty_id`, the `task_class` and any `observations` you have; get task-specific evidence coverage, conflicts and gaps with a receipt. No universal trust score or decision. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
Preflight candidate agents — Choosing between agents or services for a task? Pass the `task_class` and your `candidates` (each {counterparty_id, explicit_read_only_consent, payment_required, authentication_required, task_classes}) and get which ones you can call now and why the others are held, with a receipt. No ranking, outreach or appointment. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"examples":[{"mode":"PUBLIC_REPLAY","terms_id":"<terms_id from assurance_prepare>"}],"properties":{"body":{"type":"string" ⟨4 unchanged words⟩ {"type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"http_status":{"type":"integer"}, ⟨5 unchanged words⟩ {"type":"string"}},"required":["data_classification","terms_id","mode"],"type":"object"}
PreflightBuyer-side assurance in onebuyer-selectedstep: preflight a public service you chose and recordcaller-declaredthe deliverychecks.checksNoyousupplierexpect.appointmentReturns a `terms_id`; finish with assurance_complete and check any receipt with assurance_verify. Free,callread-only,contractnooraccount.payment.Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"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":{"maxItems":8," ⟨5 unchanged words⟩ {"type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"type":"string"}, ⟨7 unchanged words⟩ "type":"string"}},"required":["data_classification","counterparty_id","service_url","task_class","checks","explicit_read_only_consent"],"type":"object"}
Verify aretainedBuyer Assurance terms or delivery receiptwithoutbyassigningID.external-useFree,credit.read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"examples":[{"receipt_id":"<receipt_id from assurance_prepare or assurance_complete>"}],"properties":{"receipt_id":{"type":"string" ⟨4 unchanged words⟩
UseCheckthisanywhenAIinstallingagentanbefore you install or call it. Pass just its `url` (site, A2A agent card, MCP server description or OpenAPIagent.link):SupplyGAIPpublicfetchesmetadatathetocard,checkvalidates it, tests that itsdeclaredendpointinterface.answers and returns READY / FIXES_NEEDED / UNREACHABLE with concrete fixes and a receipt. Or pass the card itself as `metadata`. Setmodemode=VERIFY_BEFORE_CALLVERIFY_BEFORE_CALLwith `target` toinspectget task-specific evidence about a counterpartyevidenceinstead.beforeFree,delegation.read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":false,"examples":[{"metadata":{"name":"GAIP Broker","protocolVersion":"2025-06-18","tools":[],"url":"https://www.gaipagents.com/mcp"}}],"properties":{"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨14 unchanged words⟩ ,"type":"string"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨7 unchanged words⟩ :"string"},{"type":"object"}]},"url":{"description":"Public https link to an agent, its A2A agent card, MCP server description or OpenAPI document. GAIP fetches, validates and reach-tests it. Use instead of metadata.","format":"uri","maxLength":2048,"type":"string"}},"type":"object"}
UseComparethispublicwhendigital-artyou/haveNFTpublicrecordsdigital-art(marketplace,recordson-chain,tocatalogue)compare.andSupplyfind where they conflict. Pass aquestion`question` andevidence items;`evidence_items`;receiveget conflicts,limitsgaps and aretainedreceipt.This doesDoes not prove ownership or price. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"evidence_items":[{"creator":"Artist A","source":"marketplace_listing"},{"creator":"Artist A","source":"onchain_metadata"}],"question":"Do these public records agree on the creator?"}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨10 unchanged words⟩ ,"type":"object"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨17 unchanged words⟩ {"type":"boolean"}},"required":["data_classification","question","evidence_items"],"type":"object"}
CompareDetecttwobreakingsuppliedchangespublicin an agent or API you depend on. Pass `prior` and `current` snapshots (version, protocol, endpoint, permissions, task_result, claims_hash) andreturnget the material changes with aretainedREVIEW_CHANGE / NO_MATERIAL_CHANGE_OBSERVED signal and a receipt.TheFree,separateread-only,schedulednoGAIPaccount.cohortInputswatchmustisbepublishedpublicatand/v1/free/commercial/watch-status.non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"counterparty_id":"example-weather-agent","current":{"endpoint":"https://weather.example.com/v2/mcp","version":"1.1"},"prior":{"endpoint":"https://weather.example.com/mcp","version":"1.0"}}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨10 unchanged words⟩ ,"type":"object"},"counterparty_id":{"description":"Name or URL of the agent/service. Optional.","type":"string"},"current":{"type":"object"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨8 unchanged words⟩ {"type":"object"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨3 unchanged words⟩ {"type":"boolean"},"task_class":{"default":"supplier_snapshot_comparison","type":"string"}},"required":["data_classification","counterparty_id","task_class","protocol","prior","current"],"type":"object"}
ClassifyAnaagent-to-agentsuppliedcallpublicfailed?handshakePassorthetask`failure`failure({code, detail}; codes: SCHEMA_MISMATCH, AUTH_REQUIRED, TIMEOUT, TASK_NOT_COMPLETED, UNSUPPORTED_PROTOCOL) andreturnget aboundeddiagnosis, a concrete repairplanstep andretaineda receipt.NoProposalpatchonly;orGAIPreplaydoesofnotanothertouchoperator'sthe other system. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"counterparty_id":"example-weather-agent","failure":{"code":"SCHEMA_MISMATCH","detail":"expected field 'temp_c', got 'temperature'"}}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨10 unchanged words⟩ ,"type":"object"},"counterparty_id":{"description":"Name or URL of the agent/service. Optional.","type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨8 unchanged words⟩ {"type":"string"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨3 unchanged words⟩ {"type":"boolean"},"task_class":{"default":"integration_failure_diagnosis","type":"string"}},"required":["data_classification","counterparty_id","task_class","protocol","failure"],"type":"object"}
CompareBeforesuppliedrelyingpubliconclaimsanotherandagenttaskorobservationsAPI, checkdeclareditsmetadataclaims against what was actually observed. Pass `claims` (each with an `id`), optional `observations` ({claim_id, result: PASS|FAIL}) andreturnitsdispositions`metadata`.withReturnsaper-claimretainedOBSERVED_AS_REPORTED / CONTRADICTED / UNTESTED plus an interface check and a receipt.NoNotsupplieraapprovalcertification.orFree,independentread-only,claimnoverification.account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"claims":[{"id":"c1","text":"Returns JSON forecasts over MCP"}],"counterparty_id":"example-weather-agent","metadata":{"protocolVersion":"2025-06-18","url":"https://weather.example.com/mcp"},"observations":[{"claim_id":"c1","result":"PASS"}]}],"properties":{"claims":{"items":{"type ⟨20 unchanged words⟩ ,"type":"object"},"counterparty_id":{"description":"Name or URL of the agent/service. Optional.","type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨16 unchanged words⟩ ,"type":"array"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨3 unchanged words⟩ {"type":"boolean"},"task_class":{"default":"supplier_claim_check","type":"string"}},"required":["data_classification","counterparty_id","task_class","protocol","claims","metadata"],"type":"object"}
Use this when you haveVerifyaany GAIP receipt IDand need to check: retained history, hash chain and Merkle inclusion proof. Integrity only; it does notestablishmake thetruthunderlyingofclaimthetrue.underlyingFree,claim.read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"receipt_id":"<receipt_id returned by any GAIP tool>"}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨38 unchanged words⟩
CompareCheck aregisteredservice'scallerrealassertionresponse againstatermslateryoupublicregisteredreplaywithorwitness_register_terms.submittedmode=PUBLIC_REPLAY makes GAIP fetch the publicresponse.URLUnknownitself;whenmode=BUYER_SUBMITTEDevidencechecksisaunavailable;response you pass in. Returns PASS/FAIL/UNKNOWN per check and a receipt. Free, read-only, nooriginalaccount.transactionInputsormustsellerbeagreementpublicproof.and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"mode":"PUBLIC_REPLAY","terms_id":"<terms_id from witness_register_terms>"}],"properties":{"body":{"maxLength":32768," ⟨21 unchanged words⟩ ,"type":"object"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨20 unchanged words⟩ {"type":"string"}},"required":["data_classification","terms_id","mode"],"type":"object"}
Export a neutral, no-fault evidence bundle for aretainedwitnessed deliveryreceipt.receipt, e.g. to share with the other party. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"examples":[{"receipt_id":"<receipt_id from witness_delivery>"}],"properties":{"receipt_id":{"type":"string" ⟨4 unchanged words⟩
RegisterAboutcaller-declaredtochecksdependforon a public HTTPSservice.service?ThisRegisterdoeswhatnotaverifygoodsellerresponseagreementlooksorlikepayment.(`checks`: http_status_in, content_type_is, non_empty, json_parses) and get a `terms_id`. Then call witness_delivery to have GAIP independently check what the service returns. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"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":{"maxItems":8,"minItems":1,"type":"array"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"seller_ref":{"type":"string"},"service_url":{"type":"string"}},"required":["data_classification","seller_ref","service_url","checks"],"type":"object"}
Try GAIP in one call — Start here. No input needed. Returns what GAIP can do for an agent, a live sample result, and a ready-to-run argument set for every GAIP tool. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"examples":[{"mode":"PUBLIC_REPLAY","terms_id":"<terms_id from assurance_prepare>"}],"properties":{"body":{"type":"string" ⟨4 unchanged words⟩ {"type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"http_status":{"type":"integer"}, ⟨5 unchanged words⟩ {"type":"string"}},"required":["data_classification","terms_id","mode"],"type":"object"}
PreflightBuyer-side assurance in onebuyer-selectedstep: preflight a public service you chose and recordcaller-declaredthe deliverychecks.checksNoyousupplierexpect.appointmentReturns a `terms_id`; finish with assurance_complete and check any receipt with assurance_verify. Free,callread-only,contractnooraccount.payment.Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"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":{"maxItems":8," ⟨5 unchanged words⟩ {"type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"type":"string"}, ⟨7 unchanged words⟩ "type":"string"}},"required":["data_classification","counterparty_id","service_url","task_class","checks","explicit_read_only_consent"],"type":"object"}
Verify aretainedBuyer Assurance terms or delivery receiptwithoutbyassigningID.external-useFree,credit.read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"examples":[{"receipt_id":"<receipt_id from assurance_prepare or assurance_complete>"}],"properties":{"receipt_id":{"type":"string" ⟨4 unchanged words⟩
UseCheckthisanywhenAIinstallingagentanbefore you install or call it. Pass just its `url` (site, A2A agent card, MCP server description or OpenAPIagent.link):SupplyGAIPpublicfetchesmetadatathetocard,checkvalidates it, tests that itsdeclaredendpointinterface.answers and returns READY / FIXES_NEEDED / UNREACHABLE with concrete fixes and a receipt. Or pass the card itself as `metadata`. Setmodemode=VERIFY_BEFORE_CALLVERIFY_BEFORE_CALLwith `target` toinspectget task-specific evidence about a counterpartyevidenceinstead.beforeFree,delegation.read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":false,"examples":[{"metadata":{"name":"GAIP Broker","protocolVersion":"2025-06-18","tools":[],"url":"https://www.gaipagents.com/mcp"}}],"properties":{"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨14 unchanged words⟩ ,"type":"string"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨7 unchanged words⟩ :"string"},{"type":"object"}]},"url":{"description":"Public https link to an agent, its A2A agent card, MCP server description or OpenAPI document. GAIP fetches, validates and reach-tests it. Use instead of metadata.","format":"uri","maxLength":2048,"type":"string"}},"type":"object"}
UseComparethispublicwhendigital-artyou/haveNFTpublicrecordsdigital-art(marketplace,recordson-chain,tocatalogue)compare.andSupplyfind where they conflict. Pass aquestion`question` andevidence items;`evidence_items`;receiveget conflicts,limitsgaps and aretainedreceipt.This doesDoes not prove ownership or price. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"evidence_items":[{"creator":"Artist A","source":"marketplace_listing"},{"creator":"Artist A","source":"onchain_metadata"}],"question":"Do these public records agree on the creator?"}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨10 unchanged words⟩ ,"type":"object"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨17 unchanged words⟩ {"type":"boolean"}},"required":["data_classification","question","evidence_items"],"type":"object"}
CompareDetecttwobreakingsuppliedchangespublicin an agent or API you depend on. Pass `prior` and `current` snapshots (version, protocol, endpoint, permissions, task_result, claims_hash) andreturnget the material changes with aretainedREVIEW_CHANGE / NO_MATERIAL_CHANGE_OBSERVED signal and a receipt.TheFree,separateread-only,schedulednoGAIPaccount.cohortInputswatchmustisbepublishedpublicatand/v1/free/commercial/watch-status.non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"counterparty_id":"example-weather-agent","current":{"endpoint":"https://weather.example.com/v2/mcp","version":"1.1"},"prior":{"endpoint":"https://weather.example.com/mcp","version":"1.0"}}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨10 unchanged words⟩ ,"type":"object"},"counterparty_id":{"description":"Name or URL of the agent/service. Optional.","type":"string"},"current":{"type":"object"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨8 unchanged words⟩ {"type":"object"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨3 unchanged words⟩ {"type":"boolean"},"task_class":{"default":"supplier_snapshot_comparison","type":"string"}},"required":["data_classification","counterparty_id","task_class","protocol","prior","current"],"type":"object"}
ClassifyAnaagent-to-agentsuppliedcallpublicfailed?handshakePassorthetask`failure`failure({code, detail}; codes: SCHEMA_MISMATCH, AUTH_REQUIRED, TIMEOUT, TASK_NOT_COMPLETED, UNSUPPORTED_PROTOCOL) andreturnget aboundeddiagnosis, a concrete repairplanstep andretaineda receipt.NoProposalpatchonly;orGAIPreplaydoesofnotanothertouchoperator'sthe other system. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"counterparty_id":"example-weather-agent","failure":{"code":"SCHEMA_MISMATCH","detail":"expected field 'temp_c', got 'temperature'"}}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨10 unchanged words⟩ ,"type":"object"},"counterparty_id":{"description":"Name or URL of the agent/service. Optional.","type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨8 unchanged words⟩ {"type":"string"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨3 unchanged words⟩ {"type":"boolean"},"task_class":{"default":"integration_failure_diagnosis","type":"string"}},"required":["data_classification","counterparty_id","task_class","protocol","failure"],"type":"object"}
CompareBeforesuppliedrelyingpubliconclaimsanotherandagenttaskorobservationsAPI, checkdeclareditsmetadataclaims against what was actually observed. Pass `claims` (each with an `id`), optional `observations` ({claim_id, result: PASS|FAIL}) andreturnitsdispositions`metadata`.withReturnsaper-claimretainedOBSERVED_AS_REPORTED / CONTRADICTED / UNTESTED plus an interface check and a receipt.NoNotsupplieraapprovalcertification.orFree,independentread-only,claimnoverification.account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"claims":[{"id":"c1","text":"Returns JSON forecasts over MCP"}],"counterparty_id":"example-weather-agent","metadata":{"protocolVersion":"2025-06-18","url":"https://weather.example.com/mcp"},"observations":[{"claim_id":"c1","result":"PASS"}]}],"properties":{"claims":{"items":{"type ⟨20 unchanged words⟩ ,"type":"object"},"counterparty_id":{"description":"Name or URL of the agent/service. Optional.","type":"string"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨16 unchanged words⟩ ,"type":"array"},"protocol":{"description":"Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.","enum":["A2A","MCP","OPENAPI"] ⟨3 unchanged words⟩ {"type":"boolean"},"task_class":{"default":"supplier_claim_check","type":"string"}},"required":["data_classification","counterparty_id","task_class","protocol","claims","metadata"],"type":"object"}
Use this when you haveVerifyaany GAIP receipt IDand need to check: retained history, hash chain and Merkle inclusion proof. Integrity only; it does notestablishmake thetruthunderlyingofclaimthetrue.underlyingFree,claim.read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"receipt_id":"<receipt_id returned by any GAIP tool>"}],"properties":{"continuity_handle":{"additionalProperties":false," ⟨38 unchanged words⟩
CompareCheck aregisteredservice'scallerrealassertionresponse againstatermslateryoupublicregisteredreplaywithorwitness_register_terms.submittedmode=PUBLIC_REPLAY makes GAIP fetch the publicresponse.URLUnknownitself;whenmode=BUYER_SUBMITTEDevidencechecksisaunavailable;response you pass in. Returns PASS/FAIL/UNKNOWN per check and a receipt. Free, read-only, nooriginalaccount.transactionInputsormustsellerbeagreementpublicproof.and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"examples":[{"mode":"PUBLIC_REPLAY","terms_id":"<terms_id from witness_register_terms>"}],"properties":{"body":{"maxLength":32768," ⟨21 unchanged words⟩ ,"type":"object"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type" ⟨20 unchanged words⟩ {"type":"string"}},"required":["data_classification","terms_id","mode"],"type":"object"}
Export a neutral, no-fault evidence bundle for aretainedwitnessed deliveryreceipt.receipt, e.g. to share with the other party. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"examples":[{"receipt_id":"<receipt_id from witness_delivery>"}],"properties":{"receipt_id":{"type":"string" ⟨4 unchanged words⟩
RegisterAboutcaller-declaredtochecksdependforon a public HTTPSservice.service?ThisRegisterdoeswhatnotaverifygoodsellerresponseagreementlooksorlikepayment.(`checks`: http_status_in, content_type_is, non_empty, json_parses) and get a `terms_id`. Then call witness_delivery to have GAIP independently check what the service returns. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"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":{"maxItems":8,"minItems":1,"type":"array"},"data_classification":{"default":"PUBLIC","enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"seller_ref":{"type":"string"},"service_url":{"type":"string"}},"required":["data_classification","seller_ref","service_url","checks"],"type":"object"}
Try GAIP in one call — Start here. No input needed. Returns what GAIP can do for an agent, a live sample result, and a ready-to-run argument set for every GAIP tool. Free, read-only, no account. Inputs must be public and non-personal; calling declares that (data_classification defaults to PUBLIC).
{"additionalProperties":true,"properties":{"continuity_handle":{"additionalProperties":false,"properties":{"continuity_id":{"type":"string"},"token":{"type":"string"}},"required":["continuity_id","token"],"type":"object"},"data_classification":{"enum":["PUBLIC","NON_PERSONAL_PUBLIC"],"type":"string"},"episode_id":{"type":"string"},"independent_operator_id":{"type":"string"},"receipt_id":{"maxLength":128,"minLength":1,"type":"string"},"synthetic":{"type":"boolean"}},"required":["receipt_id"],"type":"object"}
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
Check an agent interface — Use this when installing an A2A, MCP or OpenAPI agent. Supply public metadata to check its declared interface. Set mode VERIFY_BEFORE_CALL to inspect task-specific counterparty evidence before delegation.
Check public art evidence — Use this when you have public digital-art records to compare. Supply a question and evidence items; receive conflicts, limits and a retained receipt. This does not prove ownership or price.
Assess an A2A Agent Card — Assess supplied public Agent Card metadata without calling the agent.
Compare agent candidates — Rank supplied public Agent Cards using deterministic task-specific metadata checks.
Capture symmetric dispute evidence — Quarantine an attributed structured evidence submission with an equal response path. GAIP does not determine fault, breach or liability.
Check evidence freshness — Classify supplied evidence as current, aging, stale for re-verification, superseded, revoked or unknown without deleting history.
Check timestamped reachability — Perform an optional bounded public HTTPS probe and report timestamped status from one vantage point; not a reliability verdict.
Get GAIP capabilities — Return GAIP's public read-only capability and governance boundary.
Get counterparty evidence — Return task-specific evidence coverage for a supplied public counterparty reference without a score, certification, recommendation or delegation decision.
Qualify GAIP external services — Run bounded read-only probes and return explicit connected, degraded, metadata-only, blocked or not-registered states.
Get governance limits — Return the machine-readable Phase-1 external-participation policy.
Get GAIP identity and registry status — Return truthful A2A, MCP, Entra Agent ID and ERC-8004 activation states and blockers.
Get GAIP outbound sales authority — Return the active S0-S1 revenue-operations boundary and the safeguards required before S2 B2B email outreach.
Get autonomous shadow status — Return the latest public shadow-planning status. Shadow activity is not live execution.
Inspect interoperability and schema drift — Compare supplied public Agent Card, MCP and OpenAPI representations and report factual conflicts without a suitability verdict.
Inspect software and dependency provenance — Reconcile supplied package, registry, repository, advisory and attestation evidence. No exploit test and no safety verdict.
Prepare delegation evidence — Package supplied public evidence for a caller-owned delegation decision without a live probe, verdict or authority expansion.
Prepare an approved factual inbound reply — Prepare a bounded factual response for a public non-personal inquiry. The result is not sent and creates no commitment.
Qualify a bounded GAIP design partner — Assess public non-personal organisation readiness for the free verify-run-verify beta. No contract, price, recommendation or automatic evidence credit.
Run governed agent loop — Execute the existing Broker → Integration → Trust → Specialist loop for a £0 public read-only task and retain its receipt.
Get a public GAIP receipt — Retrieve allow-listed public fields for a retained receipt by exact id.
Verify before call — Return sourced task-specific counterparty evidence before delegation. Evidence only; caller owns the decision.
Verify a task result — Verify a supplied result against explicit deterministic acceptance criteria.
Inspect interoperability and schema drift — Compare supplied public Agent Card, MCP and OpenAPI representations and report factual conflicts without a suitability verdict.
Inspect software and dependency provenance — Reconcile supplied package, registry, repository, advisory and attestation evidence. No exploit test and no safety verdict.
Prepare an approved factual inbound reply — Prepare a bounded factual response for a public non-personal inquiry. The result is not sent and creates no commitment.
Qualify a bounded GAIP design partner — Assess public non-personal organisation readiness for the free verify-run-verify beta. No contract, price, recommendation or automatic evidence credit.
Verify before call — Return sourced task-specific counterparty evidence before delegation. Evidence only; caller owns the decision.
Verify a GAIP receipt — Verify a retained receipt's hash chain and Merkle inclusion proof by exact id.