accueil / serveurs / Dev & Code / io.github.tjcgraham-rgb/gaip-witness
io.github.tjcgraham-rgb/gaip-witness
serveur MCP (Model Context Protocol) · gaip-witness 1.5.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.tjcgraham-rgb/gaip-witness est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.tjcgraham-rgb/gaip-witness » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 23 outils
- assurance_complete≈ 398 tokens
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.
Paramètres, retour & exemple (7)
Paramètresbody· string · optionnel
BUYER_SUBMITTED: the response body you received (max 32 KiB).mode· enum · requis · BUYER_SUBMITTED | PUBLIC_REPLAY
PUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.terms_id· string · requis
The terms_id returned when the terms were registered.body_sha256· string · optionnel
BUYER_SUBMITTED: SHA-256 of the body, instead of the body.http_status· integer · optionnel
BUYER_SUBMITTED: the HTTP status you received.content_type· string · optionnel
BUYER_SUBMITTED: the Content-Type you received.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.
Exemple d'appel{"name": "assurance_complete", "arguments": {"mode": "BUYER_SUBMITTED", "terms_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - assurance_prepare≈ 550 tokens
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.
Paramètres, retour & exemple (7)
Paramètreschecks· array · requis
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"}.episode_id· string · optionnel
Optional: your own id to group related calls.task_class· string · optionnel
Optional: short name of the task, e.g. weather_forecast.service_url· string · requis
Public https URL of the service.counterparty_id· string · optionnel
Name or URL of the agent or service.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.explicit_read_only_consent· ? · requis
Must be true: you consent to a public, read-only check.
Exemple d'appel{"name": "assurance_prepare", "arguments": {"checks": [], "service_url": "texte", "explicit_read_only_consent": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - assurance_verify≈ 176 tokens
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.
Paramètres, retour & exemple (1)
Paramètresreceipt_id· string · requis
A receipt_id returned by an earlier GAIP call.
Exemple d'appel{"name": "assurance_verify", "arguments": {"receipt_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_check_sar_receipt≈ 389 tokens
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.
Paramètres, retour & exemple (2)
Paramètrespublic_key· ? · optionnel
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.sar_receipt· object · requis
The SAR receipt object (or a whole gaip_receipt_export x402 result).
Exemple d'appel{"name": "gaip_check_sar_receipt", "arguments": {"sar_receipt": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_citation_witness≈ 360 tokens
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.
Paramètres, retour & exemple (2)
Paramètrescitations· array · requis
1-20 citations, each {url, quote?, claimed_title?, claimed_date?}.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.
Exemple d'appel{"name": "gaip_citation_witness", "arguments": {"citations": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_evidence_pack≈ 527 tokens
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.
Paramètres, retour & exemple (3)
Paramètresscope· object · optionnel
Optional: {receipt_ids, since, until, categories, max_items}.subject· ? · requis
The agent or supplier: its public id or https URL. Never a person.requester· object · optionnel
Optional: {purpose, continuity_handle} to include your own receipts.
Exemple d'appel{"name": "gaip_evidence_pack", "arguments": {"subject": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_incident_bundle≈ 542 tokens
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.
Paramètres, retour & exemple (5)
Paramètrestitle· string · optionnel
Optional: short incident title.receipt_ids· array · optionnel
GAIP receipt ids you hold about the incident.observations· array · optionnel
Attributed observations, each {source, statement, observed_at_utc}.ai_system_ref· string · optionnel
Optional: public id or URL of the AI system involved; given alone, GAIP starts the timeline from its own public records of that system.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.
Exemple d'appel{"name": "gaip_incident_bundle", "arguments": {"title": "texte", "receipt_ids": [], "observations": [], "ai_system_ref": "texte", "data_classification": "PUBLIC"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_measure_outcome_value≈ 971 tokens
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.
Paramètres, retour & exemple (16)
Paramètrestask· object · requis
The task: {acceptance_criteria}.costs· object · requis
Caller-stated costs in GBP: agent_gbp, compute_gbp, human_review_gbp, repair_gbp.currency· string · optionnel
Optional: ISO 4217 code of the cost amounts (default GBP).delivery· object · requis
What was delivered: {status, receipt_id?}.fx_to_gbp· object · optionnel
Optional: {rate, as_of, source} - your GBP rate; GBP equivalents are then reported, labelled with it. GAIP never uses built-in rates.synthetic· boolean · optionnel
Optional: true marks a test call.episode_id· string · requis
Optional: your own id to group related calls.task_class· string · optionnel
Optional: short name of the task, e.g. weather_forecast.evidence_refs· array · optionnel
Optional: references to your own evidence (ids or URLs).delivery_check· object · optionnel
Optional: {url, checks} - GAIP tests the delivery at this public https URL now with Witness checks; its verdict sets delivery.status.downstream_use· object · optionnel
Optional: {status: USED|NOT_USED, evidence_ref}.counterparty_id· string · optionnel
Name or URL of the agent or service.baseline_cost_gbp· ? · optionnel
Optional: what the task cost before, in GBP.continuity_handle· object · optionnel
Optional: the continuity_handle from an earlier GAIP result; adds running totals over your own earlier tasks.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.independent_operator_id· string · optionnel
Optional: your operator id (recorded as a claim, not verified).
Exemple d'appel{"name": "gaip_measure_outcome_value", "arguments": {"task": {}, "costs": {}, "delivery": {}, "episode_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_receipt_export≈ 276 tokens
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.
Paramètres, retour & exemple (2)
Paramètresformat· string · requis · x402 | erc8004 | vc
x402, erc8004 or vc.receipt_id· string · requis
The receipt_id exactly as an earlier GAIP result returned it. Have none? Call with any id: the refusal lists example_receipt_ids from GAIP's own public records.
Exemple d'appel{"name": "gaip_receipt_export", "arguments": {"format": "x402", "receipt_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_record_extract≈ 310 tokens
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.
Paramètres, retour & exemple (4)
Paramètresurl· string · requis
The A2A agent card, MCP endpoint or shop product page URL, exactly as recorded.limit· integer · optionnel
Optional: most entries to return, newest kept (default 50).since· string · optionnel
Optional: start of the range (YYYY-MM-DD or RFC 3339).until· string · optionnel
Optional: end of the range (YYYY-MM-DD, inclusive, or RFC 3339).
Exemple d'appel{"name": "gaip_record_extract", "arguments": {"url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_verify_supplier_claims≈ 694 tokens
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.
Paramètres, retour & exemple (11)
Paramètresclaims· array · requis
Claims to check, each {id, text}.metadata· object · requis
The published agent card, MCP server description or OpenAPI document (as JSON).protocol· string · optionnel · A2A | MCP | OPENAPI
Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.synthetic· boolean · optionnel
Optional: true marks a test call.episode_id· string · optionnel
Optional: your own id to group related calls.task_class· string · optionnel
Optional: short name of the task, e.g. weather_forecast.observations· array · optionnel
Optional: what you saw, each {claim_id, result: PASS|FAIL, detail}.counterparty_id· string · optionnel
Name or URL of the agent/service. Optional.continuity_handle· object · optionnel
Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.independent_operator_id· string · optionnel
Optional: your operator id (recorded as a claim, not verified).
Exemple d'appel{"name": "gaip_verify_supplier_claims", "arguments": {"claims": [], "metadata": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_watch_events≈ 335 tokens
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.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Optional: maximum events to return.watch_id· string · optionnel
The watch_id returned by gaip_watch_register.continuity_handle· object · requis
The continuity_handle from an earlier GAIP result; proves you own these watches.
Exemple d'appel{"name": "gaip_watch_events", "arguments": {"continuity_handle": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_watch_list≈ 255 tokens
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.
Paramètres, retour & exemple (1)
Paramètrescontinuity_handle· object · requis
The continuity_handle from an earlier GAIP result; proves you own these watches.
Exemple d'appel{"name": "gaip_watch_list", "arguments": {"continuity_handle": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_watch_register≈ 649 tokens
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.
Paramètres, retour & exemple (8)
Paramètressla· object · optionnel
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.kind· string · requis · AGENT_READINESS | DELIVERY_TERMS | SUPPLIER_CARD | DELIVERY_SLA
AGENT_READINESS (agent URL), SUPPLIER_CARD (published card), DELIVERY_TERMS (terms_id) or DELIVERY_SLA (terms_id plus sla terms).terms_id· string · optionnel
DELIVERY_TERMS or DELIVERY_SLA: terms_id from witness_register_terms.target_url· string · optionnel
Public https URL (AGENT_READINESS, SUPPLIER_CARD). No query string.webhook_url· string · optionnel
Optional: your own public https endpoint for signed change events.interval_hours· integer · optionnel
Hours between checks: 24 minimum on the free tier; 1 for DELIVERY_SLA.continuity_handle· object · requis
The continuity_handle from an earlier GAIP result; proves you own these watches.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.
Exemple d'appel{"name": "gaip_watch_register", "arguments": {"kind": "AGENT_READINESS", "continuity_handle": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - gaip_watch_remove≈ 292 tokens
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.
Paramètres, retour & exemple (2)
Paramètreswatch_id· string · requis
The watch_id returned by gaip_watch_register.continuity_handle· object · requis
The continuity_handle from an earlier GAIP result; proves you own these watches.
Exemple d'appel{"name": "gaip_watch_remove", "arguments": {"watch_id": "texte", "continuity_handle": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - inspect_counterparty_evidence≈ 659 tokens
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.
Paramètres, retour & exemple (9)
Paramètressynthetic· boolean · optionnel
Optional: true marks a test call.episode_id· string · optionnel
Optional: your own id to group related calls.task_class· string · optionnel
Task you want evidence for. Optional.max_age_days· integer · optionnel
Optional freshness window (default 30): GAIP history records older than this are STALE and do not count toward evidence_sufficiency.observations· array · optionnel
Optional: observations about it, each {source, observed_at, evidence_digest, lifecycle_state, claim}.counterparty_id· string · optionnel
Name or URL of the agent or service.continuity_handle· object · optionnel
Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.independent_operator_id· string · optionnel
Optional: your operator id (recorded as a claim, not verified).
Exemple d'appel{"name": "inspect_counterparty_evidence", "arguments": {"synthetic": true, "episode_id": "texte", "task_class": "texte", "max_age_days": 1, "observations": [], "counterparty_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - verify_gaip_receipt≈ 400 tokens
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.
Paramètres, retour & exemple (6)
Paramètressynthetic· boolean · optionnel
Optional: true marks a test call.episode_id· string · optionnel
Optional: your own id to group related calls.receipt_id· string · requis
A receipt_id returned by an earlier GAIP call.continuity_handle· object · optionnel
Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.independent_operator_id· string · optionnel
Optional: your operator id (recorded as a claim, not verified).
Exemple d'appel{"name": "verify_gaip_receipt", "arguments": {"receipt_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - witness_accept_terms≈ 818 tokens
Use this when you are the other party to terms a buyer registered. Pass the `terms_id`, your own `continuity_handle` and `business_purpose_statement` true (businesses only); the buyer confirms it with the `agreement_id`. Returns an `agreement_id` naming both parties. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Paramètres, retour & exemple (11)
Paramètresterms_id· string · requis
wt_... from witness_register_terms.agreement_id· string · optionnel
Only on an existing agreement: the buyer confirms business purpose or expert determination, or either party declares a consumer contract.finding_mode· string · optionnel · EVIDENCE_ONLY | EXPERT_DETERMINATION
EVIDENCE_ONLY, or EXPERT_DETERMINATION (needs the buyer's confirmation).acceptance_rule· object · optionnel
What counts as delivered, by when, and who may ask for the finding.seller_key_proof· object · optionnel
Optional: {jwk, jws over the terms_id, host}; GAIP checks the signature and whether the host published that key.consumer_contract· boolean · optionnel
true if either party is a consumer: evidence summary only, no finding.continuity_handle· object · optionnel
Required: your own continuity handle (continuity_id, token).agreement_cancelled· boolean · optionnel
Only with agreement_id: either party records that it cancelled the agreement (recorded as that party's statement and published in GAIP's revocation feed).data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC or NON_PERSONAL_PUBLIC.mandate_check_receipt· object · optionnel
Optional: the gaip_check_mandate receipt you obtained (or {receipt_sha256, state}) if you act for a person; its state is recorded beside the acceptance as a fact and shown in the finding.business_purpose_statement· boolean · optionnel
Required true from the seller at acceptance and from the buyer (with agreement_id): you act for purposes relating to your trade, business, craft or profession and the deal is not with a consumer. No finding until both parties have stated it.
Exemple d'appel{"name": "witness_accept_terms", "arguments": {"terms_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - witness_delivery≈ 630 tokens
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.
Paramètres, retour & exemple (12)
Paramètresbody· string · optionnel
BUYER_SUBMITTED: the response body you received (max 32 KiB).mode· string · requis · BUYER_SUBMITTED | PUBLIC_REPLAY
PUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.terms_id· string · requis
The terms_id returned when the terms were registered.synthetic· boolean · optionnel
Optional: true marks a test call.episode_id· string · optionnel
Optional: your own id to group related calls.body_sha256· string · optionnel
BUYER_SUBMITTED: SHA-256 of the body, instead of the body.http_status· integer · optionnel
BUYER_SUBMITTED: the HTTP status you received.content_type· string · optionnel
BUYER_SUBMITTED: the Content-Type you received.research_consent· boolean · optionnel
Optional, default false. true lets this delivery check be counted, never named, in GAIP's monthly aggregate research figures.continuity_handle· object · optionnel
Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.independent_operator_id· string · optionnel
Optional: your operator id (recorded as a claim, not verified).
Exemple d'appel{"name": "witness_delivery", "arguments": {"mode": "BUYER_SUBMITTED", "terms_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - witness_dispute_bundle≈ 301 tokens
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.
Paramètres, retour & exemple (4)
Paramètresterms_id· string · optionnel
Or the terms_id (wt_...) of the agreement.receipt_id· string · optionnel
A delivery receipt_id from witness_delivery.receipt_format· string · optionnel · gaip | x402_sar
gaip (default) or x402_sar: also give each delivery in the x402 SAR draft shape.continuity_handle· object · optionnel
Optional: the continuity_handle that registered a DELIVERY_SLA watch on these terms; adds your SLA breaches.
Exemple d'appel{"name": "witness_dispute_bundle", "arguments": {"terms_id": "texte", "receipt_id": "texte", "receipt_format": "gaip", "continuity_handle": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - witness_finding≈ 309 tokens
Use this when deliveries exist for an agreement and you want GAIP's signed finding. Pass the `agreement_id` and your `continuity_handle`. Returns MET, NOT_MET or INDETERMINATE on the agreed rule with the records relied on. Evidence only; no sum of money. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Paramètres, retour & exemple (3)
Paramètresagreement_id· string · requis
wa_... from witness_accept_terms.continuity_handle· object · optionnel
Required: a party's own continuity handle.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC or NON_PERSONAL_PUBLIC.
Exemple d'appel{"name": "witness_finding", "arguments": {"agreement_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - witness_register_terms≈ 508 tokens
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.
Paramètres, retour & exemple (5)
Paramètreschecks· array · optionnel
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"}.seller_ref· string · optionnel
Optional: name of the supplier. Defaults to the host of service_url.service_url· string · requis
Public https URL of the service.research_consent· boolean · optionnel
Optional, default false. true lets this record be counted, never named, in GAIP's monthly aggregate research figures (for example for insurers).data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.
Exemple d'appel{"name": "witness_register_terms", "arguments": {"service_url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - witness_signoff≈ 634 tokens
Use this when a role (APPROVER, REVIEWER, OWNER, OPERATOR or a hashed role_id) decided on an agent's proposal. Pass `proposal_sha256`, `decision` (APPROVED, REFUSED, CHANGED), optionally `agreement_id`. Returns a chained, signed entry of the role's decision, never GAIP's. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Paramètres, retour & exemple (9)
Paramètresrole· string · optionnel · APPROVER | REVIEWER | OWNER | OPERATOR
The role that decided: APPROVER, REVIEWER, OWNER or OPERATOR. Any other text is refused (ROLE_VOCABULARY); use role_id for your own id.role_id· string · optionnel
Optional: your own opaque role identifier (one token, no spaces). GAIP keeps it only as a keyed hash, never in clear.decision· string · requis · APPROVED | REFUSED | CHANGED
The decision as recorded: APPROVED, REFUSED or CHANGED.agent_url· string · optionnel
Optional: public https URL of the agent whose proposal was decided (the system identifier).agreement_id· string · optionnel
Optional: the wa_... Deals agreement from witness_accept_terms this decision concerns; the finding then lists it.reason_sha256· string · optionnel
Optional: SHA-256 (64 hex) of the reason you keep; anything but a hash is refused.proposal_sha256· string · requis
SHA-256 (64 hex) of what the agent proposed, computed by you; the proposal itself is never sent.continuity_handle· object · optionnel
Optional: your continuity handle (continuity_id, token); one is issued with the receipt when absent.data_classification· string · optionnel · PUBLIC | NON_PERSONAL_PUBLIC
PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.
Exemple d'appel{"name": "witness_signoff", "arguments": {"decision": "APPROVED", "proposal_sha256": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».