# 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 17/18 collectors running, 11 days unbroken since 2026-10-09 (as of 2026-10-21T15:59:11Z). - 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 {"card":"https://www.gaipagents.com/.well-known/gaip-record.json","targets":24240,"chain_head":{"rekor":"https://search.sigstore.dev/?logIndex=3346146583","sha256":"dbf4f311a88264bc1ff1941fd24a41991e11e2541279933ee36ac4ef6fc4b939","anchored_on":"2026-10-21","witnessed_in":["history log","Sigstore Rekor","OpenTimestamps (calendar, awaiting Bitcoin)"]},"collection":{"state":"BEHIND","unbroken_days":11,"unbroken_since":"2026-10-09T17:32:32Z","collectors_checked":18,"collectors_running":17},"served_from":"STORE","dated_changes":40815,"records_begin":"2026-09-28","schema_version":"gaip.record-history.v1","computed_at_utc":"2026-10-21T15:59:11Z","history_log_entries":188327,"recorded_7_days_or_more":21534,"recorded_30_days_or_more":0} ``` 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.