# GAIP > GAIP, the Governed Agentic Intelligence Platform, keeps an independent, dated record of what AI agents, MCP servers and online shops publish, and answers questions about that record with signed receipts. Free, read-only, no key; facts at a stated time, never an assessment. First call: `gaip_check` with a `url` on https://www.gaipagents.com/mcp, for example `{"url":"https://mcp.deepwiki.com/mcp"}` (a public MCP server; it runs as-is), then your own agent's `url`. Without MCP: GET https://www.gaipagents.com/v1/free/conformance/check?url=. Every completed answer carries a continuity handle; send it back and the answer is bound to your own history with GAIP. ## The map: what GAIP's agents answer, by who asks (https://www.gaipagents.com/v1/free/map) - Any agent: Does this agent, server or API work, and has it changed? Check and GAIP Watch: A one-line verdict, the fixes, dated history where GAIP observes it, and a receipt; GAIP Watch follows it for changes. `gaip_check`, `gaip_watch` · GET /v1/free/conformance/check?url=; GET /v1/free/changes/feed.json?url= - Any agent: A call failed; what went wrong? Diagnose: The cause, when to retry and the exact fix, from the error text and HTTP status you paste. `gaip_diagnose` · POST /v1/free/commercial/repair - A company's agent: Was this delivery or quotation what was promised? Witness: Witness tests a service's response against the terms you registered, or cited pages against the quoted text, with a receipt for each. `gaip_verify`, `witness_register_terms`, `witness_delivery` · POST /v1/free/witness/terms; POST /v1/free/witness/deliver - A company's agent: What did a site allow, publish, key or charge on a date? The record by date: Its robots.txt permissions for a named AI agent, its signing keys and its x402 prices in the week of that date; since when GAIP has recorded an endpoint or a registry name, and which earlier names look like it. `gaip_record_permissions`, `gaip_record_prices`, `gaip_record_keys`, `gaip_record_names`, `gaip_record_tenure`, `gaip_record_extract`, `gaip_check_permission` · GET /v1/free/record/permissions?host=&agent=&on=; GET /v1/free/record/prices?host=&on=; GET /v1/free/record/keys?host=&on=; GET /v1/free/record/names?name=; GET /v1/free/record/tenure?url=; GET /v1/free/record-extract?url=; GET /v1/free/permission?url=&agent= - A company's agent: Has anyone withdrawn it or warned about it? Notices: Registry status flips, an operator's own withdrawal, package advisories, each with the issuer named and the operator's reply. `gaip_notices`, `gaip_dependency_check` · GET /v1/free/notices?urls=; GET /v1/free/watch/check?urls= - A company's agent: May I contact this person's agent? Preferences: Before an agent approaches a person it checks their published rules and keeps a receipt. `gaip_check_preferences` · GET /v1/free/preferences/check?subject=&approach=&channel= - A company's agent: Was this business deal kept? Deals: Both trading agents name GAIP as witness; either party asks for the signed finding on the agreed rule, over GAIP's own delivery records. Evidence, never a sum of money. `witness_accept_terms`, `witness_finding` · POST /v1/free/witness/accept; POST /v1/free/witness/finding - A person's agent: Who is calling me, and should I pick up? The caller screen: When an agent approaches yours, the caller screen shows how long it has been on record and whether it checked first. Facts, never a score; GAIP cannot block a call. `gaip_screen_caller` · GET /v1/free/preferences/screen?caller=&approach= - A person's agent: Does the shop's own page show the price and stock an AI quoted? Second Look: Second Look reads the shop's own page now and records what it showed beside what the claim said, with a signed, dated receipt. No affiliate links. `second_look_check` · POST /v1/free/second-look - A person's agent: Was this agent authorised to act for them? Mandates: Whether a person's published mandate for an agent was in force, withdrawn or expired as GAIP indexed it, with a receipt. `gaip_check_mandate` · GET /v1/free/mandates/check?principal=&agent=&scope= - A person's agent: Who signed off on this decision, and when? Sign-offs: A role records its decision on an agent's proposal, chained and signed; GAIP never takes the decision. `witness_signoff` · POST /v1/free/witness/signoff - Any agent: What is this agent made of, and where does it live? Ingredients and Residence: As recorded on a date: what its documents say it runs on, and where it answered from (network and country, never the address). `gaip_record_ingredients`, `gaip_record_residence` · GET /v1/free/record/ingredients?url=&on=; GET /v1/free/record/residence?url=&on= - Any agent: What did my agents do this month? Statements: A signed monthly record of what GAIP recorded for the agents bound to your continuity handle, with every line's receipt; served only to that handle. `gaip_statement` · GET /v1/statements/YYYY-MM (X-GAIP-Continuity header) - Receipts are signed with GAIP's Ed25519 key, published at https://www.gaipagents.com/.well-known/gaip-receipt-keys.json. MCP: tools/call with the tool name on https://www.gaipagents.com/mcp; every tool is listed on https://www.gaipagents.com/mcp/all. ```json {"schema_version":"gaip.map.v1","url":"https://www.gaipagents.com/v1/free/map","first_call":"gaip_check","rows":[{"id":"check","who":"any","who_label":"Any agent","question":"Does this agent, server or API work, and has it changed?","product":"Check and GAIP Watch","detail":"A one-line verdict, the fixes, dated history where GAIP observes it, and a receipt; GAIP Watch follows it for changes.","tools":["gaip_check","gaip_watch"],"routes":["GET /v1/free/conformance/check?url=","GET /v1/free/changes/feed.json?url="],"built":"2026-09-28"},{"id":"diagnose","who":"any","who_label":"Any agent","question":"A call failed; what went wrong?","product":"Diagnose","detail":"The cause, when to retry and the exact fix, from the error text and HTTP status you paste.","tools":["gaip_diagnose"],"routes":["POST /v1/free/commercial/repair"],"built":"2026-09-28"},{"id":"delivery","who":"company_agent","who_label":"A company's agent","question":"Was this delivery or quotation what was promised?","product":"Witness","detail":"Witness tests a service's response against the terms you registered, or cited pages against the quoted text, with a receipt for each.","tools":["gaip_verify","witness_register_terms","witness_delivery"],"routes":["POST /v1/free/witness/terms","POST /v1/free/witness/deliver"],"built":"2026-09-28"},{"id":"record-by-date","who":"company_agent","who_label":"A company's agent","question":"What did a site allow, publish, key or charge on a date?","product":"The record by date","detail":"Its robots.txt permissions for a named AI agent, its signing keys and its x402 prices in the week of that date; since when GAIP has recorded an endpoint or a registry name, and which earlier names look like it.","tools":["gaip_record_permissions","gaip_record_prices","gaip_record_keys","gaip_record_names","gaip_record_tenure","gaip_record_extract","gaip_check_permission"],"routes":["GET /v1/free/record/permissions?host=&agent=&on=","GET /v1/free/record/prices?host=&on=","GET /v1/free/record/keys?host=&on=","GET /v1/free/record/names?name=","GET /v1/free/record/tenure?url=","GET /v1/free/record-extract?url=","GET /v1/free/permission?url=&agent="],"built":"2026-10-08"},{"id":"notices","who":"company_agent","who_label":"A company's agent","question":"Has anyone withdrawn it or warned about it?","product":"Notices","detail":"Registry status flips, an operator's own withdrawal, package advisories, each with the issuer named and the operator's reply.","tools":["gaip_notices","gaip_dependency_check"],"routes":["GET /v1/free/notices?urls=","GET /v1/free/watch/check?urls="],"built":"2026-10-08"},{"id":"preferences","who":"company_agent","who_label":"A company's agent","question":"May I contact this person's agent?","product":"Preferences","detail":"Before an agent approaches a person it checks their published rules and keeps a receipt.","tools":["gaip_check_preferences"],"routes":["GET /v1/free/preferences/check?subject=&approach=&channel="],"built":"2026-10-09"},{"id":"deals","who":"company_agent","who_label":"A company's agent","question":"Was this business deal kept?","product":"Deals","detail":"Both trading agents name GAIP as witness; either party asks for the signed finding on the agreed rule, over GAIP's own delivery records. Evidence, never a sum of money.","tools":["witness_accept_terms","witness_finding"],"routes":["POST /v1/free/witness/accept","POST /v1/free/witness/finding"],"built":"2026-10-09"},{"id":"screen","who":"person_agent","who_label":"A person's agent","question":"Who is calling me, and should I pick up?","product":"The caller screen","detail":"When an agent approaches yours, the caller screen shows how long it has been on record and whether it checked first. Facts, never a score; GAIP cannot block a call.","tools":["gaip_screen_caller"],"routes":["GET /v1/free/preferences/screen?caller=&approach="],"built":"2026-10-09"},{"id":"second-look","who":"person_agent","who_label":"A person's agent","question":"Does the shop's own page show the price and stock an AI quoted?","product":"Second Look","detail":"Second Look reads the shop's own page now and records what it showed beside what the claim said, with a signed, dated receipt. No affiliate links.","tools":["second_look_check"],"routes":["POST /v1/free/second-look"],"built":"2026-10-08"},{"id":"mandates","who":"person_agent","who_label":"A person's agent","question":"Was this agent authorised to act for them?","product":"Mandates","detail":"Whether a person's published mandate for an agent was in force, withdrawn or expired as GAIP indexed it, with a receipt.","tools":["gaip_check_mandate"],"routes":["GET /v1/free/mandates/check?principal=&agent=&scope="],"built":"2026-10-09"},{"id":"signoffs","who":"person_agent","who_label":"A person's agent","question":"Who signed off on this decision, and when?","product":"Sign-offs","detail":"A role records its decision on an agent's proposal, chained and signed; GAIP never takes the decision.","tools":["witness_signoff"],"routes":["POST /v1/free/witness/signoff"],"built":"2026-10-09"},{"id":"ingredients-residence","who":"any","who_label":"Any agent","question":"What is this agent made of, and where does it live?","product":"Ingredients and Residence","detail":"As recorded on a date: what its documents say it runs on, and where it answered from (network and country, never the address).","tools":["gaip_record_ingredients","gaip_record_residence"],"routes":["GET /v1/free/record/ingredients?url=&on=","GET /v1/free/record/residence?url=&on="],"built":"2026-10-09"},{"id":"statements","who":"any","who_label":"Any agent","question":"What did my agents do this month?","product":"Statements","detail":"A signed monthly record of what GAIP recorded for the agents bound to your continuity handle, with every line's receipt; served only to that handle.","tools":["gaip_statement"],"routes":["GET /v1/statements/YYYY-MM (X-GAIP-Continuity header)"],"built":"2026-10-09"}],"terms":"Receipts are signed with GAIP's Ed25519 key, published at https://www.gaipagents.com/.well-known/gaip-receipt-keys.json."} ``` ## The record so far, in dated facts (https://www.gaipagents.com/.well-known/gaip-record.json) - GAIP's record begins 2026-09-28: 24,240 targets (21,534 for 7+ days, 0 for 30+ days); 40,815 dated changes; 188,327 receipts and observations in the history log; chain head dbf4f311a882 anchored 2026-10-21 (history log, Sigstore Rekor, OpenTimestamps (calendar, awaiting Bitcoin)); collection 18/18 collectors running, 11 days unbroken since 2026-10-09 (as of 2026-10-21T17:17:02Z). - Dated facts about GAIP's own record, read from its store and its daily anchors at computed_at_utc: when the record begins, how much it holds, its newest anchored chain head and where that is witnessed, and whether collection is running. targets counts public targets; the 7- and 30-day counts are all targets by how far back GAIP's record of them reaches. Facts about GAIP's collection, never about any party. Unbroken days count from the end of the newest gap in collection that the collection ledger or the known-gaps register records, or from the start of the ledger's 30-day window when no gap falls inside it; every gap is listed at https://www.gaipagents.com/data/collection-ledger.json. Collection status: https://www.gaipagents.com/v1/free/collection-status; anchors and how to check them: https://www.gaipagents.com/v1/free/observatory/anchors. ```json {"schema_version":"gaip.record-history.v1","records_begin":"2026-09-28","targets":24240,"recorded_7_days_or_more":21534,"recorded_30_days_or_more":0,"dated_changes":40815,"history_log_entries":188327,"chain_head":{"sha256":"dbf4f311a88264bc1ff1941fd24a41991e11e2541279933ee36ac4ef6fc4b939","anchored_on":"2026-10-21","witnessed_in":["history log","Sigstore Rekor","OpenTimestamps (calendar, awaiting Bitcoin)"],"rekor":"https://search.sigstore.dev/?logIndex=3346146583"},"collection":{"state":"RUNNING","collectors_running":18,"collectors_checked":18,"unbroken_days":11,"unbroken_since":"2026-10-09T17:32:32Z"},"computed_at_utc":"2026-10-21T17:17:02Z","served_from":"STORE","card":"https://www.gaipagents.com/.well-known/gaip-record.json"} ``` Client set-up (Claude, Cursor, VS Code, ChatGPT, OpenAI Agents SDK, LangChain): https://www.gaipagents.com/docs/quickstart ## Start here: five tools (MCP tools/list on https://www.gaipagents.com/mcp) - `gaip_check`: does this agent, MCP server or API work, is it reachable, has it changed? (url). Example arguments: `{"url":"https://mcp.deepwiki.com/mcp"}` - `gaip_diagnose`: paste a failing agent, MCP or API error: the cause, retry timing and the exact fix (error, http_status, url). Example arguments: `{"error":"HTTP 429 Too Many Requests; Retry-After: 20","http_status":429}` - `gaip_watch`: follow an agent or MCP server for changes: feed links, optional webhook watch (url, webhook_url). Example arguments: `{"url":"https://www.gaipagents.com/mcp"}` - `gaip_verify`: did a service deliver what was promised; do cited pages contain the quoted text (url + result | citations); claims are compared with observations you supply. Example arguments: `{"citations":[{"url":"https://www.gaipagents.com/","quote":"GAIP"}]}` - `second_look_check`: before buying what an AI suggested: does the shop's own page show that price and stock now, with a signed receipt (url, claim). Example arguments: `{"url":"https://www.gaipagents.com/test-range/shop/products/demo-mug","claim":"24 GBP, in stock"}` - Results are short (answer, fix, retry timing, receipt, next steps); add `"verbose": true` to the arguments for every field. - Every other tool stays callable on https://www.gaipagents.com/mcp by name; tools/list on https://www.gaipagents.com/mcp/all lists them all (and each specialist's endpoint lists its own), https://www.gaipagents.com/llms-full.txt describes each, and `gaip_quickstart` (no input) returns a worked example for every tool. Watches, the Observatory and receipts, by name: `gaip_watch_register`, `gaip_watch_list`, `gaip_watch_remove`, `gaip_watch_events`, `gaip_observatory_lookup`, `gaip_manifest_changes`, `gaip_evidence_pack`, `gaip_incident_bundle`, `gaip_receipt_export`, `gaip_citation_witness`, `gaip_supplier_reliability`, `gaip_watch_changes`, `verify_gaip_receipt`. ## Example calls ```bash # First call: check a public MCP server by URL (gaip_check, one of the five tools listed on https://www.gaipagents.com/mcp). # It runs as-is; then put your own agent's URL in "url". curl -s https://www.gaipagents.com/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"gaip_check","arguments":{"url":"https://mcp.deepwiki.com/mcp"}}}' # A call failed? Paste the error (gaip_diagnose). Runs as-is. curl -s https://www.gaipagents.com/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"gaip_diagnose","arguments":{"error":"HTTP 429 Too Many Requests; Retry-After: 20","http_status":429}}}' # MCP: what has an agent or MCP server published over time? (Agent Observatory) curl -s https://www.gaipagents.com/mcp/agents/integration-protocol -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"gaip_observatory_lookup","arguments":{"url":"https://huggingface.co/mcp"}}}' # REST: the same lookup, and the manifest change log curl -s 'https://www.gaipagents.com/v1/free/observatory/lookup?url=https://huggingface.co/mcp' curl -s 'https://www.gaipagents.com/v1/free/observatory/changes?limit=20' # A2A 0.3: plain text is routed to the matching specialist curl -s https://www.gaipagents.com/a2a/agentverse -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":4,"method":"message/send","params":{"message":{"kind":"message","role":"user","messageId":"m1","parts":[{"kind":"text","text":"check https://mcp.deepwiki.com/mcp"}]}}}' # Verify a GAIP receipt: replace RECEIPT_ID with the receipt_id a call returned curl -s https://www.gaipagents.com/v1/free/receipts/RECEIPT_ID/verify ``` ## Permissions, record extracts and the test range - May my agent fetch this? MCP tool `gaip_check_permission` on https://www.gaipagents.com/mcp/agents/integration-protocol (or `gaip_check` with `agent`), or GET https://www.gaipagents.com/v1/free/permission?url=&agent=. Reads the site's robots.txt (RFC 9309), Content-Signal and AI-preference lines, RSL licence links, tdmrep.json and llms.txt once; ALLOWED, DISALLOWED, NO_RULE or UNKNOWN with the rule quoted, the time and an Ed25519 signature. A reading of the site's published files at the stated time; not legal advice or a licence. - An extract of GAIP's record about an agent or shop page: MCP tool `gaip_record_extract` on https://www.gaipagents.com/mcp/agents/witness, or GET https://www.gaipagents.com/v1/free/record-extract?url=&since=YYYY-MM-DD. Entries with chain positions, hashes and the daily anchors covering them, Ed25519-signed. Free preview; it shows what GAIP recorded and when, not that it is true. Opted-out targets return WITHDRAWN. - Test range (synthetic, never counted as use): https://www.gaipagents.com/test-range: a demo shop page whose sources disagree and an MCP server at https://www.gaipagents.com/test-range/mcp that fails on request, to try gaip_check, gaip_diagnose, gaip_watch, Witness and gaip_observe_listing against. ## What GAIP's record is, in one signed document (https://www.gaipagents.com/.well-known/gaip-record.json) - GET https://www.gaipagents.com/.well-known/gaip-record.json: the dated facts above (`history`), public targets watched, manifest changes in the last 7 days, notices active, the newest anchored chain head (Sigstore, OpenTimestamps, Internet Archive) and outside-use counts, all read from the live store and signed with GAIP's receipt key (https://www.gaipagents.com/.well-known/gaip-receipt-keys.json). Every completed answer carries the same dated facts as `record_history`. - Handshake: present the continuity handle from your first completed answer in X-GAIP-Continuity and every later answer is bound to your own history with GAIP; no account or key. - The record by date, seven free reads (https://www.gaipagents.com/record): https://www.gaipagents.com/v1/free/record/tenure?url= (when GAIP first recorded an endpoint, days recorded and answered, registry version and endpoint changes, declared-name changes; with only your continuity handle, your own tenure with GAIP); /record/names?name= (first-use date of a registry name in every registry GAIP reads, earlier lookalikes within one or two edits or by look-alike characters, the publisher's reply: POST /v1/free/record/names/reply; a publisher's objection: POST /v1/free/record/names/objection); /record/keys?host=&on=&kid= (keys the host had published that week: JWKS, Web Bot Auth, card signatures, OAuth signing keys, ERC-8004 bindings by name and chain; with kid or thumbprint, the weeks it was published); /record/permissions?host=&agent=&on= (ALLOWED, DISALLOWED, NOT_NAMED or NO_RULE for any agent token, the rule quoted, every robots.txt, llms.txt, ai.txt and TDMRep version with its weeks); /record/prices?host=&on= (x402, MCP tool and ai-catalog prices that week, the weekly series, the week of the last change); /record/ingredients?url=&on= (what the agent's own documents said it runs on and whether they say it is an AI: declared, as recorded); /record/residence?url=&on= (where the endpoint answered from: network and country, never the address). Every answer carries answer_sha256 and GAIP's Ed25519 signature. Is every collector running: https://www.gaipagents.com/v1/free/collection-status. - Record-since badge for your README: https://www.gaipagents.com/v1/free/badge/record-since.svg?host= draws "On GAIP's record since YYYY-MM-DD" (read live from the record) or a grey "not on GAIP's record"; paste: [![On GAIP's record](https://www.gaipagents.com/v1/free/badge/record-since.svg?host=)](https://www.gaipagents.com/v1/free/host-timeline?host=) ## GAIP Watch: has anything my agent depends on changed? (https://www.gaipagents.com/watch) - GET or POST https://www.gaipagents.com/v1/free/watch/check with `urls` (up to 25 MCP endpoints or agent cards) and `since` (YYYY-MM-DD, default 7 days): per target the change classes recorded since the date with receipt links, and one `breaking` flag (tool_removed, schema_changed, auth_changed, pricing_changed, tool_changed_beyond_stored, key_changed: a signing key the host publishes was added, removed or swapped). Pass `capture_unknown: true` to save a first record of unknown targets (5 per call). Facts, never a verdict. - GitHub Action: `uses: tjcgraham-rgb/gaip-agents/watch@main` (fails the build on a breaking change). Provider badge: https://www.gaipagents.com/v1/free/watch/badge.svg?url=. ## GAIP Notices: has anyone withdrawn or advised against what my agent depends on? (https://www.gaipagents.com/v1/free/notices) - GET https://www.gaipagents.com/v1/free/notices?urls=,&since=YYYY-MM-DD (or package_keys=npm:): active notices per subject, each attributed to its issuer (the Official MCP Registry marking a server deleted or deprecated, the operator's own withdrawal or advisory, an OSV package advisory) with the issuer's words and the operator's reply verbatim. GAIP originates no notice and gives no verdict. The Watch check lists them per target. - Operators: publish your own at https:///.well-known/gaip-notices.json ({"notices": [{"type": "withdrawal|advisory", "subject": "https://", "published": "", "reason": "", "measures": ""}]}); GAIP reads it weekly. Reply to any notice: POST https://www.gaipagents.com/v1/free/notices//reply. Public index: https://www.gaipagents.com/.well-known/gaip-notices.json. ## GAIP Deals: a witness both trading agents can name (https://www.gaipagents.com/.well-known/gaip-witness.json) - The buyer registers terms (witness_register_terms); the seller accepts them with its own continuity handle (witness_accept_terms, POST /v1/free/witness/accept: acceptance rule, optional deadline, finding mode) and gets an agreement_id naming both; either party records deliveries (witness_delivery); a party asks for the signed finding (witness_finding, POST /v1/free/witness/finding): MET, NOT_MET or INDETERMINATE on the agreed rule over GAIP's own delivery records, with A-Comm evidence-artefact and Boson decideDispute export shapes. Evidence only unless both parties confirm expert determination; never a sum of money, never a wallet; business-to-business (a consumer contract gets the evidence summary and no finding). Fee: nil. Read what naming GAIP means first at https://www.gaipagents.com/.well-known/gaip-witness.json. - Sign-offs (witness_signoff, POST https://www.gaipagents.com/v1/free/witness/signoff): a role (APPROVER, REVIEWER, OWNER, OPERATOR, or your own role_id kept only as a keyed hash) records its decision (APPROVED, REFUSED or CHANGED) on an agent's proposal, given as its SHA-256, optionally against a Deals agreement_id; the entry is chained with every Witness entry and Ed25519-signed (purpose gaip.signoff.entry_sha256.v1). Records that the stated role recorded the stated decision at the stated time. It may support a deployer's own evidence of oversight; it is not a statement that any duty was met. The decision is the role's as recorded, never GAIP's; no free text is accepted. ## GAIP Preferences: may my agent approach this person or agent? (https://www.gaipagents.com/v1/free/preferences/check) - GET https://www.gaipagents.com/v1/free/preferences/check?subject=&approach=&channel=: ALLOWED, NOT_ALLOWED, NO_RECORD or UNKNOWN with the matching rule and a signed checked-at receipt to retain (tool gaip_check_preferences). The identifier is hashed in memory and never stored. Silence is not permission. - Publish your own record at https:///.well-known/agent-preferences.json (schema gaip.agent-preference.v1: hashed subjects, rules per approach and channel, default, validity, version, signature, withdrawn); GAIP reads it weekly on every host it watches and indexes the hashes and rules only. GAIP's own: https://www.gaipagents.com/.well-known/agent-preferences.json. Make yours: https://www.gaipagents.com/preferences or GET https://www.gaipagents.com/v1/free/preferences/generate?domain=&service_notices=yes&commercial_offers=no (returns the file, subjects already hashed; nothing stored). - The other side, the caller screen: an agent approaching yours? GET or POST https://www.gaipagents.com/v1/free/preferences/screen with `caller` (its https URL), `approach`, optionally `my_subject` and the preference `receipt` it showed you (tool gaip_screen_caller): how long GAIP has recorded it, earlier lookalike names, notices about it, whether its receipt is GAIP's and for you, and what your own record says, as `signals`. Facts, never a score; GAIP cannot block a call. ## GAIP Statements: what did my agents do this month? (https://www.gaipagents.com/v1/statements/{YYYY-MM}) - GET https://www.gaipagents.com/v1/statements/{YYYY-MM} with your continuity handle in the X-GAIP-Continuity header (tool gaip_statement with `month` and `continuity_handle`): what GAIP recorded for the agents bound to that handle in the month: totals by kind (checks, preference checks obtained, screens run, deliveries witnessed, findings, sign-offs, mandates acted under, notices received, watches changed), every line with its receipt link, the month's chain head and the anchor covering it, Ed25519-signed (purpose gaip.statement.statement_sha256.v1). Also `.pdf` and `.csv`. No handle, no statement: it is served only to the handle it is about. - Free: the totals by kind and the chain head (`?view=TOTALS`). The full statement (lines, PDF, CSV) will be a paid tier once priced; until then it is free as a preview, labelled PREVIEW_FREE_UNTIL_PRICED, and nothing charges. A month is frozen once it has ended; a frozen statement's hash never changes and is anchored daily. - Every statement carries the sentence: "A record of what GAIP recorded for the agents bound to this handle; not an invoice, an account between parties or a statement that any sum is owed." ## GAIP Mandates: was this agent mandated to act for them, as indexed? (https://www.gaipagents.com/v1/free/mandates/check) - GET https://www.gaipagents.com/v1/free/mandates/check?principal=&agent=&scope=: IN_FORCE_AS_INDEXED, WITHDRAWN_AS_INDEXED, EXPIRED_AS_INDEXED, SCOPE_NOT_COVERED or NO_RECORD with the matching scope line, the record's location and version, and a signed checked-at receipt to retain (tool gaip_check_mandate). The principal is hashed in memory and never stored. Every answer carries: "GAIP records that a mandate was published and whether it was withdrawn, as indexed at the stated time; whether it authorised any act is a matter between the parties." GAIP holds no funds; a PURCHASE limit is carried as published, never compared with an amount. - Publish your own record at https:///.well-known/agent-mandates.json (schema gaip.mandate.v1: hashed principals (the same key as a Preferences subject), agent, scopes with optional limit and currency on PURCHASE, valid_from, valid_until, version, your signature, withdrawn, withdrawn_at); GAIP reads it weekly on every host it watches and indexes the hashes, agent, scope classes, dates and location only. GAIP's own: https://www.gaipagents.com/.well-known/agent-mandates.json. ## GAIP Representation: does this organisation say this agent is theirs, as indexed? (https://www.gaipagents.com/v1/free/representation/check) - GET https://www.gaipagents.com/v1/free/representation/check?organisation=&agent=&on=: LISTED_AS_INDEXED, NOT_LISTED_AS_INDEXED, WITHDRAWN_AS_INDEXED or NO_DECLARATION with the role, the file's sha256 and read time, signed (tool gaip_check_representation). Every answer carries: "GAIP records what the organisation's own file at the stated path contained when GAIP read it; the organisation may not have published one, or may have changed it since. Not a statement that any agent is or is not genuine." - Publish your own at https:///.well-known/agent-representation.json (schema gaip.representation.v1: agents with endpoint or key_thumbprint, role (SUPPORT, SALES, PAYMENTS, NOTICES, RESEARCH, OTHER), since, until; contact_for_disputes, version, signature); GAIP reads it weekly and never indexes a name. GAIP's own: https://www.gaipagents.com/.well-known/agent-representation.json; the format: https://www.gaipagents.com/representation. Make yours: GET https://www.gaipagents.com/v1/free/representation/generate?host=&agent=&role= (repeat agent and role; returns the file, checked by GAIP's parser; nothing stored). ## GAIP Credentials: which registration numbers does this agent's business declare? (https://www.gaipagents.com/v1/free/record/credentials) - GET https://www.gaipagents.com/v1/free/record/credentials?url=&on=YYYY-MM-DD (tool gaip_record_credentials): declared[] (each FCA firm reference, Companies House, ICO, SRA or other number the agent's own card, initialize answer or llms.txt declared, with an excerpt of at most 300 characters, the document and the first date seen) and register[] (for a company number, the Companies House register's name, number, status word and date of creation as GAIP read it that week, with the read date; a number the register did not list: "the register read on [date] did not list [number]"). The FCA, ICO and SRA registers are not read ("NOT_READ: register not in use"), and officers, persons with significant control and filings are never requested. Every answer carries: "GAIP records what the agent's own documents declared and what the named public register said on the day GAIP read it, in the register's own words. Not a statement that any firm is authorised, registered or lawful." ## GAIP Revocations: has anything I relied on been revoked since? (https://www.gaipagents.com/v1/free/revocations/feed.json) - One log of every withdrawal and end already in GAIP's record: mandates withdrawn or past their period, keys retired, registry servers deleted, preference records changed, representations removed, notices issued and agreements cancelled as recorded. Kinds: MANDATE_WITHDRAWN_AS_INDEXED, KEY_RETIRED_AS_INDEXED, SERVER_DELETED_AS_INDEXED, PREFERENCE_CHANGED_AS_INDEXED, REPRESENTATION_REMOVED_AS_INDEXED, NOTICE_ISSUED, AGREEMENT_CANCELLED_AS_RECORDED, HANDLE_RETIRED. - Poll it: https://www.gaipagents.com/v1/free/revocations/feed.json?since= (JSON Feed 1.1; keep the `_gaip.cursor` and pass it back: sequence numbers have no gaps) or https://www.gaipagents.com/v1/free/revocations/feed.atom?since= (Atom). Each kind as a W3C Bitstring Status List: https://www.gaipagents.com/v1/free/revocations/status/ (131,072 entries, random indexes; a subject's index is in its feed entry). - The check alone: GET https://www.gaipagents.com/v1/free/revocations/check?subject=&since=YYYY-MM-DD (tool gaip_revoked_since). Every record answer, preference check and caller screen carries `revoked_since: {checked_from, events, feed}`. A Watch on the subject sends a signed webhook. - Every entry carries: "GAIP publishes that a fact in its record stopped being true as indexed at the stated time; it says nothing about the effect of that on any party." ## GAIP Served: send a notice to another agent, with a signed record of delivery (https://www.gaipagents.com/v1/free/witness/serve/format) - POST https://www.gaipagents.com/v1/free/witness/serve (tool witness_serve): your continuity_handle, the recipient endpoint, a notice_class (CANCELLATION, COMPLAINT, WITHDRAWAL, TERMINATION, DISPUTE; the list is closed, nothing commercial) and notice_text (at most 4,000 characters). GAIP first checks the recipient's own preference record (subject agent:, approach SERVICE_NOTICE, its classes_refused); only ALLOWED is delivered, anything else is a signed NOT_DELIVERABLE receipt with the reason. Delivery follows the recipient's agent card (A2A message, MCP tools/call to its notice tool, else a POST of the gaip.serve.v1 body), once more ten minutes later if the first got no 2xx. One notice per sender per recipient per day; 20 per sender per day. - POST https://www.gaipagents.com/v1/free/witness/serve/fetch (witness_serve_fetch) and POST https://www.gaipagents.com/v1/free/witness/serve/ack (witness_serve_ack): the sender (its handle) or the recipient (the serve_key delivered to it) reads the notice and its record; the recipient acknowledges. The text is returned only to the two parties. Every receipt is chained on Witness, Ed25519-signed and carries the Representation answer for the recipient. "A GAIP serve receipt is a signed record that GAIP delivered the stated notice to the stated endpoint at the stated time and of what the endpoint answered. It is not a qualified electronic registered delivery service and carries none of the presumptions of UK eIDAS Article 43(2). Whether this notice had any effect is a matter between the parties." ## Disclosures (Witness) - `witness_disclosure` (POST https://www.gaipagents.com/v1/free/witness/disclosure): record that your agent passed personal data to another agent: categories, purpose class, the basis you state, the subject as its key, the recipient endpoint. GAIP records that the disclosing agent stated it passed personal data in the stated categories to the stated recipient for the stated purpose on the stated basis. The basis is the discloser's statement; GAIP does not assess lawfulness. - `witness_disclosure_ack` (POST https://www.gaipagents.com/v1/free/witness/disclosure-ack): the recipient acknowledges with the receipt id and token. - `gaip_disclosures_mine` (GET https://www.gaipagents.com/v1/free/disclosures/mine; Article 30 export at GET https://www.gaipagents.com/v1/free/disclosures/article30): your own records. - `gaip_disclosures_about_me` (POST https://www.gaipagents.com/v1/free/disclosures/about-me): the person's view, for agent: subjects whose own preference record names your handle. ## GAIP agent-commerce record: what does this shop's own file commit to agents, as indexed? (https://www.gaipagents.com/v1/free/agent-commerce/check) - GET https://www.gaipagents.com/v1/free/agent-commerce/check?host=&on= (or https://www.gaipagents.com/v1/free/record/agent-commerce?host=&on=, the record by date): PUBLISHED_AS_INDEXED, WITHDRAWN_AS_INDEXED or NO_RECORD with the commitments as read (checkouts, agents admitted, price against feed, returns, delivery, reference-price policy, dispute contact, evidence custodian), the file's sha256, read time and versions, signed (tool gaip_check_agent_commerce; purpose gaip.agent_commerce_check.receipt_sha256.v1). Every answer carries: "The shop's own agent-commerce file as GAIP read it at the stated time; the shop may not have published one, or may have changed it since. Not a statement that the shop accepts, admits or honours anything." - Publish your own at https:///.well-known/agent-commerce.json (schema gaip.agent-commerce.v1; Shopify-hosted: /apps/gaip/agent-commerce.json through GAIP's app); vocabulary values only. GAIP's own: https://www.gaipagents.com/.well-known/agent-commerce.json; format, generator and GitHub Action: https://www.gaipagents.com/agent-commerce; schema https://www.gaipagents.com/agent-commerce/schema.json. CC BY 4.0. A Shopify-hosted shop opts in to GAIP's scheduled reads by installing GAIP's Shopify app; the file alone does not (decision #77). ## Evidence export: GAIP's record for a "not as described" dispute (https://www.gaipagents.com/v1/free/evidence/export) - GET https://www.gaipagents.com/v1/free/evidence/export?receipt= with your continuity handle in the X-GAIP-Continuity header (.; never in the URL: a handle in a query string is refused with HANDLE_IN_QUERY), or &party= (tool gaip_evidence_export): the receipt, the page's readings from 30 days before to 7 days after (read failures shown), the shop's agent-commerce record that day, accuracy pairs for the product, the mandate hash, and the dispute-form field names, Ed25519-signed (gaip.evidence_export.bundle_sha256.v1). Only a party to the receipt can export it; anyone else, and any unknown code, gets {"state": "NOT_A_PARTY"}. The party token is never kept. Every bundle carries: "GAIP's signed record of what it recorded at the times shown. It is not advice, and not a statement about who is right." Free. No affiliate links. Ever. ## Second Look: the receipt an agent keeps, and the vendor-submitted pair (https://www.gaipagents.com/check) - second_look_check (POST https://www.gaipagents.com/v1/free/second-look; MCP on https://www.gaipagents.com/mcp): two facts, "the page showed X; the claim said Y", led by Shown as claimed, Shown differently or Couldn't confirm, with a signed receipt at https://www.gaipagents.com/r/. With your continuity handle the receipt binds to its keyed hash (handle_hash, dropped after 90 days); `mandate_ref` is kept only as mandate_sha256, a keyed hash. - gaip_second_look_pair (POST https://www.gaipagents.com/v1/free/second-look/pair, ticketed, handle required): a vendor submits what an assistant answered about a product (product_url, assistant from a fixed list, prompt_sha256, answer_excerpt up to 300 characters, answered_at); GAIP reads the page once and records the pair at https://www.gaipagents.com/r/, signed. Every pair carries: "As submitted by the vendor at the stated time; GAIP did not read the assistant's answer at its source. The page values are GAIP's own reading at the time shown." Never published per assistant; folded into https://www.gaipagents.com/v1/free/second-look/accuracy in cells of five pairs from three shops. - Counts on the record card (https://www.gaipagents.com/.well-known/gaip-record.json, record.second_look: checks, pairs). ## Order-time capture: what a shop's product pages showed when an order arrived (https://www.gaipagents.com/r/) - A merchant switches it on in GAIP's Shopify app; each order then gets one signed receipt of what the shop's own product pages showed at that moment (at most 20 lines read), served at https://www.gaipagents.com/r/ and verifiable offline. Receipts kept, counts only: `record.order_capture` on https://www.gaipagents.com/.well-known/gaip-record.json. No customer data: order id, product links, prices, quantities and the time only. "GAIP's signed record of what the shop's public product pages showed when this order was received, read by GAIP at the stated time. Not a retailer's receipt, not proof of purchase, and not a statement about who is right." ## The compliance record: what did a consenting shop's product page show each day? (https://www.gaipagents.com/v1/free/compliance/export) - A merchant consents in GAIP's Shopify app; GAIP reads each chosen product page once a day and keeps price, currency, availability, any struck-through price and any countdown shown, and the days it could not read. GET https://www.gaipagents.com/v1/free/compliance/export?host=&product=&party= (tool gaip_compliance_export) returns the signed series; anyone without the token is answered NOT_A_PARTY. Every export carries: "GAIP's own daily readings of this shop's public product page, with the days it could not read. Not a statement that any price, saving or deadline was or was not lawful, usual or genuine." ## The act log: what my agents did, promised and were told, as recorded (https://www.gaipagents.com/v1/free/acts) - gaip_log_act (POST https://www.gaipagents.com/v1/free/acts, ticketed, handle required; MCP on https://www.gaipagents.com/mcp/all): one signed, chained entry per act (kind from a fixed list, subject_sha256, content_sha256; optional counterparty, amount_declared, page_url read once, cosigner, product_ids + watch on BOUGHT), kept as hashes bound to your handle, at https://www.gaipagents.com/r/ and GET https://www.gaipagents.com/v1/free/acts/. GET https://www.gaipagents.com/v1/free/acts/mine (X-GAIP-Continuity header) lists your entries with GAIP's existing receipts re-emitted by kind. Every answer carries: "GAIP records that an agent submitted this entry at the stated time, and, where shown, what a public page showed when GAIP read it. GAIP did not witness the act and does not say it happened as described." Open to outside entries (the DPIA was signed off on 11 Oct 2026). Counts on the record card (record.acts). - gaip_switch_pack (GET https://www.gaipagents.com/v1/free/acts/switch-pack, X-GAIP-Continuity header; MCP on https://www.gaipagents.com/mcp/all): the switch pack, gaip.switch-pack.v1: every entry bound to your handle, GAIP's public keys and the verifier steps, signed as one pack; a format any agent can read, CC BY 4.0, format at https://www.gaipagents.com/acts/format. Each entry also has a COSE_Sign1 receipt at GET https://www.gaipagents.com/v1/free/acts//receipt.cose (application/cose). - gaip_recall_watch (GET https://www.gaipagents.com/v1/free/acts/recall-watch, ticketed, handle required; MCP on https://www.gaipagents.com/mcp/all): the recall watch for what you own. A BOUGHT entry with product_ids and watch true registers keyed hashes of the identifiers; GAIP reads the GOV.UK and US CPSC recall lists daily and enters each matched notice (MATCHED by identifier, POSSIBLE_MATCH by name words: check that it is the same product) in your act log with the regulator's title, date and link. Every answer carries: "GAIP's own daily match of regulators' published notices against the identifiers this handle registered, as of the stated time. A match is a notice whose words matched; GAIP does not say that any product is safe, unsafe or recalled." Counts on the record card (record.recall_watch). ## Follow changes (Agent Observatory feeds, no account) - Whole ecosystem: https://www.gaipagents.com/v1/free/changes/feed.atom (Atom) · https://www.gaipagents.com/v1/free/changes/feed.json (JSON Feed 1.1); newest first, at most 100 dated entries: tools added, removed or changed by name, schema and manifest hash changes, reachability and protocol version changes. - One server or agent: add ?url= (or ?target_id=obs_...) to either feed. - Is a URL observed? https://www.gaipagents.com/v1/free/changes/subscribe?url= or MCP tool `gaip_watch_changes` (feed URLs, latest changes, webhooks via `gaip_watch_register`, or how to check the URL now). - Weekly "What changed in the agent ecosystem": https://www.gaipagents.com/changes (archive https://www.gaipagents.com/changes/YYYY-Www, JSON https://www.gaipagents.com/v1/free/changes/weekly.json). Aggregate counts first; shares only for cells of 5 or more. - Frozen weekly ecosystem snapshots (standards adoption, protocol versions, reachability; hash-chained, citable): https://www.gaipagents.com/v1/free/ecosystem/snapshots. - Has this MCP server changed since a date? https://www.gaipagents.com/v1/free/observatory/changed-since?url=&since=YYYY-MM-DD or MCP tool `gaip_tools_changed_since` (read-only; POST your tools/list `tools` array to compare). - Save an agent now: POST https://www.gaipagents.com/v1/free/observatory/capture with {"url": ""} or MCP tool `gaip_observatory_capture`; it is then revisited about once a day. - The data record (what GAIP keeps, how it is anchored daily, how long it is kept): https://www.gaipagents.com/how-it-works#data-record; daily anchors https://www.gaipagents.com/v1/free/observatory/anchors. - Dated facts, not an assessment of any party. Corrections and opt-out: https://www.gaipagents.com/corrections. ## Open data (aggregate figures CC BY 4.0, no account) - Open data page (datasets, licence, citation, weekly downloads): https://www.gaipagents.com/data - Weekly downloads, built once per frozen ISO week: https://www.gaipagents.com/data/weekly/YYYY-Www/totals.csv (also totals.jsonl; aggregates, CC BY 4.0, counts from 1 to 4 withheld) and changes.csv / changes.jsonl (the week's public change-log entries; not CC BY); newest week at https://www.gaipagents.com/data/weekly/latest/. - Citable weekly snapshot ids AGENT-WEB-YYYY-Www with each file's SHA-256: https://www.gaipagents.com/v1/free/data/releases - Data dictionary: https://www.gaipagents.com/data/dictionary (https://www.gaipagents.com/v1/free/data/dictionary); Croissant: https://www.gaipagents.com/data/croissant.json; citation: https://www.gaipagents.com/CITATION.cff - Monthly: State of Agents https://www.gaipagents.com/state-of-agents and the Agent Web Index https://www.gaipagents.com/v1/free/agent-web-index; dataset method versions https://www.gaipagents.com/v1/free/observatory/methods. - Public agents GAIP watches (minimal fields: target id, registry, name and identifier as the registry lists them, kind, cohorts, date first watched; facts as listed by public registries, not CC BY; opt-outs left out; rebuilt daily): https://www.gaipagents.com/data/watched-agents.csv (also watched-agents.jsonl; metadata and how to recompute the panel hash: https://www.gaipagents.com/data/watched-agents.json). - Agent Reliability Index (reachability and response times; monthly, final once a month ends, and the latest 30 days): https://www.gaipagents.com/data/reliability-index.csv (https://www.gaipagents.com/data/reliability-index.json); CC BY 4.0. - Collection ledger (when GAIP's Observatory ran, daily, frozen and hash-chained, with its gaps): https://www.gaipagents.com/data/collection-ledger.csv (https://www.gaipagents.com/data/collection-ledger.json); CC BY 4.0. - Revocations published by kind (last 7 days, cells of 1 to 4 withheld): https://www.gaipagents.com/data#revocations; the log itself https://www.gaipagents.com/v1/free/revocations/feed.json. - Second Look accuracy record (what pages showed against what was claimed, by quarter and field, cells of five from three shops; vendor-submitted pairs folded in, never per assistant): https://www.gaipagents.com/v1/free/second-look/accuracy (page https://www.gaipagents.com/check/accuracy); CC BY 4.0. ## Connect a client (no account or key) - Claude Code: `claude mcp add --transport http gaip https://www.gaipagents.com/mcp` - Claude Desktop: Customize > Connectors > Add custom connector (older versions: Settings > Connectors), enter the MCP URL and choose no sign-in. URL: https://www.gaipagents.com/mcp - Cursor (`.cursor/mcp.json`): `{"mcpServers":{"gaip":{"url":"https://www.gaipagents.com/mcp"}}}`; one-click: https://cursor.com/en/install-mcp?name=gaip&config=eyJ1cmwiOiJodHRwczovL3d3dy5nYWlwYWdlbnRzLmNvbS9tY3AifQ%3D%3D - VS Code (`.vscode/mcp.json`): `{"servers":{"gaip":{"type":"http","url":"https://www.gaipagents.com/mcp"}}}`; one-click: https://insiders.vscode.dev/redirect/mcp/install?name=gaip&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.gaipagents.com%2Fmcp%22%7D - Gemini CLI: `gemini extensions install https://github.com/tjcgraham-rgb/gaip-agents`, or in `~/.gemini/settings.json`: `{"mcpServers":{"gaip":{"httpUrl":"https://www.gaipagents.com/mcp"}}}` - Windsurf (`~/.codeium/windsurf/mcp_config.json`): `{"mcpServers":{"gaip":{"serverUrl":"https://www.gaipagents.com/mcp"}}}` - Cline (`cline_mcp_settings.json`): `{"mcpServers":{"gaip":{"type":"streamableHttp","url":"https://www.gaipagents.com/mcp"}}}` - ChatGPT: Settings > Security and login > turn on Developer mode; then add a plugin with the plus button and, under Connection, enter the MCP URL (including /mcp). URL: https://www.gaipagents.com/mcp - OpenAI Agents SDK (hosted MCP), Vercel AI SDK (`createMCPClient`), LangChain (`pip install langchain-gaip`), CrewAI (`mcps=["https://www.gaipagents.com/mcp"]`), A2A and the rest: https://www.gaipagents.com/docs/quickstart - Each specialist has its own MCP URL (https://www.gaipagents.com/mcp/agents/{agent_id}) and snippets on https://www.gaipagents.com/agents/{agent_id}. ## Coming back (optional) - Every completed call returns a `continuity_handle`. Send it next time (tool argument `continuity_handle`, or header `X-GAIP-Continuity: .`) to link your calls and use `gaip_since_last_call`. It is linkage only: no account, no permission, no spend. - If a handle leaks, retire it: call `gaip_retire_handle` with it, or POST /v1/free/handle/retire with the header. GAIP refuses it on every tool from then on; leave it out of your next call to be issued a new one. - Say who you are, if you like: header `X-GAIP-Agent: `. It helps GAIP tell outside agents apart from bots. Only counts are published. - Did an answer help? Call `gaip_feedback` with `useful` true or false (optional `receipt_id` and a `reason` from its list), or POST /v1/free/feedback. No free text is kept. ## Rate limits - schema_version: gaip.public-rate-limits.v1 - per_source_requests_per_window: 30 - window_s: 60 - source: client IP set by the hosting edge (Vercel or Railway); only a salted one-way hash of it and the UTC day is kept, with the counts, until its window ends - shared_across_routes: True - shared_across_instances: yes when the runtime has its database; otherwise per instance - per_source_requests_per_day: 2000 - outbound_fetch_per_source_per_minute: 10 - outbound_fetch_global_per_minute: 120 - outbound_fetch_tools: ["check_agent_conformance", "gaip_check", "gaip_check_permission", "gaip_citation_witness", "gaip_dependency_check", "gaip_host_timeline_verify", "gaip_log_act", "gaip_observatory_capture", "gaip_observe_listing", "gaip_opt_out_exclusion", "gaip_recall_check", "gaip_second_look_pair", "gaip_shop_check", "gaip_supplier_reliability", "gaip_verify", "second_look_check"] - counted: tool calls only; discovery documents, initialize and tools/list are not counted - routes: ["POST /v1/free/digital-art/evidence-check", "GET|POST /v1/free/conformance/check", "POST /v1/free/witness/*", "POST /v1/free/interoperability/recovery", "POST /v1/free/evidence/pack", "POST /v1/free/evidence/incident-bundle", "GET /v1/free/receipts/{receipt_id}/formats/{format}", "GET /v1/free/shop-check", "every other free HTTP tool route (POST /v1/free/*)", "MCP tools/call on /mcp, /mcp/all and /mcp/agents/*", "A2A message/send on /a2a/*"] - link_checks_global_per_minute: 60 - max_request_bytes: 65536 - response_headers: ["RateLimit-Limit", "RateLimit-Remaining", "RateLimit-Reset", "Retry-After (on 429)"] - error_429: {"docs": "https://www.gaipagents.com/llms.txt#rate-limits", "error": "RATE_LIMITED", "limit": 30, "retry_after_s": "seconds", "window_s": 60} - docs: https://www.gaipagents.com/llms.txt#rate-limits ## Discovery files - MCP Server Card (SEP-2127): https://www.gaipagents.com/mcp/server-card (also https://www.gaipagents.com/.well-known/mcp/server-card.json) - Specialist MCP Server Cards: https://www.gaipagents.com/mcp/agents/{agent_id}/server-card - A2A Agent Card (router): https://www.gaipagents.com/.well-known/agent-card.json; every tool on the map is a skill at https://www.gaipagents.com/a2a/agentverse (metadata.gaip_tool, arguments as one data part; the same answer as MCP) - AI Catalog: https://www.gaipagents.com/.well-known/ai-catalog.json - OpenAPI 3.1: https://www.gaipagents.com/openapi.json - Directory listing kit: https://www.gaipagents.com/v1/free/discovery/listing-kit - Full guide with every tool: https://www.gaipagents.com/llms-full.txt - Verify a GAIP receipt offline (spec gaip-receipt-v1, Python and JavaScript verifiers, MIT, test vectors): https://www.gaipagents.com/receipt-verifier; keys at https://www.gaipagents.com/.well-known/gaip-receipt-keys.json - Full MCP tool catalogue (tools/list): https://www.gaipagents.com/mcp/all; https://www.gaipagents.com/mcp lists the five front-door tools - MCP server catalog (GAIP's MCP servers): https://www.gaipagents.com/.well-known/mcp/catalog.json - Agent ids behind the map (stable; A2A card https://www.gaipagents.com/agents//.well-known/agent-card.json, MCP https://www.gaipagents.com/mcp/agents/): `integration-protocol` (Check and GAIP Watch · Diagnose); `witness` (Witness · Deals · Sign-offs); `listing-observer` (Second Look). Full public identity roster (every id, the folded ones too): https://www.gaipagents.com/v1/public-identities - ERC-8004 identity files: https://www.gaipagents.com/.well-known/agent-registration.json · https://www.gaipagents.com/erc8004/roster.json · https://www.gaipagents.com/erc8004/status.json - Free live capabilities (JSON): https://www.gaipagents.com/v1/free/capabilities - Protocol mappings (JSON): https://www.gaipagents.com/integrations.json · https://www.gaipagents.com/agentverse-profile.json · https://www.gaipagents.com/entra-agent-id.json · https://www.gaipagents.com/protocol-verification.json · https://www.gaipagents.com/extended-preflight-capabilities.json · https://www.gaipagents.com/external-task-example.json - API catalog (RFC 9727): https://www.gaipagents.com/.well-known/api-catalog - Agent Skills index: https://www.gaipagents.com/.well-known/agent-skills/index.json - Client quickstart (Claude Desktop, Claude Code, Cursor, VS Code, ChatGPT, OpenAI Agents SDK, LangChain): https://www.gaipagents.com/docs/quickstart - Client configuration (Claude, Cursor, VS Code, curl): https://www.gaipagents.com/for-agents - GAIP's automated clients and their user-agents: https://www.gaipagents.com/bots (https://www.gaipagents.com/bots.json) - Security: how to report a vulnerability https://www.gaipagents.com/security (RFC 9116 contact: https://www.gaipagents.com/.well-known/security.txt) - Status (uptime over 7, 30 and 90 days, dated incidents): https://www.gaipagents.com/status · JSON https://www.gaipagents.com/v1/free/status - Changelog: https://www.gaipagents.com/changelog (https://www.gaipagents.com/changelog.json) - Observatory change feeds: https://www.gaipagents.com/v1/free/changes/feed.atom (Atom) and https://www.gaipagents.com/v1/free/changes/feed.json (JSON Feed); weekly report https://www.gaipagents.com/changes (https://www.gaipagents.com/v1/free/changes/weekly.json) - Revocations feed: https://www.gaipagents.com/v1/free/revocations/feed.atom (Atom) and https://www.gaipagents.com/v1/free/revocations/feed.json (JSON Feed, ?since=); status lists https://www.gaipagents.com/v1/free/revocations/status/ - Official MCP Registry: io.github.tjcgraham-rgb/gaip-broker and io.github.tjcgraham-rgb/gaip-{agent_id} - Sitemap: https://www.gaipagents.com/sitemap.xml ## Legal and methodology Legal and method pages (Draft — pending legal review): - Terms of use: https://www.gaipagents.com/terms - Privacy notice: https://www.gaipagents.com/privacy - Corrections and opt-out: https://www.gaipagents.com/corrections - Methodology (neutral, no rankings, no universal scores, facts at time T): https://www.gaipagents.com/methodology - Outputs are read-only evidence about what was observed at a stated time; not certification, endorsement, or legal, financial or insurance advice. Public or non-personal data only. ## Every tool ### gaip_check Use this when asked whether an AI agent, MCP server or API works or has changed, e.g. before adding or paying it. Pass its `url`. Returns a verdict, fixes, dated history when observed, and a receipt. With `agent` (e.g. GPTBot): may your bot fetch it (robots.txt, AI-crawler rules)? MCP: https://www.gaipagents.com/mcp (listed there; a router over the specialist tools below) ### gaip_watch Use this when asked to keep an eye on an agent or MCP server, or to be alerted when it changes. Pass its `url`: returns feed links and its latest dated changes; add `webhook_url` for a free watch (checked every 24 h, signed webhook on change). MCP: https://www.gaipagents.com/mcp (listed there; a router over the specialist tools below) ### gaip_diagnose Use this when an agent, MCP or API call failed. Paste the `error` text and/or `http_status`; add the service `url` if known. Returns the cause, the exact fix (e.g. the missing argument) and retry_after_seconds; `keep_receipt: true` adds a dated receipt. MCP: https://www.gaipagents.com/mcp (listed there; a router over the specialist tools below) ### gaip_verify Use this when asked whether a service delivered what was promised or whether cited pages contain the quoted text. Pass `citations`, or a service `url` (+ `checks`, the `result` you got), or `claims` with `observations`. Returns a result per item. MCP: https://www.gaipagents.com/mcp (listed there; a router over the specialist tools below) ### second_look_check 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 page showed beside what the claim said, and a signed, dated receipt. Second Look by GAIP. MCP: https://www.gaipagents.com/mcp (listed there; a router over the specialist tools below) ### gaip_verify_supplier_claims Use this to check what an agent, API or supplier claims. Pass `claims` (each with an `id`; add `check_url` and GAIP tests it now), your `observations` and `metadata`. Returns per claim what GAIP saw, what you reported and whether they agree. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_diagnose_integration_failure 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### gaip_compare_supplier_snapshots 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### witness_delivery Use this when asked whether a service delivered what was agreed ("did the supplier deliver?"). Pass the `terms_id` from witness_register_terms and mode PUBLIC_REPLAY (GAIP fetches it) or BUYER_SUBMITTED. Returns PASS / FAIL / UNKNOWN per check, what changed since last time, and a receipt. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### evaluate_public_art_evidence Use this when asked whether public NFT or digital-art records agree (creator, contract, token). Pass a `question` and `evidence_items`. Returns AGREES / CONFLICT per field, copies counted once, past checks; fetch_sources: true reads up to 5 pages. No authenticity, ownership or price claim. MCP: https://www.gaipagents.com/mcp · platform only ### check_agent_conformance 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### verify_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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### witness_register_terms Use this when about to depend on a public HTTPS service and you want neutral evidence of what it delivers. Pass `service_url`; `checks` default to HTTP 200 and a non-empty body (also JSON keys, latency, size, regex). Returns a `terms_id`; then call witness_delivery. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### witness_dispute_bundle Use this when a witnessed delivery failed and you must hand the facts to the other party or a resolver. Pass `terms_id` or a delivery `receipt_id`. Returns one hash-stamped bundle: terms, every check, receipts, timeline, summary. No judgement of who is right. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### witness_accept_terms Use this when you are the other party to terms a buyer registered. Pass the `terms_id`, your own `continuity_handle` and `business_purpose_statement` true (businesses only); the buyer confirms it with the `agreement_id`. Returns an `agreement_id` naming both parties. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### witness_finding Use this when deliveries exist for an agreement and you want GAIP's signed finding. Pass the `agreement_id` and your `continuity_handle`. Returns MET, NOT_MET or INDETERMINATE on the agreed rule with the records relied on. Evidence only; no sum of money. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### witness_signoff Use this when a role (APPROVER, REVIEWER, OWNER, OPERATOR or a hashed role_id) decided on an agent's proposal. Pass `proposal_sha256`, `decision` (APPROVED, REFUSED, CHANGED), optionally `agreement_id`. Returns a chained, signed entry of the role's decision, never GAIP's. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### assurance_prepare 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### assurance_complete 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### assurance_verify 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). MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### preflight_broker_candidates 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. MCP: https://www.gaipagents.com/mcp · platform only ### inspect_counterparty_evidence 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_measure_outcome_value Use this when asked whether an outcome-priced task delivered and what it cost. Pass `episode_id`, `task` (acceptance_criteria), `delivery`, `costs`; `delivery_check` {url, checks} has GAIP test delivery now. Returns a dossier, running totals and a receipt. No ROI claim. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_observatory_lookup 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### gaip_manifest_changes 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### gaip_observatory_capture Use this to save a dated record of what a public MCP server or A2A agent card declares now. Pass its `url`. GAIP reads it once (robots.txt respected, never tools/call), re-reads it daily and returns the capture id, time and SHA-256 hashes. Not an assessment. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### gaip_tools_changed_since Use this before connecting to an MCP server: did its tools change since your `since` date? Pass its `url`, optionally your tools/list `tools` or a digest. Returns dates, change classes, stored hashes and whether yours match the latest GAIP observed. Facts, not a verdict. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### gaip_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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_incident_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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_receipt_export Use this when you need a GAIP receipt in another format. Pass `receipt_id` and `format`: x402 (attestation style), erc8004 (validation-response shape) or vc (W3C-VC-like JSON-LD). Ed25519-signed when the runtime key is available; hash chain and Merkle proof; no on-chain write. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_check_sar_receipt Use this when handed an x402 SAR-shaped receipt (draft proposal shape; may change). Pass `sar_receipt`, optionally the issuer's `public_key`. Returns missing fields, whether receipt_id matches the core and whether the signature checks out against that key. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_observe_listing Use this before recommending or buying from an online shop. Pass a product page `url` (or up to 10 `urls`). Returns clean product data (price, stock, GTIN, variants, shipping, returns), whether page and platform agree, and GAIP's price and stock history. Preview. Not Amazon, eBay or Etsy. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/listing-observer ### gaip_recall_check Use this when asked whether a product has been recalled. Pass the product page `url`, or its `brand`, `model` and `gtin` (barcode). Searches the UK (GOV.UK) and US (CPSC) recall lists; returns any notice with its date and link, and a receipt. Dated facts only, no verdict on the product. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_check_permission Use this before your agent fetches a page ("may my agent fetch this?"). Pass the `url` and your `agent` token. Reads robots.txt (RFC 9309), AI-preference lines, RSL, tdmrep.json and llms.txt; returns ALLOWED, DISALLOWED, NO_RULE or UNKNOWN, the rule quoted, the time and a signature. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### gaip_record_extract Use this when you need proof of what an agent or shop page declared on a date. Pass its `url` (optional `since`, `until`). Returns an extract of GAIP's record as kept: entries with chain positions, hashes, daily anchors and a signature. Free preview. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### witness_serve Use this when your agent must send a cancellation, complaint, withdrawal, termination or dispute notice to another agent and keep a signed record. Pass `recipient`, `notice_class`, `notice_text`, your handle. Sent only if the recipient's preference record allows it. MCP: https://www.gaipagents.com/mcp · platform only ### witness_serve_fetch Use this when you sent or received a notice through GAIP and want it again with its delivery record. Pass `serve_id` and your handle (sender) or the `serve_key` delivered with it (recipient). Only the two parties can read it. MCP: https://www.gaipagents.com/mcp · platform only ### witness_serve_ack Use this when your agent received a notice through GAIP and wants to acknowledge it. Pass `serve_id` and the `serve_key` delivered with it. Records a chained, signed acknowledgement the sender sees on its record. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_watch_register 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol, https://www.gaipagents.com/mcp/agents/witness ### gaip_watch_list 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). MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol, https://www.gaipagents.com/mcp/agents/witness ### gaip_watch_remove 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol, https://www.gaipagents.com/mcp/agents/witness ### gaip_watch_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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol, https://www.gaipagents.com/mcp/agents/witness ### gaip_citation_witness 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/witness ### gaip_supplier_reliability 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. MCP: https://www.gaipagents.com/mcp · https://www.gaipagents.com/mcp/agents/integration-protocol ### gaip_since_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. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_feedback Use this after a GAIP answer to say if it helped ("that fixed it"). Pass `useful` true or false, optionally the answer's `receipt_id` and a `reason` from the list. Changes nothing else. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_retire_handle Use this when a continuity_handle you hold may have leaked. Pass it as `continuity_handle`; GAIP refuses it on every tool from then on. Only its holder can retire it; call any tool without one for a new handle. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_watch_changes Use this when asked to follow an MCP server or agent for changes without an account ("alert me when its tools change"). Pass its `url`. Returns whether GAIP observes it, Atom and JSON feed links, its latest dated changes and how to add a webhook. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_tenure Use this when asked how long an agent or MCP server has been around ("is this agent new?"). Pass its `url` (or only your continuity handle, for your own). Returns when GAIP's record begins, days recorded and answered, version and endpoint changes: GAIP's observation, not a creation date. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_names Use this when asked whether an agent name looks like another ("is acme-payments the original?"). Pass `name` (a registry name or its last segment) or a `url`. Returns since when each matching name has been on GAIP's record and earlier names that look like it, as dated facts. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_keys Use this when asked which signing key a host had published on a date ("was this key theirs on 3 Oct?"). Pass `host`, `on` and optionally `kid`. Returns the keys GAIP recorded that week (JWKS, Web Bot Auth, card, OAuth, ERC-8004) and the weeks a kid was published. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_permissions Use this when asked what a site allowed an AI agent on a date ("did it block GPTBot in September?"). Pass `host`, `agent` and `on`. Returns ALLOWED, DISALLOWED or NOT_NAMED with the rule quoted and each file version's weeks: what the file said, not whether a use was lawful. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_prices Use this when asked what an agent service charged on a date ("what did it cost last week?"). Pass `host` and `on`. Returns the x402 and MCP tool prices GAIP recorded that ISO week, the weekly series and the week of the last change; the pay-to address is never kept. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_ingredients Use this when asked what an agent says it runs on or whether it says it is an AI ("which model is behind it?"). Pass its `url` and optionally `on`. Returns the provider, version, model named (with excerpt), operator and AI self-disclosure state its documents showed, and change dates. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_residence Use this when asked where an agent's endpoint is hosted ("which network and country does it answer from?"). Pass its `url` and optionally `on`. Returns the network (ASN), its registered country, the certificate issuer, any declared region and the dates hosting changed; never the address. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_record_credentials Use this when asked which registration numbers an agent's business gives ("what FCA or company number does it declare?"). Pass its `url` and optionally `on`. Returns each number its documents declared, with the excerpt, and what Companies House said when GAIP read it. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_check_agent_commerce Use this before your agent buys from a shop. Pass `host` (the shop's domain), optionally `on`. Returns PUBLISHED_AS_INDEXED, WITHDRAWN_AS_INDEXED or NO_RECORD with what the shop's own agent-commerce file committed (checkouts, agents admitted, price, returns), its sha256, read time, signed. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_check_preferences Use this before your agent approaches a person or agent. Pass `subject` (email:, phone:, did: or agent: identifier, hashed in memory), `approach` and `channel`. Returns ALLOWED, NOT_ALLOWED, NO_RECORD or UNKNOWN with the rule and a signed receipt. Silence is not permission. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_screen_caller Use this when an unknown agent approaches yours ("who is this calling me?"). Pass its `caller` URL, the `approach` and any preference `receipt` it sent. Returns how long GAIP has recorded it, lookalike names, notices about it and whether it checked your preferences. Facts, not a score. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_check_mandate Use this before relying on an agent that says it acts for a person. Pass `principal` (hashed in memory), the `agent` endpoint and a `scope` class. Returns IN_FORCE_AS_INDEXED, WITHDRAWN_AS_INDEXED, EXPIRED_AS_INDEXED, SCOPE_NOT_COVERED or NO_RECORD with the scope line and a signed receipt. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_check_representation Use this when an agent says it acts for an organisation. Pass `organisation` (its host), the `agent` endpoint or key thumbprint, optionally `on`. Returns LISTED_AS_INDEXED, NOT_LISTED_AS_INDEXED, WITHDRAWN_AS_INDEXED or NO_DECLARATION from that organisation's own file, signed. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_statement Use this to see what GAIP recorded for your agents in a month. Pass `month` (YYYY-MM) and your `continuity_handle`. Returns totals by kind, each line with its receipt link, the month's chain head and anchor, Ed25519-signed. Not an invoice; your own handle's record only. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_notices Use this before you rely on an MCP server or agent, or when one stops answering. Pass `urls` (up to 25). Returns what a registry, the operator itself or a package advisory published about each, with the issuer, the date and the operator's reply beside it. Facts as published, not a verdict. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_dependency_check Use this in CI or before a release to see whether an MCP server or agent you depend on changed. Pass `urls` (up to 25) and optionally `since`. Returns the changes GAIP's Observatory recorded for each, their classes and any notice about it. Dated facts, not a verdict. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_revoked_since Use this before relying again on something you checked: a mandate, a key, a registry server, a preference record or an agreement. Pass `subject` and `since`. Returns the events GAIP published about it since (withdrawn, retired, deleted, changed or cancelled as indexed) and the feed. MCP: https://www.gaipagents.com/mcp · platform only ### witness_disclosure Use this when your agent passed personal data about a person to another agent. Pass `subject` (hashed in memory), `recipient`, `categories`, `purpose` and `basis_as_stated`. Returns a signed, chained receipt and a token for the recipient. MCP: https://www.gaipagents.com/mcp · platform only ### witness_disclosure_ack Use this when another agent recorded passing you personal data and gave you its receipt. Pass `receipt_id` and `ack_token`; GAIP records your acknowledgement, chained to the disclosure, and nothing else. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_disclosures_mine Use this when you need what your agent recorded as disclosed or received. Present your continuity handle; optionally `view` ARTICLE30 for your records grouped by purpose, category and recipient, each line as recorded by the disclosing agent. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_disclosures_about_me Use this when you run an agent and want to see which agents recorded passing data about it. Pass `subject` (agent:) and the handle your own preference record names at that host; email, phone and DID subjects ask through agents@gaipagents.com. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_evidence_export Use this when a party to a Second Look or order-capture receipt needs GAIP's signed record for a "not as described" dispute. Pass `receipt` and `party` (your handle or the merchant link token). Returns receipt, page readings and shop record, signed. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_second_look_pair Use this when your service saw an AI assistant quote a price, stock or option for a product. Pass `product_url`, `assistant`, `prompt_sha256`, `answer_excerpt`, `answered_at` and your `continuity_handle`. Returns what the page showed beside the answer, signed. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_compliance_export Use this when a merchant who consented in GAIP's Shopify app wants GAIP's signed daily readings of one product page: price, currency, availability, struck-through price, countdown, days not read. Pass `host`, `product` and the shop's `party` token; anyone else gets NOT_A_PARTY. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_log_act Use this to record what your agent did, promised or was told for the person. Pass `kind`, `subject_sha256`, `content_sha256` (hash each with a random salt you keep) and `continuity_handle`; optional `counterparty`, `page_url`. Returns the signed entry. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_switch_pack Use this to take the person's whole record with you: every act log entry bound to your `continuity_handle`, GAIP's public keys and how to check each signature, signed as one pack (gaip.switch-pack.v1), a format any agent can read. Pass `continuity_handle`. MCP: https://www.gaipagents.com/mcp · platform only ### gaip_recall_watch Use this to read which regulators' recall notices matched the product identifiers your agent registered with a BOUGHT entry (gaip_log_act, watch true). Pass your `continuity_handle` and optionally `since` (YYYY-MM-DD). Returns each notice's own title, date and link, or none. MCP: https://www.gaipagents.com/mcp · platform only ## Agent tool sets - integration-protocol: check_agent_conformance, gaip_watch_register, gaip_watch_list, gaip_watch_remove, gaip_watch_events, gaip_observatory_lookup, gaip_manifest_changes, gaip_observatory_capture, gaip_tools_changed_since, gaip_check_permission, gaip_compare_supplier_snapshots, gaip_diagnose_integration_failure, gaip_supplier_reliability - witness: witness_register_terms, witness_delivery, gaip_receipt_export, verify_gaip_receipt, witness_dispute_bundle, gaip_watch_register, gaip_watch_list, gaip_watch_remove, gaip_watch_events, gaip_citation_witness, gaip_check_sar_receipt, gaip_record_extract, witness_accept_terms, witness_finding, witness_signoff, assurance_prepare, assurance_complete, assurance_verify, gaip_verify_supplier_claims, inspect_counterparty_evidence, gaip_evidence_pack, gaip_incident_bundle, gaip_measure_outcome_value - listing-observer: gaip_observe_listing - Still callable at their own routes with the same tools, no longer listed separately (part of integration-protocol: integration-repair, supplier-watch; part of witness: trust-assurance, buyer-assurance, procurement-verify, outcome-value; unlisted: art-intelligence, opportunity-broker). Their pages and cards say where they now live.