Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,545Letters: 14Defects: 1,324counted 4 min ago
teppi

Server definition

Hash
sha256:d327c55963794ab18c07088417398e6eb4c5e13c5cc91c3a9e4887c1e735e0e5
What it is
What a remote MCP server returned when asked what it offers: 20 tools

The blob, as servednamed by its sha256

{ "instructions": "GAIP Witness Agent: Registers caller-declared delivery checks, observes supplied public results and returns a verifiable retained receipt. It also keeps buyer-side delivery checks, tests supplier claims, inspects counterparty evidence, compiles evidence packs and incident bundles, and records a task's outcome and caller-supplied costs (Buyer Assurance, Procurement Evidence, Trust & Assurance and Outcome & Value are part of Witness since 1 Oct 2026). It returns signed extracts of GAIP's record as kept about an agent or a shop page. Tools here: 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, assurance_prepare, assurance_complete, assurance_verify, gaip_verify_supplier_claims, inspect_counterparty_evidence, gaip_evidence_pack, gaip_incident_bundle, gaip_measure_outcome_value; start with witness_register_terms (tools/list carries a ready-to-run example for each). Public/non-personal, zero-price, read-only; data_classification defaults to PUBLIC; results are durably receipted. For all GAIP tools and a no-input gaip_quickstart, use https://www.gaipagents.com/mcp.", "tools": [ { "description": "Use this when finishing a Buyer Assurance check. Pass the `terms_id` from assurance_prepare and mode PUBLIC_REPLAY (GAIP replays the service) or BUYER_SUBMITTED. Returns PASS / FAIL / UNKNOWN per check and a delivery receipt. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.", "inputSchema": { "examples": [ { "mode": "PUBLIC_REPLAY", "terms_id": "<terms_id from assurance_prepare>" } ], "properties": { "body": { "description": "BUYER_SUBMITTED: the response body you received (max 32 KiB).", "type": "string" }, "body_sha256": { "description": "BUYER_SUBMITTED: SHA-256 of the body, instead of the body.", "type": "string" }, "content_type": { "description": "BUYER_SUBMITTED: the Content-Type you received.", "type": "string" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "http_status": { "description": "BUYER_SUBMITTED: the HTTP status you received.", "type": "integer" }, "mode": { "description": "PUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.", "enum": [ "BUYER_SUBMITTED", "PUBLIC_REPLAY" ] }, "terms_id": { "description": "The terms_id returned when the terms were registered.", "type": "string" } }, "required": [ "terms_id", "mode" ], "type": "object" }, "name": "assurance_complete", "outputSchema": null }, { "description": "Use this when you, the buyer, chose a public service and want its delivery checked end to end. Pass `service_url`, `checks` and explicit_read_only_consent=true. GAIP preflights it and records your checks; returns a `terms_id` for assurance_complete. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.", "inputSchema": { "examples": [ { "checks": [ { "allowed": [ 200 ], "id": "http_status_in" }, { "id": "json_parses" } ], "counterparty_id": "example-weather-agent", "explicit_read_only_consent": true, "service_url": "https://weather.example.com/forecast.json", "task_class": "weather_forecast" } ], "properties": { "checks": { "description": "1-8 checks, each {\"id\": \"http_status_in\", \"allowed\": [200]}, {\"id\": \"content_type_is\", \"value\": \"application/json\"}, {\"id\": \"non_empty\"}, {\"id\": \"json_parses\"}, {\"id\": \"json_required_keys\", \"keys\": [\"a.b\"]}, {\"id\": \"json_path_equals\", \"path\": \"a.b\", \"value\": 1}, {\"id\": \"max_latency_ms\", \"limit\": 2000}, {\"id\": \"max_bytes\", \"limit\": 20000}, {\"id\": \"text_contains\", \"value\": \"ok\"} or {\"id\": \"regex\", \"pattern\": \"ok|up\"}.", "maxItems": 8, "minItems": 1, "type": "array" }, "counterparty_id": { "description": "Name or URL of the agent or service.", "type": "string" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "episode_id": { "description": "Optional: your own id to group related calls.", "type": "string" }, "explicit_read_only_consent": { "const": true, "description": "Must be true: you consent to a public, read-only check." }, "service_url": { "description": "Public https URL of the service.", "type": "string" }, "task_class": { "description": "Optional: short name of the task, e.g. weather_forecast.", "type": "string" } }, "required": [ "service_url", "checks", "explicit_read_only_consent" ], "type": "object" }, "name": "assurance_prepare", "outputSchema": null }, { "description": "Use this when you hold a Buyer Assurance terms or delivery receipt_id and want to confirm it. Returns the retained record and its integrity proof (integrity only). Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "examples": [ { "receipt_id": "<receipt_id from assurance_prepare or assurance_complete>" } ], "properties": { "receipt_id": { "description": "A receipt_id returned by an earlier GAIP call.", "type": "string" } }, "required": [ "receipt_id" ], "type": "object" }, "name": "assurance_verify", "outputSchema": null }, { "description": "Use this when handed an x402 SAR-shaped receipt (draft proposal shape; may change). Pass `sar_receipt`, optionally the issuer's `public_key`. Returns missing fields, whether receipt_id matches the core and whether the signature checks out against that key. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "public_key": "Y8BpzlWPH3EPRQziEPRBeLS1lJBF4xEo9WaxTNbzNp0", "sar_receipt": { "confidence": 1, "reason_code": "SPEC_MATCH", "receipt_id": "sha256:17146cdeb5aba1c269130348cdc7d3d96ae55f6e048b81d3baa59d4e3f3b188b", "receipt_version": "0.1", "sig": "ogilW-bjlCbYkwwUAIrg_zm_Wuoc6EiRgeErs0RL7llP7FWyX43-LgozZFyCjCXgsViK-A4_aroOo16Q4uvTCg", "sig_alg": "Ed25519", "task_id_hash": "sha256:c8b36982316351a28e040a6520df2092c2c87a4ea611c123d04993074b2b6f1d", "ts": "2026-10-01T09:00:00Z", "verdict": "PASS", "verifier_kid": "ef654fc8b615b51c" } } ], "properties": { "public_key": { "description": "Optional: the issuer's Ed25519 public key, raw 32 bytes base64url or a JWK {kty: OKP, crv: Ed25519, x}. Omit to use GAIP's published keys.", "oneOf": [ { "maxLength": 512, "type": "string" }, { "type": "object" } ] }, "sar_receipt": { "description": "The SAR receipt object (or a whole gaip_receipt_export x402 result).", "type": "object" } }, "required": [ "sar_receipt" ], "type": "object" }, "name": "gaip_check_sar_receipt", "outputSchema": null }, { "description": "Use this when asked to verify citations or quotes (\"do these sources really say this?\"). Pass `citations` (1-20 {url, quote}). GAIP fetches each page once (robots.txt respected); returns QUOTE_FOUND / QUOTE_NOT_FOUND_IN_FETCHED_VERSION / SOURCE_UNREACHABLE..., an excerpt and a receipt. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": true, "examples": [ { "citations": [ { "claimed_title": "GAIP", "quote": "GAIP", "url": "https://www.gaipagents.com/" } ] } ], "properties": { "citations": { "description": "1-20 citations, each {url, quote?, claimed_title?, claimed_date?}.", "items": { "additionalProperties": false, "properties": { "claimed_date": { "maxLength": 64, "type": "string" }, "claimed_title": { "maxLength": 500, "type": "string" }, "quote": { "maxLength": 2000, "type": "string" }, "url": { "format": "uri", "maxLength": 2048, "type": "string" } }, "required": [ "url" ], "type": "object" }, "maxItems": 20, "minItems": 1, "type": "array" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" } }, "required": [ "citations" ], "type": "object" }, "name": "gaip_citation_witness", "outputSchema": null }, { "description": "Use this when an insurer, auditor or buyer asks what evidence exists about an agent or supplier. Pass its `subject` (public id or https URL). Returns conformance, watch, witness, repair and incident records with Merkle proofs, plus gaps. A compilation, not certification or advice. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "requester": { "purpose": "INSURER" }, "scope": { "max_items": 50, "since": "2026-09-01" }, "subject": { "counterparty_id": "example-weather-agent" } } ], "properties": { "requester": { "additionalProperties": false, "description": "Optional: {purpose, continuity_handle} to include your own receipts.", "properties": { "continuity_handle": { "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "purpose": { "enum": [ "INSURER", "AUDITOR", "OPERATOR", "BUYER", "UNSPECIFIED" ], "type": "string" } }, "type": "object" }, "scope": { "additionalProperties": false, "description": "Optional: {receipt_ids, since, until, categories, max_items}.", "properties": { "categories": { "items": { "enum": [ "conformance", "watch", "witness", "repair", "incident", "supplier_checks" ], "type": "string" }, "type": "array" }, "max_items": { "maximum": 200, "minimum": 1, "type": "integer" }, "receipt_ids": { "items": { "type": "string" }, "maxItems": 50, "type": "array" }, "since": { "type": "string" }, "until": { "type": "string" } }, "type": "object" }, "subject": { "description": "The agent or supplier: its public id or https URL. Never a person.", "oneOf": [ { "maxLength": 256, "type": "string" }, { "additionalProperties": false, "properties": { "counterparty_id": { "type": "string" }, "ref": { "type": "string" }, "seller_ref": { "type": "string" }, "url": { "format": "uri", "type": "string" } }, "type": "object" } ] } }, "required": [ "subject" ], "type": "object" }, "name": "gaip_evidence_pack", "outputSchema": null }, { "description": "Use this when something went wrong with an agent and you need the facts in order. Pass the `receipt_ids` you hold and attributed `observations`. Returns a verified, source-attributed timeline with an EU AI Act Art. 73 reference aid. No fault, cause or liability finding. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "ai_system_ref": "example-weather-agent", "observations": [ { "observed_at_utc": "2026-09-27T10:00:00Z", "source": "our uptime monitor", "source_type": "AUTOMATED_MONITOR", "statement": "HTTP 503 from the forecast endpoint for 12 minutes" } ], "receipt_ids": [ "<receipt_id returned by any GAIP tool>" ], "title": "Forecast endpoint returned errors" } ], "properties": { "ai_system_ref": { "description": "Optional: public id or URL of the AI system involved; given alone, GAIP starts the timeline from its own public records of that system.", "maxLength": 256, "type": "string" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "observations": { "description": "Attributed observations, each {source, statement, observed_at_utc}.", "items": { "additionalProperties": false, "properties": { "observed_at_utc": { "type": "string" }, "receipt_id": { "type": "string" }, "source": { "maxLength": 120, "type": "string" }, "source_type": { "enum": [ "AUTOMATED_MONITOR", "PUBLIC_RECORD", "REQUESTER", "THIRD_PARTY" ], "type": "string" }, "statement": { "maxLength": 2000, "type": "string" } }, "required": [ "source", "statement" ], "type": "object" }, "maxItems": 50, "type": "array" }, "receipt_ids": { "description": "GAIP receipt ids you hold about the incident.", "items": { "type": "string" }, "maxItems": 50, "type": "array" }, "title": { "description": "Optional: short incident title.", "maxLength": 120, "type": "string" } }, "type": "object" }, "name": "gaip_incident_bundle", "outputSchema": null }, { "description": "Use this when asked whether an outcome-priced task delivered and what it cost. Pass `episode_id`, `task` (acceptance_criteria), `delivery`, `costs`; `delivery_check` {url, checks} has GAIP test delivery now. Returns a dossier, running totals and a receipt. No ROI claim. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.", "inputSchema": { "additionalProperties": true, "examples": [ { "baseline_cost_gbp": "12.00", "costs": { "agent_gbp": "0.40", "compute_gbp": "0.12", "human_review_gbp": "3.50", "repair_gbp": "0" }, "counterparty_id": "example-weather-agent", "delivery": { "receipt_id": "example-receipt-1", "status": "ACCEPTED" }, "downstream_use": { "evidence_ref": "example-ticket-4411", "status": "USED" }, "episode_id": "example-episode-1", "observed_at_utc": "2026-09-27T21:00:00Z", "task": { "acceptance_criteria": "Forecast JSON for London returned within 5 seconds" }, "task_class": "weather_forecast", "unit_label": "forecast", "units": 7 } ], "properties": { "baseline_cost_gbp": { "description": "Optional: what the task cost before, in GBP.", "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "continuity_handle": { "additionalProperties": false, "description": "Optional: the continuity_handle from an earlier GAIP result; adds running totals over your own earlier tasks.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "costs": { "description": "Caller-stated costs in GBP: agent_gbp, compute_gbp, human_review_gbp, repair_gbp.", "type": "object" }, "counterparty_id": { "description": "Name or URL of the agent or service.", "type": "string" }, "currency": { "default": "GBP", "description": "Optional: ISO 4217 code of the cost amounts (default GBP).", "type": "string" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "delivery": { "description": "What was delivered: {status, receipt_id?}.", "required": [ "status" ], "type": "object" }, "delivery_check": { "description": "Optional: {url, checks} - GAIP tests the delivery at this public https URL now with Witness checks; its verdict sets delivery.status.", "properties": { "checks": { "items": { "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "url": { "type": "string" } }, "required": [ "url" ], "type": "object" }, "downstream_use": { "description": "Optional: {status: USED|NOT_USED, evidence_ref}.", "type": "object" }, "episode_id": { "description": "Optional: your own id to group related calls.", "type": "string" }, "evidence_refs": { "description": "Optional: references to your own evidence (ids or URLs).", "items": { "type": "string" }, "maxItems": 20, "type": "array" }, "fx_to_gbp": { "description": "Optional: {rate, as_of, source} - your GBP rate; GBP equivalents are then reported, labelled with it. GAIP never uses built-in rates.", "properties": { "as_of": { "type": "string" }, "rate": { "type": "number" }, "source": { "type": "string" } }, "required": [ "rate", "as_of", "source" ], "type": "object" }, "independent_operator_id": { "description": "Optional: your operator id (recorded as a claim, not verified).", "type": "string" }, "synthetic": { "description": "Optional: true marks a test call.", "type": "boolean" }, "task": { "description": "The task: {acceptance_criteria}.", "required": [ "acceptance_criteria" ], "type": "object" }, "task_class": { "description": "Optional: short name of the task, e.g. weather_forecast.", "type": "string" } }, "required": [ "episode_id", "task", "delivery", "costs" ], "type": "object" }, "name": "gaip_measure_outcome_value", "outputSchema": null }, { "description": "Use this when you need a GAIP receipt in another format. Pass `receipt_id` and `format`: x402 (attestation style), erc8004 (validation-response shape) or vc (W3C-VC-like JSON-LD). Ed25519-signed when the runtime key is available; hash chain and Merkle proof; no on-chain write. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "format": "x402", "receipt_id": "<receipt_id returned by any GAIP tool>" } ], "properties": { "format": { "description": "x402, erc8004 or vc.", "enum": [ "x402", "erc8004", "vc" ], "type": "string" }, "receipt_id": { "description": "A receipt_id returned by an earlier GAIP call.", "maxLength": 128, "minLength": 1, "type": "string" } }, "required": [ "receipt_id", "format" ], "type": "object" }, "name": "gaip_receipt_export", "outputSchema": null }, { "description": "Use this when you need proof of what an agent or shop page declared on a date. Pass its `url` (optional `since`, `until`). Returns an extract of GAIP's record as kept: entries with chain positions, hashes, daily anchors and a signature. Free preview. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "since": "2026-09-01", "url": "https://mcp.deepwiki.com/mcp" } ], "properties": { "limit": { "description": "Optional: most entries to return, newest kept (default 50).", "maximum": 200, "minimum": 1, "type": "integer" }, "since": { "description": "Optional: start of the range (YYYY-MM-DD or RFC 3339).", "maxLength": 40, "type": "string" }, "until": { "description": "Optional: end of the range (YYYY-MM-DD, inclusive, or RFC 3339).", "maxLength": 40, "type": "string" }, "url": { "description": "The A2A agent card, MCP endpoint or shop product page URL, exactly as recorded.", "maxLength": 2048, "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "gaip_record_extract", "outputSchema": null }, { "description": "Use this to check what an agent, API or supplier claims. Pass `claims` (each with an `id`; add `check_url` and GAIP tests it now), your `observations` and `metadata`. Returns per claim what GAIP saw, what you reported and whether they agree. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.", "inputSchema": { "additionalProperties": true, "examples": [ { "claims": [ { "id": "c1", "text": "Returns JSON forecasts over MCP" }, { "id": "c2", "text": "Responds within 2 seconds" } ], "counterparty_id": "example-weather-agent", "metadata": { "protocolVersion": "2025-06-18", "url": "https://weather.example.com/mcp" }, "observations": [ { "claim_id": "c1", "detail": "tools/call returned valid JSON", "result": "PASS" }, { "claim_id": "c2", "detail": "p95 latency 4.8 s over 20 calls", "result": "FAIL" } ] } ], "properties": { "claims": { "description": "Claims to check, each {id, text}.", "items": { "type": "object" }, "maxItems": 20, "minItems": 1, "type": "array" }, "continuity_handle": { "additionalProperties": false, "description": "Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "counterparty_id": { "description": "Name or URL of the agent/service. Optional.", "type": "string" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "episode_id": { "description": "Optional: your own id to group related calls.", "type": "string" }, "independent_operator_id": { "description": "Optional: your operator id (recorded as a claim, not verified).", "type": "string" }, "metadata": { "description": "The published agent card, MCP server description or OpenAPI document (as JSON).", "type": "object" }, "observations": { "description": "Optional: what you saw, each {claim_id, result: PASS|FAIL, detail}.", "items": { "type": "object" }, "maxItems": 30, "type": "array" }, "protocol": { "description": "Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.", "enum": [ "A2A", "MCP", "OPENAPI" ], "type": "string" }, "synthetic": { "description": "Optional: true marks a test call.", "type": "boolean" }, "task_class": { "default": "supplier_claim_check", "description": "Optional: short name of the task, e.g. weather_forecast.", "type": "string" } }, "required": [ "claims", "metadata" ], "type": "object" }, "name": "gaip_verify_supplier_claims", "outputSchema": null }, { "description": "Use this when asked what changed on a watched agent or service. Pass your `continuity_handle` and optionally a `watch_id`. Returns recent change events: verdict before and after, a change summary, the receipt and webhook delivery status. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "continuity_handle": { "continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>", "token": "<continuity_handle.token returned by any GAIP tool>" }, "limit": 10, "watch_id": "<watch_id from gaip_watch_register>" } ], "properties": { "continuity_handle": { "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "limit": { "description": "Optional: maximum events to return.", "maximum": 50, "minimum": 1, "type": "integer" }, "watch_id": { "description": "The watch_id returned by gaip_watch_register.", "type": "string" } }, "required": [ "continuity_handle" ], "type": "object" }, "name": "gaip_watch_events", "outputSchema": null }, { "description": "Use this when asked which agents or services you are watching. Pass your `continuity_handle`. Returns each watch's kind, target, last verdict, last and next check and webhook endpoint (never the secret). Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "continuity_handle": { "continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>", "token": "<continuity_handle.token returned by any GAIP tool>" } } ], "properties": { "continuity_handle": { "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" } }, "required": [ "continuity_handle" ], "type": "object" }, "name": "gaip_watch_list", "outputSchema": null }, { "description": "Use this when asked to keep an eye on an agent or MCP server (\"tell me if it changes or goes down\"). Pass the `continuity_handle` from any GAIP result, `kind` and `target_url`. GAIP re-checks every 24 hours (3 free watches), receipts each change and can call your webhook. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "continuity_handle": { "continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>", "token": "<continuity_handle.token returned by any GAIP tool>" }, "interval_hours": 24, "kind": "DELIVERY_TERMS", "terms_id": "<terms_id from witness_register_terms>" } ], "properties": { "continuity_handle": { "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "interval_hours": { "default": 24, "description": "Hours between checks: 24 minimum on the free tier; 1 for DELIVERY_SLA.", "maximum": 168, "minimum": 1, "type": "integer" }, "kind": { "description": "AGENT_READINESS (agent URL), SUPPLIER_CARD (published card), DELIVERY_TERMS (terms_id) or DELIVERY_SLA (terms_id plus sla terms).", "enum": [ "AGENT_READINESS", "DELIVERY_TERMS", "SUPPLIER_CARD", "DELIVERY_SLA" ], "type": "string" }, "sla": { "description": "DELIVERY_SLA only: service-level terms checked on every observation, any of min_uptime_pct, max_latency_ms, required_fields (JSON key paths), freshness_field + max_age_seconds; optional uptime_window_hours, min_observations. Results go only to you.", "type": "object" }, "target_url": { "description": "Public https URL (AGENT_READINESS, SUPPLIER_CARD). No query string.", "format": "uri", "maxLength": 2048, "type": "string" }, "terms_id": { "description": "DELIVERY_TERMS or DELIVERY_SLA: terms_id from witness_register_terms.", "type": "string" }, "webhook_url": { "description": "Optional: your own public https endpoint for signed change events.", "format": "uri", "maxLength": 2048, "type": "string" } }, "required": [ "continuity_handle", "kind" ], "type": "object" }, "name": "gaip_watch_register", "outputSchema": null }, { "description": "Use this when asked to stop watching an agent or service. Pass your `continuity_handle` and the `watch_id`. Its stored events are deleted; retained receipts stay verifiable. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.", "inputSchema": { "additionalProperties": false, "examples": [ { "continuity_handle": { "continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>", "token": "<continuity_handle.token returned by any GAIP tool>" }, "watch_id": "<watch_id from gaip_watch_register>" } ], "properties": { "continuity_handle": { "description": "The continuity_handle from an earlier GAIP result; proves you own these watches.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "watch_id": { "description": "The watch_id returned by gaip_watch_register.", "type": "string" } }, "required": [ "continuity_handle", "watch_id" ], "type": "object" }, "name": "gaip_watch_remove", "outputSchema": null }, { "description": "Use this when asked what evidence exists about an agent before delegating to it. Pass its `counterparty_id` and any `observations`. Returns task-specific evidence coverage, conflicts, gaps and GAIP's own earlier checks of it, with a receipt. Never a trust score or recommendation. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": true, "examples": [ { "counterparty_id": "example-weather-agent", "observations": [ { "claim": "Publishes a public weather_forecast skill", "evidence_digest": "3f0a9c1e5b7d2468ace013579bdf2468ace013579bdf2468ace013579bdf2468", "lifecycle_state": "observed", "observed_at": "2026-09-27T12:00:00Z", "source": "https://forecast.example.com/.well-known/agent-card.json" }, { "claim": "Returned a London forecast in 1.2 s", "lifecycle_state": "OBSERVED", "observed_at": "2026-09-27T12:05:00Z", "source": "caller_task_log" } ], "task_class": "weather_forecast" } ], "properties": { "continuity_handle": { "additionalProperties": false, "description": "Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "counterparty_id": { "description": "Name or URL of the agent or service.", "type": "string" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "episode_id": { "description": "Optional: your own id to group related calls.", "type": "string" }, "independent_operator_id": { "description": "Optional: your operator id (recorded as a claim, not verified).", "type": "string" }, "max_age_days": { "description": "Optional freshness window (default 30): GAIP history records older than this are STALE and do not count toward evidence_sufficiency.", "maximum": 365, "minimum": 1, "type": "integer" }, "observations": { "description": "Optional: observations about it, each {source, observed_at, evidence_digest, lifecycle_state, claim}.", "items": { "type": "object" }, "type": "array" }, "synthetic": { "description": "Optional: true marks a test call.", "type": "boolean" }, "task_class": { "default": "COUNTERPARTY_EVIDENCE", "description": "Task you want evidence for. Optional.", "type": "string" } }, "type": "object" }, "name": "inspect_counterparty_evidence", "outputSchema": null }, { "description": "Use this when you hold a GAIP receipt_id and want to confirm it (\"is this receipt genuine?\"). Returns the retained record, hash chain and Merkle inclusion proof. Integrity only: it does not make the underlying claim true. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": true, "examples": [ { "receipt_id": "<receipt_id returned by any GAIP tool>" } ], "properties": { "continuity_handle": { "additionalProperties": false, "description": "Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "data_classification": { "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "episode_id": { "description": "Optional: your own id to group related calls.", "type": "string" }, "independent_operator_id": { "description": "Optional: your operator id (recorded as a claim, not verified).", "type": "string" }, "receipt_id": { "description": "A receipt_id returned by an earlier GAIP call.", "maxLength": 128, "minLength": 1, "type": "string" }, "synthetic": { "description": "Optional: true marks a test call.", "type": "boolean" } }, "required": [ "receipt_id" ], "type": "object" }, "name": "verify_gaip_receipt", "outputSchema": null }, { "description": "Use this when asked whether a service delivered what was agreed (\"did the supplier deliver?\"). Pass the `terms_id` from witness_register_terms and mode PUBLIC_REPLAY (GAIP fetches it) or BUYER_SUBMITTED. Returns PASS / FAIL / UNKNOWN per check, what changed since last time, and a receipt. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "additionalProperties": true, "examples": [ { "mode": "PUBLIC_REPLAY", "terms_id": "<terms_id from witness_register_terms>" } ], "properties": { "body": { "description": "BUYER_SUBMITTED: the response body you received (max 32 KiB).", "maxLength": 32768, "type": "string" }, "body_sha256": { "description": "BUYER_SUBMITTED: SHA-256 of the body, instead of the body.", "type": "string" }, "content_type": { "description": "BUYER_SUBMITTED: the Content-Type you received.", "type": "string" }, "continuity_handle": { "additionalProperties": false, "description": "Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.", "properties": { "continuity_id": { "type": "string" }, "token": { "type": "string" } }, "required": [ "continuity_id", "token" ], "type": "object" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "episode_id": { "description": "Optional: your own id to group related calls.", "type": "string" }, "http_status": { "description": "BUYER_SUBMITTED: the HTTP status you received.", "type": "integer" }, "independent_operator_id": { "description": "Optional: your operator id (recorded as a claim, not verified).", "type": "string" }, "mode": { "description": "PUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.", "enum": [ "BUYER_SUBMITTED", "PUBLIC_REPLAY" ], "type": "string" }, "research_consent": { "default": false, "description": "Optional, default false. true lets this delivery check be counted, never named, in GAIP's monthly aggregate research figures.", "type": "boolean" }, "synthetic": { "description": "Optional: true marks a test call.", "type": "boolean" }, "terms_id": { "description": "The terms_id returned when the terms were registered.", "type": "string" } }, "required": [ "terms_id", "mode" ], "type": "object" }, "name": "witness_delivery", "outputSchema": null }, { "description": "Use this when a witnessed delivery failed and you must hand the facts to the other party or a resolver. Pass `terms_id` or a delivery `receipt_id`. Returns one hash-stamped bundle: terms, every check, receipts, timeline, summary. No judgement of who is right. Free, read-only, no account; inputs must be public and non-personal.", "inputSchema": { "examples": [ { "receipt_id": "<receipt_id from witness_delivery>" } ], "properties": { "continuity_handle": { "description": "Optional: the continuity_handle that registered a DELIVERY_SLA watch on these terms; adds your SLA breaches.", "type": "object" }, "receipt_format": { "default": "gaip", "description": "gaip (default) or x402_sar: also give each delivery in the x402 SAR draft shape.", "enum": [ "gaip", "x402_sar" ], "type": "string" }, "receipt_id": { "description": "A delivery receipt_id from witness_delivery.", "type": "string" }, "terms_id": { "description": "Or the terms_id (wt_...) of the agreement.", "type": "string" } }, "type": "object" }, "name": "witness_dispute_bundle", "outputSchema": null }, { "description": "Use this when about to depend on a public HTTPS service and you want neutral evidence of what it delivers. Pass `service_url`; `checks` default to HTTP 200 and a non-empty body (also JSON keys, latency, size, regex). Returns a `terms_id`; then call witness_delivery. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.", "inputSchema": { "examples": [ { "checks": [ { "allowed": [ 200 ], "id": "http_status_in" }, { "id": "json_parses" } ], "seller_ref": "example-weather-agent", "service_url": "https://weather.example.com/forecast.json" } ], "properties": { "checks": { "description": "1-8 checks, each {\"id\": \"http_status_in\", \"allowed\": [200]}, {\"id\": \"content_type_is\", \"value\": \"application/json\"}, {\"id\": \"non_empty\"}, {\"id\": \"json_parses\"}, {\"id\": \"json_required_keys\", \"keys\": [\"a.b\"]}, {\"id\": \"json_path_equals\", \"path\": \"a.b\", \"value\": 1}, {\"id\": \"max_latency_ms\", \"limit\": 2000}, {\"id\": \"max_bytes\", \"limit\": 20000}, {\"id\": \"text_contains\", \"value\": \"ok\"} or {\"id\": \"regex\", \"pattern\": \"ok|up\"}.", "maxItems": 8, "minItems": 1, "type": "array" }, "data_classification": { "default": "PUBLIC", "description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.", "enum": [ "PUBLIC", "NON_PERSONAL_PUBLIC" ], "type": "string" }, "research_consent": { "default": false, "description": "Optional, default false. true lets this record be counted, never named, in GAIP's monthly aggregate research figures (for example for insurers).", "type": "boolean" }, "seller_ref": { "description": "Optional: name of the supplier. Defaults to the host of service_url.", "type": "string" }, "service_url": { "description": "Public https URL of the service.", "type": "string" } }, "required": [ "service_url" ], "type": "object" }, "name": "witness_register_terms", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:d327c55963794ab18c07088417398e6eb4c5e13c5cc91c3a9e4887c1e735e0e5 | sha256sum