Skip to main content
Glama

Server Details

Witness: agreed terms, delivery checks, signed receipts, dispute bundles and evidence packs.

Ownership verified
Status
Healthy
Uptime
99.8% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
tjcgraham-rgb/gaip-agents
GitHub Stars
0
Server Listing
gaip-broker

TDQS

A3.8/5.0

Scored across 20 tools

Disambiguation2/5

Several tool pairs appear to do essentially the same thing: assurance_prepare/assurance_complete mirror witness_register_terms/witness_delivery (both take a service_url and terms_id with PUBLIC_REPLAY/BUYER_SUBMITTED modes), while assurance_verify duplicates verify_gaip_receipt, gaip_evidence_pack overlaps inspect_counterparty_evidence, and gaip_citation_witness overlaps gaip_verify_supplier_claims. The parallel assurance_* and witness_* families force an agent to guess which dialect to use for the same delivery-check workflow.

Naming Consistency3/5

Most names follow verb_noun or noun_noun patterns, but the conventions are mixed: many tools are prefixed gaip_, others (assurance_*, witness_*, inspect_*, verify_gaip_receipt) are not, and a few read noun-first (gaip_citation_witness, gaip_receipt_export, gaip_incident_bundle). It remains readable but the prefixing and word order are not predictable.

Tool Count3/5

20 tools is on the heavy side for a witnessing/verification service, and the count is inflated by two overlapping families (assurance_* and witness_*) plus multiple near-duplicate verification tools. The watch_* subgroup (4 tools) is well-earned, but consolidation could remove redundant entries.

Completeness4/5

The domain is well covered: terms registration, delivery witnessing, dispute bundling, receipt verification/export, evidence packs, incident timelines and a full watch lifecycle (register/list/events/remove). Only minor gaps exist, such as no explicit watch-update or batch verification operation, which agents can work around.

Available Tools

23 tools
assurance_completeComplete a buyer-side delivery checkAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoBUYER_SUBMITTED: the response body you received (max 32 KiB).
modeYesPUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.
terms_idYesThe terms_id returned when the terms were registered.
body_sha256NoBUYER_SUBMITTED: SHA-256 of the body, instead of the body.
http_statusNoBUYER_SUBMITTED: the HTTP status you received.
content_typeNoBUYER_SUBMITTED: the Content-Type you received.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false and destructiveHint=false already declaring a non-destructive mutation, the description adds real value: recording a GAIP receipt, the fact that it is free with no account, and the hard constraint that inputs must be public and non-personal. It does not address idempotency or replay-determinism, which the annotations leave as non-idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the trigger condition and followed by prereqs, mode choice, return values, and constraints. Every sentence carries information, though the return/constraint sentences could be marginally tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description covers the return shape (per-check PASS/FAIL/UNKNOWN plus a delivery receipt) and the auth/cost/data-handling profile. For a 7-parameter tool with two enums, the main remaining gap is guidance on which BUYER_SUBMITTED parameters to supply together.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3; the description still adds cross-tool provenance for terms_id (it must come from assurance_prepare) and clarifies the PUBLIC_REPLAY vs BUYER_SUBMITTED choice beyond the enum labels. It stops short of explaining the BUYER_SUBMITTED field bundle (body, http_status, content_type, body_sha256).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action (finishing/completing a Buyer Assurance check) and names the specific output (PASS/FAIL/UNKNOWN per check plus a delivery receipt). It implicitly positions itself against assurance_prepare by consuming the terms_id that prepare produces, though it never names assurance_verify or other siblings directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when finishing a Buyer Assurance check" gives clear context, and the prerequisite (terms_id from assurance_prepare) plus the two mode choices are explained inline. It lacks explicit when-not-to-use guidance against siblings like assurance_verify, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assurance_preparePrepare a buyer-side delivery checkAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
checksYes1-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_idNoOptional: your own id to group related calls.
task_classNoOptional: short name of the task, e.g. weather_forecast.
service_urlYesPublic https URL of the service.
counterparty_idNoName or URL of the agent or service.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC
explicit_read_only_consentYesMust be true: you consent to a public, read-only check.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: cost ('free, no account'), side effects ('records a GAIP receipt only', 'records your checks'), data constraints ('inputs must be public and non-personal'), and the consent requirement. The 'read-only check' phrasing sits against readOnlyHint=false, but it is consistent because the read-only scope refers to the check against the service while the tool itself records a receipt.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: usage trigger first, then the required call shape, then cost/privacy caveats. No wasted clauses, though the consent parameter is repeated from the schema, which is slightly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema, the description covers purpose, prerequisites, consent, side effects, and the handoff to assurance_complete. Return semantics are only sketched (terms_id), but no output schema exists so this is the appropriate place for that and it is partially covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the required parameters, the checks vocabulary, and the consent const are already fully documented in structured fields. The description only restates the three required inputs and the public/non-personal constraint, adding no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (preflight/check a public service's delivery end to end) from the buyer's perspective, and names the output that routes to the sibling tool ('returns a terms_id for assurance_complete'). It is clear what the tool does, though it does not explicitly contrast itself with assurance_verify.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition ('when you, the buyer, chose a public service and want its delivery checked end to end') and implies the follow-up step via terms_id. It never states when NOT to use it, e.g. when the service is private or personal-data-bearing beyond the closing constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assurance_verifyVerify a Buyer Assurance receiptA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
receipt_idYesA receipt_id returned by an earlier GAIP call.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real value beyond them: what is returned ('the retained record and its integrity proof'), the explicit scope limit '(integrity only)', and the constraints 'free, read-only, no account' plus the public/non-personal input requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, and the usage condition and return value are front-loaded. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although no output schema exists, the description characterizes the return (retained record plus integrity proof) and the integrity-only scope, and it discloses the privacy/account constraints. For a single-parameter read tool this is nearly complete; the only gap is no explicit tie-break against the similar verify_gaip_receipt sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, schema coverage is 100%, and the schema already states it is 'a receipt_id returned by an earlier GAIP call'. The description echoes the same origin but adds no format, provenance, or validity details beyond what the schema provides, so this is the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (confirm) and resource (Buyer Assurance terms or delivery receipt) and names the exact input it operates on. It is clear what the tool does, though it does not distinguish itself from the sibling verify_gaip_receipt, which appears to overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition: 'Use this when you hold a Buyer Assurance terms or delivery receipt_id and want to confirm it.' It also states the preconditions (receipt_id from an earlier call, inputs public and non-personal) but names no alternative or when-not-to-use case, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_check_sar_receiptCheck an x402 SAR receiptA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
public_keyNoOptional: 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_receiptYesThe SAR receipt object (or a whole gaip_receipt_export x402 result).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds meaningful context on top: it is free, requires no account, and only accepts public/non-personal inputs. The draft-and-may-change disclaimer is a useful stability signal not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the triggering condition and then compressed into the returned checks and constraints. Every clause carries information; the semicolon-joined constraints are dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned signals (missing fields, receipt_id match, signature validity). For a two-parameter, nested-object input with full schema coverage and rich annotations, this is sufficient, though the accepted receipt variants could be clarified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions already explain the public_key formats (raw base64url vs JWK) and the GAIP default key fallback, leaving little for the description to add. The description merely restates that public_key is optional and does not elaborate on the accepted receipt shapes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Check an x402 SAR receipt') and enumerates exactly what is evaluated: missing fields, receipt_id/core match, and signature validity. It does not explicitly distinguish itself from the sibling verify_gaip_receipt, so an agent could wonder which verifier applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger condition ('when handed an x402 SAR-shaped receipt') plus the shape caveat ('draft proposal shape; may change') and the input constraints ('must be public and non-personal'). No named alternative or exclusion against verify_gaip_receipt, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_citation_witnessVerify citations and quotesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
citationsYes1-20 citations, each {url, quote?, claimed_title?, claimed_date?}.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the read-only/non-destructive annotations: it discloses that each page is fetched exactly once, that robots.txt is respected, the exact result vocabulary including SOURCE_UNREACHABLE, and that a receipt and excerpt are returned. It also states cost/auth ('free, read-only, no account') and an input restriction (public, non-personal).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences: trigger condition first, then the parameter shape, then behavior and return vocabulary. Every clause carries information (batching limit, fetch semantics, result codes, cost, input restriction) with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so by naming the status codes, excerpt, and receipt. Combined with fully described parameters and annotation-provided safety profile, an agent has everything needed to call this correctly on the first try.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so url/quote/claimed_title/claimed_date and the data_classification enum are already documented structurally, which sets the baseline at 3. The description usefully restates the 1-20 bound and the public/non-personal restriction, but adds no per-field syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('verify citations or quotes') with a quoted user phrasing that maps directly to the task, and the returned status vocabulary (QUOTE_FOUND etc.) makes the output contract unambiguous. Clearly distinct from siblings like gaip_watch_register or witness_dispute_bundle, which handle different lifecycle stages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when asked to verify citations or quotes ("do these sources really say this?")' gives a clear triggering condition, and the 1-20 citation constraint implies the batch scope. No explicit when-not or alternative-tool routing (e.g., vs. verify_gaip_receipt), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_evidence_packBuild an evidence packA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional: {receipt_ids, since, until, categories, max_items}.
subjectYesThe agent or supplier: its public id or https URL. Never a person.
requesterNoOptional: {purpose, continuity_handle} to include your own receipts.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world behavior, so the bar is lower; the description still adds meaningful context beyond them — that inputs must be public and non-personal, that no account is required, and that the output is 'a compilation, not certification or advice'. It does not mention pagination or the 200-item cap behavior, which are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each doing distinct work: trigger, key input, return shape, and caveats. The use case is front-loaded and there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by enumerating the returned record families plus Merkle proofs and gaps. Combined with 100% schema coverage for the three nested parameters, an agent has everything needed to call this correctly without further documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents `subject`, `scope` and `requester` in detail; baseline 3 applies. The description echoes the subject form (public id or https URL) and adds the privacy constraint ('inputs must be public and non-personal'), but adds nothing about scope/categories/receipt_ids semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Build an evidence pack') and enumerates the returned record types (conformance, watch, witness, repair, incident, gaps), which is far more than a restatement of the title. It distinguishes itself from narrower siblings like gaip_incident_bundle by framing the result as a broad compilation, though it does not name any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit triggering situation: 'Use this when an insurer, auditor or buyer asks what evidence exists about an agent or supplier.' The `requester.purpose` enum (INSURER, AUDITOR, BUYER) reinforces that framing. It does not, however, say when to prefer a narrower sibling such as verify_gaip_receipt or inspect_counterparty_evidence instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_incident_bundleBuild an incident evidence bundleA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional: short incident title.
receipt_idsNoGAIP receipt ids you hold about the incident.
observationsNoAttributed observations, each {source, statement, observed_at_utc}.
ai_system_refNoOptional: public id or URL of the AI system involved; given alone, GAIP starts the timeline from its own public records of that system.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered; the description goes further by disclosing cost/account posture ('Free, read-only, no account'), an input legality constraint ('inputs must be public and non-personal'), and an explicit scope disclaimer about fault/cause/liability. It does not describe the timeline's structure or handling of unverified receipts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences: trigger, inputs, output plus disclaimers. Front-loaded with the usage condition and nothing repeated unnecessarily.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully characterizes the return (verified source-attributed timeline plus an Art. 73 reference aid) and covers the key input restrictions. Remaining gaps are minor: it doesn't state behavior when only ai_system_ref is supplied (the schema does) or how verification failures surface in the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters including the enum on source_type and the data_classification constraint. The description restates receipt_ids and observations and echoes the public/non-personal requirement without adding syntax, format, or edge-case meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource: it takes receipt_ids plus observations and returns a verified, source-attributed timeline. It also states a precise non-outcome ('No fault, cause or liability finding'), which tells an agent exactly what kind of artifact this produces versus the sibling receipt-verification tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when something went wrong with an agent and you need the facts in order' gives a clear triggering condition. It does not name alternatives (e.g. gaip_evidence_pack, gaip_receipt_export) or state when not to use it, so routing between the similar bundle/pack siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_measure_outcome_valueDid the task deliver, and at what cost?AInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe task: {acceptance_criteria}.
costsYesCaller-stated costs in GBP: agent_gbp, compute_gbp, human_review_gbp, repair_gbp.
currencyNoOptional: ISO 4217 code of the cost amounts (default GBP).GBP
deliveryYesWhat was delivered: {status, receipt_id?}.
fx_to_gbpNoOptional: {rate, as_of, source} - your GBP rate; GBP equivalents are then reported, labelled with it. GAIP never uses built-in rates.
syntheticNoOptional: true marks a test call.
episode_idYesOptional: your own id to group related calls.
task_classNoOptional: short name of the task, e.g. weather_forecast.
evidence_refsNoOptional: references to your own evidence (ids or URLs).
delivery_checkNoOptional: {url, checks} - GAIP tests the delivery at this public https URL now with Witness checks; its verdict sets delivery.status.
downstream_useNoOptional: {status: USED|NOT_USED, evidence_ref}.
counterparty_idNoName or URL of the agent or service.
baseline_cost_gbpNoOptional: what the task cost before, in GBP.
continuity_handleNoOptional: the continuity_handle from an earlier GAIP result; adds running totals over your own earlier tasks.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC
independent_operator_idNoOptional: your operator id (recorded as a claim, not verified).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-idempotent, open-world write that is not destructive; the description usefully explains the side effect is limited to recording a GAIP receipt, and that there is no account or fee. It also discloses that delivery_check causes GAIP to fetch and test a public URL immediately and that its verdict overrides delivery.status, which is real behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the use case, then inputs, then returns, then caveats in a compact block with no filler. Slightly telegraphic phrasing ('delivery_check {url, checks} has GAIP test delivery now') costs a little readability but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 16 parameters including nested objects, the description does the needed work by naming the return artifacts and the receipt-only side effect. Remaining gaps are minor: no explicit idempotency/duplicate-call behavior and no note on rate limits or size caps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across 16 parameters, so the schema already documents nested shapes, enums, and defaults. The description names the four required inputs and explains delivery_check's timing/verdict behavior, but adds little that the schema does not already say, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete purpose: assess whether an outcome-priced task delivered and at what cost, and names the outputs (dossier, running totals, receipt). It also scopes out a related question ('No ROI claim'), which sharpens what the tool is not. No siblings exist, so no cross-tool differentiation is needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use this when asked whether an outcome-priced task delivered and what it cost') and adds a hard precondition ('Inputs must be public and non-personal'). No alternatives are named, but none exist in this toolset, so the guidance is essentially complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_receipt_exportExport a GAIP receiptA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYesx402, erc8004 or vc.
receipt_idYesThe 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.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, yet the description adds substantive behavior: Ed25519 signing when a runtime key exists, embedded hash chain and Merkle proof, and no on-chain write. It also discloses a non-obvious input constraint (inputs must be public and non-personal), which is real value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case, then formats, then signing/proof semantics, then constraints — a sensible priority order with no filler sentences. The final clause packs several facts into one semicolon-joined line, which is dense but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema tool with full schema coverage, the description covers purpose, format semantics, cryptographic behavior, and input constraints. The only real gap is what the exported artifact actually looks like, which the absence of an output schema leaves unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description enriches the enum with meaning the schema lacks: x402 is "attestation style," erc8004 is a "validation-response shape," and vc is "W3C-VC-like JSON-LD." This helps an agent choose a format rather than guess from bare tokens.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (export/re-render) and resource (a GAIP receipt) and states the operative dimension: converting an existing receipt into a different serialization (x402, erc8004, vc). This clearly separates it from verify_gaip_receipt and gaip_check_sar_receipt, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when you need a GAIP receipt in another format" supplies a concrete trigger condition, and the format list makes the selection criteria clear. It stops short of naming alternatives or stating when NOT to use it (e.g., to verify rather than re-render a receipt), which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_record_extractExtract of GAIP's record about a URLA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe A2A agent card, MCP endpoint or shop product page URL, exactly as recorded.
limitNoOptional: most entries to return, newest kept (default 50).
sinceNoOptional: start of the range (YYYY-MM-DD or RFC 3339).
untilNoOptional: end of the range (YYYY-MM-DD, inclusive, or RFC 3339).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without relying on annotations, it discloses that the tool is free, read-only, requires no account, and that inputs must be public and non-personal. It also notes it is a 'free preview', implying possible limitations. It does not describe output format details beyond listing entry fields, but that is substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the primary use case, then parameters, then returns, then constraints. Every sentence adds information, though the listing of return fields and the final constraints make it slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup tool with full schema description coverage and no output schema, the description covers purpose, usage trigger, key parameters, return content, and access constraints. It is nearly complete, missing only explicit mention of the `limit` parameter and any pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by naming the key parameters (`url`, optional `since`, `until`) and the context that the URL is an agent card, MCP endpoint, or shop product page. It omits `limit`, but the schema covers it fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: extracting GAIP's record about a URL as proof of declaration on a date. It is clearly distinguished from siblings like gaip_evidence_pack or gaip_receipt_export by naming exactly what is returned (entries with chain positions, hashes, daily anchors, signature).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear trigger: 'Use this when you need proof of what an agent or shop page declared on a date.' This frames the use case well, but it does not name alternative sibling tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_verify_supplier_claimsVerify an agent's or supplier's claimsAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimsYesClaims to check, each {id, text}.
metadataYesThe published agent card, MCP server description or OpenAPI document (as JSON).
protocolNoCounterparty protocol. Inferred from metadata when omitted, otherwise MCP.
syntheticNoOptional: true marks a test call.
episode_idNoOptional: your own id to group related calls.
task_classNoOptional: short name of the task, e.g. weather_forecast.supplier_claim_check
observationsNoOptional: what you saw, each {claim_id, result: PASS|FAIL, detail}.
counterparty_idNoName or URL of the agent/service. Optional.
continuity_handleNoOptional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC
independent_operator_idNoOptional: your operator id (recorded as a claim, not verified).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, and the description usefully adds what the write actually is ('records a GAIP receipt only') plus cost/auth context ('Free, no account'). With no output schema, it also discloses the return shape (per-claim what GAIP saw, what you reported, whether they agree), which is the right burden to carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences with the core action front-loaded, then inputs, then return shape, then constraints. No filler or restated name/title content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, nested-object tool with no output schema, the description covers the meaning of the main flow, the optional live-test path, and the return semantics. Secondary params (episode_id, task_class, continuity_handle, synthetic) are left to the schema, which documents them adequately, so completeness is solid though not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains the claim object's id requirement and the non-schema `check_url` field that triggers immediate GAIP testing, and clarifies that observations are your reported results versus GAIP's own findings. That earns above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('check what an agent, API or supplier claims') and spells out the core mechanic (pass claims, optionally add check_url for GAIP to test live, supply observations). There are no siblings to distinguish from, and the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context ('Use this to check what an agent, API or supplier claims') plus a hard precondition ('Inputs must be public and non-personal'), and notes it is free with no account required. It stops short of explicit when-not-to-use guidance, but with no sibling tools the practical gap is small.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_watch_eventsRead watch change eventsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional: maximum events to return.
watch_idNoThe watch_id returned by gaip_watch_register.
continuity_handleYesThe continuity_handle from an earlier GAIP result; proves you own these watches.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnly/idempotent/non-destructive, but the description adds genuinely new context: it is free, needs no account, and requires inputs to be public and non-personal. It also discloses the shape of the result, which the annotations do not.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the trigger front-loaded and the return payload second. 'Read-only' is restated even though annotations cover it, a small redundancy, but nothing else is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully summarizes return fields and auth requirements, and the nested continuity_handle is documented in the schema. It is close to complete; pagination/ordering of the returned events is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents limit, watch_id, and continuity_handle. The description only reinforces the continuity_handle's ownership role ('proves you own these watches'), adding marginal meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Read watch change events') and enumerates what comes back (verdict before/after, change summary, receipt and webhook delivery status). It implicitly separates itself from gaip_watch_list and gaip_watch_register, but never names the alternative explicitly, so a sibling-aware agent still has to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when asked what changed on a watched agent or service' gives a clear triggering context, and it tells the caller to pass continuity_handle and optionally watch_id. It stops short of naming when NOT to use it (e.g., listing watches vs. reading events).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_watch_listList my watchesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
continuity_handleYesThe continuity_handle from an earlier GAIP result; proves you own these watches.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: exactly which fields come back (kind, target, last verdict, last/next check, webhook endpoint), that the secret is never returned, and that the operation is free with no account — a solid supplement beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences: trigger first, the single required input second, the return shape and safety limits last. No filler, no repetition of the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description compensates by enumerating the returned fields and explicitly noting the secret is excluded. Combined with the annotations covering the safety profile and the fully-described single parameter, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and schema description coverage is 100%, with the schema itself explaining that the handle 'proves you own these watches.' The description only restates 'pass your continuity_handle,' adding no format or provenance detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — listing the watches the caller owns — and names the trigger explicitly ('when asked which agents or services you are watching'). It implicitly separates itself from gaip_watch_events (events vs. watch list) and gaip_watch_register/remove, but it never names a sibling outright, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when asked which agents or services you are watching' gives a clear, concrete activation context, and the read-only/free framing tells the agent this is safe to call unprompted. No explicit when-not or named alternative is given, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_watch_registerWatch an agent or MCP server for changesAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slaNoDELIVERY_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.
kindYesAGENT_READINESS (agent URL), SUPPLIER_CARD (published card), DELIVERY_TERMS (terms_id) or DELIVERY_SLA (terms_id plus sla terms).
terms_idNoDELIVERY_TERMS or DELIVERY_SLA: terms_id from witness_register_terms.
target_urlNoPublic https URL (AGENT_READINESS, SUPPLIER_CARD). No query string.
webhook_urlNoOptional: your own public https endpoint for signed change events.
interval_hoursNoHours between checks: 24 minimum on the free tier; 1 for DELIVERY_SLA.
continuity_handleYesThe continuity_handle from an earlier GAIP result; proves you own these watches.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only covering safety flags, the description adds substantial operational context: a 24-hour re-check cadence, a 3-free-watch quota, receipting of each change, optional webhook delivery, no account required, and the public/non-personal input constraint. These are exactly the traits an agent needs and none are duplicated from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage trigger, followed by compact operational facts in two dense sentences with no filler. A slightly tighter structure could separate the quota/cadence facts from the input constraints, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with a nested handle object and no output schema, the description covers cadence, quota, receipting, webhook, cost, and data constraints. It does not describe how watch results are retrieved (presumably via gaip_watch_events), a minor omission given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including the kind enum, interval_hours bounds, and the nested continuity_handle. The description only names continuity_handle, kind and target_url, which restates the schema rather than adding format or precedence detail, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('keep an eye on an agent or MCP server') and the title adds 'Watch ... for changes', so the agent can tell this registers a monitoring watch rather than reading or removing one. It does not explicitly name the sibling tools it differs from (gaip_watch_list, gaip_watch_events, gaip_watch_remove), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete invocation trigger with a user phrasing example ('tell me if it changes or goes down'), which tells the agent when this tool applies. There is no exclusion or explicit alternative-routing (e.g., use watch_events to read results), so it is clear context without alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gaip_watch_removeRemove a watchA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
watch_idYesThe watch_id returned by gaip_watch_register.
continuity_handleYesThe continuity_handle from an earlier GAIP result; proves you own these watches.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, but the description goes well beyond them: it specifies exactly what is destroyed (stored events), what survives (retained receipts stay verifiable), the cost/auth model (free, no account), the side effect (records a GAIP receipt), and an input constraint (public, non-personal). This is unusually rich behavioral disclosure for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the trigger condition, then the required inputs, then the destructive/retention semantics. No filler and no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, two-parameter tool with nested inputs and no output schema, the description covers the trigger, the required arguments, destruction scope, retention behavior, cost/auth, and input constraints — everything an agent needs before invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents both watch_id (returned by gaip_watch_register) and continuity_handle (proves ownership). The description restates that both must be passed but adds no format or edge-case detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — stop/remove a watch on an agent or service — and pairs it against the register flow via the required watch_id, so an agent can tell it apart from gaip_watch_register or gaip_watch_list without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when asked to stop watching an agent or service" gives an explicit trigger condition. It does not name a when-not case or explicitly contrast with gaip_watch_list (view) versus this removal tool, so the guidance is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_counterparty_evidenceWhat evidence exists about this agent?A
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
syntheticNoOptional: true marks a test call.
episode_idNoOptional: your own id to group related calls.
task_classNoTask you want evidence for. Optional.COUNTERPARTY_EVIDENCE
max_age_daysNoOptional freshness window (default 30): GAIP history records older than this are STALE and do not count toward evidence_sufficiency.
observationsNoOptional: observations about it, each {source, observed_at, evidence_digest, lifecycle_state, claim}.
counterparty_idNoName or URL of the agent or service.
continuity_handleNoOptional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC
independent_operator_idNoOptional: your operator id (recorded as a claim, not verified).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds real value beyond them: no authentication or account required, a data-classification restriction on inputs, and an explicit negative capability boundary ('Never a trust score or recommendation'), which prevents a plausible misuse. It does not discuss rate limits or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct load: trigger, inputs, return contents, and boundaries. The usage trigger is front-loaded and nothing is repeated from the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the return contents (evidence coverage, conflicts, gaps, GAIP's own earlier checks, a receipt). Combined with the input guidance for a nine-parameter, zero-required tool, an agent has enough to invoke it correctly, though the sibling-tool choice remains unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all nine parameters, including the observations item shape and max_age_days semantics. The description only calls out counterparty_id and observations, adding no format or syntax detail beyond what the schema provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (inspect), resource (counterparty evidence) and the trigger scenario (before delegating to an agent). It is clear what the tool returns, but it never names or contrasts with its closest sibling, gaip_evidence_pack, so an agent must infer which of the two evidence tools fits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage trigger ('when asked what evidence exists about an agent before delegating to it') and constraints ('free, read-only, no account; inputs must be public and non-personal'). It lacks any when-not guidance or explicit routing against the sibling evidence/receipt tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_gaip_receiptVerify a GAIP receiptA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
syntheticNoOptional: true marks a test call.
episode_idNoOptional: your own id to group related calls.
receipt_idYesA receipt_id returned by an earlier GAIP call.
continuity_handleNoOptional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.
independent_operator_idNoOptional: your operator id (recorded as a claim, not verified).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses the returned artifacts (retained record, hash chain, Merkle inclusion proof), the integrity-only limitation, cost and account requirements ('Free, read-only, no account'), and input privacy constraints ('inputs must be public and non-personal'). These are meaningful behavioral details that help an agent invoke it correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tightly written sentences with no waste. It front-loads the usage condition, then the return behavior, then the key limitation and constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only verification tool with no output schema, the description supplies what is needed: when to use it, what it returns, and the crucial integrity-only caveat. It is complete enough for correct selection and invocation without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters, including receipt_id and optional grouping fields. The description only echoes receipt_id and does not add syntax or format guidance beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: verify a GAIP receipt using a held receipt_id. It also clarifies the exact question answered ('is this receipt genuine?') and what the tool returns, which distinguishes it from sibling tools like gaip_receipt_export or gaip_evidence_pack.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage condition: use when you hold a GAIP receipt_id and want to confirm it. It also bounds the tool with 'Integrity only: it does not make the underlying claim true,' but it does not explicitly name alternative tools or when-not-to-use scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

witness_accept_termsAccept registered terms (the other party)AInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
terms_idYeswt_... from witness_register_terms.
agreement_idNoOnly on an existing agreement: the buyer confirms business purpose or expert determination, or either party declares a consumer contract.
finding_modeNoEVIDENCE_ONLY, or EXPERT_DETERMINATION (needs the buyer's confirmation).EVIDENCE_ONLY
acceptance_ruleNoWhat counts as delivered, by when, and who may ask for the finding.
seller_key_proofNoOptional: {jwk, jws over the terms_id, host}; GAIP checks the signature and whether the host published that key.
consumer_contractNotrue if either party is a consumer: evidence summary only, no finding.
continuity_handleNoRequired: your own continuity handle (continuity_id, token).
agreement_cancelledNoOnly 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_classificationNoPUBLIC or NON_PERSONAL_PUBLIC.
mandate_check_receiptNoOptional: 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_statementNoRequired 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.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: cost and auth ('Free, no account'), the side effect ('records a GAIP receipt only'), the return value ('an agreement_id naming both parties'), and a data constraint ('Inputs must be public and non-personal'). It does not clarify re-invocation behavior despite idempotentHint=false, which for a two-party acceptance flow would be useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition, then packs invocation, return, and constraints into three dense but purposeful clauses. The semicolon-heavy style is compact; nothing is obviously wasteful, though the density trades off some readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, nested-object tool with no output schema, the description covers the purpose, trigger, core inputs, return value, and constraints adequately, and the schema carries the full parameter burden. It omits the optional higher-complexity paths (finding_mode, seller_key_proof, mandate_check_receipt, consumer_contract), which are left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 11 parameters in detail, including the nested acceptance_rule and seller_key_proof objects. The description reinforces a few key params (terms_id, continuity_handle, business_purpose_statement, agreement_id) and their cross-parameter relationship, but adds little that isn't already in the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (accept), resource (registered terms), and the caller's role ('the other party'), which cleanly separates it from witness_register_terms. An agent can distinguish it from its siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use this when you are the other party to terms a buyer registered') and explains the two-sided flow where the buyer later confirms with an agreement_id. It doesn't explicitly state when not to use it or name the alternative tool for the registering party, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

witness_deliveryDid the service deliver?A
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoBUYER_SUBMITTED: the response body you received (max 32 KiB).
modeYesPUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in.
terms_idYesThe terms_id returned when the terms were registered.
syntheticNoOptional: true marks a test call.
episode_idNoOptional: your own id to group related calls.
body_sha256NoBUYER_SUBMITTED: SHA-256 of the body, instead of the body.
http_statusNoBUYER_SUBMITTED: the HTTP status you received.
content_typeNoBUYER_SUBMITTED: the Content-Type you received.
research_consentNoOptional, default false. true lets this delivery check be counted, never named, in GAIP's monthly aggregate research figures.
continuity_handleNoOptional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC
independent_operator_idNoOptional: your operator id (recorded as a claim, not verified).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent/non-destructive, and the description adds real context beyond them: free, no account, inputs must be public and non-personal, and the shape of the result (PASS/FAIL/UNKNOWN per check, deltas since last time, a receipt). No output schema exists, so disclosing the return contents is genuinely valuable here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case, then mode guidance, then the result summary and constraints; every clause earns its place. The embedded quoted question and stacked parenthetical slightly crowd the prose but do not waste space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with a nested object and no output schema, the description covers the essentials: trigger, mode choice, terms_id provenance, return shape, and privacy constraints. The optional continuity/consent/classification parameters rely on the 100%-covered schema, which is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by stating where terms_id comes from (witness_register_terms) and clarifying the two modes' semantics, though the optional fields (continuity_handle, research_consent, data_classification, episode_id) are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: check whether a service delivered what was agreed, with the trigger question quoted back. It also names the sibling witness_register_terms as the source of terms_id, so the agent can tell it apart from the registration tool without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition ('when asked whether a service delivered what was agreed') and explains which mode to pick (PUBLIC_REPLAY vs BUYER_SUBMITTED) plus the public/non-personal input constraint. It does not explicitly rule out or route to other verification siblings such as gaip_verify_supplier_claims or verify_gaip_receipt, so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

witness_dispute_bundleExport a delivery evidence bundleA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
terms_idNoOr the terms_id (wt_...) of the agreement.
receipt_idNoA delivery receipt_id from witness_delivery.
receipt_formatNogaip (default) or x402_sar: also give each delivery in the x402 SAR draft shape.gaip
continuity_handleNoOptional: the continuity_handle that registered a DELIVERY_SLA watch on these terms; adds your SLA breaches.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive. The description adds genuinely new context: it is free, needs no account, requires public and non-personal inputs, and makes 'no judgement of who is right' explicit. That is useful beyond the structured hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded trigger, then the input choice, then what is returned, then constraints. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explicitly enumerates the returned bundle contents and states the access/cost constraints, so an agent has everything needed to call it and understand the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds the one-of selection rule ('Pass terms_id or a delivery receipt_id') that the schema (0 required params, no oneOf) does not encode, clarifying how to satisfy the input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (export/hand over) and resource (a hash-stamped delivery evidence bundle containing terms, checks, receipts, timeline, summary), and its 'delivery failed / dispute' framing separates it from siblings like witness_delivery and gaip_receipt_export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger: 'Use this when a witnessed delivery failed and you must hand the facts to the other party or a resolver.' Clear context for invocation, though it does not name alternative siblings or state when NOT to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

witness_findingWas the agreed rule met? (signed finding)AInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
agreement_idYeswa_... from witness_accept_terms.
continuity_handleNoRequired: a party's own continuity handle.
data_classificationNoPUBLIC or NON_PERSONAL_PUBLIC.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=false and readOnlyHint=false, but the description adds behavior beyond that: 'Evidence only; no sum of money. Free, no account; records a GAIP receipt only.' This clarifies the call is non-financial and produces a receipt as a side effect, which is useful context the annotations don't convey. It doesn't address idempotency or what happens on repeated calls, so it doesn't reach 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is five short, front-loaded sentences with no repetition or filler. Each sentence contributes a distinct detail: when to use, what to pass, the return values, the evidence-only scope, the cost/auth model, and the input constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-like, non-destructive tool with no output schema and full schema coverage, the description is complete: it covers the trigger condition, required inputs, return format, and any side effects (a receipt). There is no apparent missing information that would cause an agent to misuse the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description adds meaningful guidance by naming `agreement_id` (from witness_accept_terms) and `continuity_handle` as the parameters to pass. It also states the input constraint 'Inputs must be public and non-personal,' which reinforces the data_classification enum. This is more than what the schema alone provides, justifying a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — it returns a signed GAIP finding (MET/NOT_MET/INDETERMINATE) on the agreed rule for an agreement. It clearly distinguishes itself from siblings like witness_accept_terms, witness_delivery, and witness_signoff by clarifying it produces an evidence-only verdict, not a delivery record or a signoff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear precondition: 'Use this when deliveries exist for an agreement.' That context tells the agent when the tool is applicable. It doesn't name alternative tools or state when NOT to use it (e.g., if no deliveries exist or if a dispute bundle is wanted), so it falls short of the 5 tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

witness_register_termsRegister what a service should deliverAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
checksNo1-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_refNoOptional: name of the supplier. Defaults to the host of service_url.
service_urlYesPublic https URL of the service.
research_consentNoOptional, default false. true lets this record be counted, never named, in GAIP's monthly aggregate research figures (for example for insurers).
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as a non-read, non-idempotent write with no destruction; the description corroborates and enriches this by disclosing it records only a GAIP receipt, is free, requires public/non-personal inputs, and returns a terms_id (implying a fresh record per call). It doesn't spell out consequences of repeating the call, so it's strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short, front-loaded sentences: trigger, required input, defaults, return value/next step, then constraints. Nothing is wasted and the call-relevant facts come first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully supplies the return value (terms_id), the workflow it belongs to, and input constraints. For a 5-param, 1-required tool this is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds genuine value by explaining the default check behavior (HTTP 200 + non-empty body) and enumerating check categories (JSON keys, latency, size, regex) beyond the schema's field list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('register what a service should deliver') and frames it as creating neutral evidence of a public service's contract. It also names the downstream sibling (witness_delivery), so an agent can distinguish this registration step from the delivery-verification step without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger ('when about to depend on a public HTTPS service') and the follow-up action ('then call witness_delivery'), plus prerequisites (public, non-personal inputs; free, no account). It lacks an explicit when-not or named alternative, so it falls just short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

witness_signoffRecord a role's decision on a proposal (sign-off)AInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoThe role that decided: APPROVER, REVIEWER, OWNER or OPERATOR. Any other text is refused (ROLE_VOCABULARY); use role_id for your own id.
role_idNoOptional: your own opaque role identifier (one token, no spaces). GAIP keeps it only as a keyed hash, never in clear.
decisionYesThe decision as recorded: APPROVED, REFUSED or CHANGED.
agent_urlNoOptional: public https URL of the agent whose proposal was decided (the system identifier).
agreement_idNoOptional: the wa_... Deals agreement from witness_accept_terms this decision concerns; the finding then lists it.
reason_sha256NoOptional: SHA-256 (64 hex) of the reason you keep; anything but a hash is refused.
proposal_sha256YesSHA-256 (64 hex) of what the agent proposed, computed by you; the proposal itself is never sent.
continuity_handleNoOptional: your continuity handle (continuity_id, token); one is issued with the receipt when absent.
data_classificationNoPUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.PUBLIC

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (write, non-idempotent, non-destructive, closed-world), the description adds real behavioral context: the return is a chained, signed decision entry attributed to the role and not GAIP, the call is free with no account, and inputs must be public and non-personal. It does not state repeat-call behavior explicitly, but the chained-entry framing plus the non-idempotent hint communicate the key trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, front-loaded with the use condition, then the key arguments, then the return and constraints. Every sentence carries information with no filler, though the parameter list slightly duplicates the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter write tool with no output schema, the description covers the essential operational facts: what it returns, that it is a receipt only, and the public/non-personal input constraint. The absence of explicit idempotency/retry guidance is a minor residual gap given the annotations already flag non-idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema, including enum values and hash length constraints. The description names proposal_sha256, decision, and agreement_id but adds no syntax or semantics beyond what the schema provides, so it sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: recording a role's decision (sign-off) on an agent's proposal, with the exact vocabulary of roles and decisions. It is clear what the tool does, though it never explicitly contrasts itself with siblings like witness_finding or witness_accept_terms, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when a role ... decided on an agent's proposal" gives a clear trigger condition, and the named enums narrow when it applies. However, no alternative tool or exclusion is named, so the agent is not told which tool to use instead when the condition does not hold.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedgaip_record_extract1 field changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "since": "2026-09-01",
        -    "url": "https://mcp.deepwiki.com/mcp"
        -  }
        -]New value: +[
        +  {
        +    "since": "2026-09-01",
        +    "url": "https://huggingface.co/mcp"
        +  }
        +]
  2. 1 tool update
    • Changedwitness_accept_terms1 field changed
      • addedInput schema / properties / agreement_cancelled
        Added value: +{
        +  "default": false,
        +  "description": "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).",
        +  "type": "boolean"
        +}
  3. 2 tool updates
    • Changedwitness_accept_terms1 field changed
      • addedInput schema / properties / mandate_check_receipt
        Added value: +{
        +  "description": "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.",
        +  "type": "object"
        +}
    • Addedwitness_signoff
  4. 1 tool update
    • Changedwitness_accept_terms3 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "continuity_handle": {
        -      "continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>",
        -      "token": "<continuity_handle.token returned by any GAIP tool>"
        -    },
        -    "terms_id": "<terms_id from witness_register_terms>"
        -  }
        -]New value: +[
        +  {
        +    "business_purpose_statement": true,
        +    "continuity_handle": {
        +      "continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>",
        +      "token": "<continuity_handle.token returned by any GAIP tool>"
        +    },
        +    "terms_id": "<terms_id from witness_register_terms>"
        +  }
        +]
      • changedInput schema / properties / agreement_id / description
        Previous value: -"Only to confirm expert determination (buyer) or declare a consumer contract on an existing agreement."New value: +"Only on an existing agreement: the buyer confirms business purpose or expert determination, or either party declares a consumer contract."
      • addedInput schema / properties / business_purpose_statement
        Added value: +{
        +  "description": "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.",
        +  "type": "boolean"
        +}
  5. 1 tool update
    • Changedwitness_accept_terms1 field changed
      • addedInput schema / properties / seller_key_proof
        Added value: +{
        +  "description": "Optional: {jwk, jws over the terms_id, host}; GAIP checks the signature and whether the host published that key.",
        +  "type": "object"
        +}
  6. 2 tool updates
    • Addedwitness_accept_terms
    • Addedwitness_finding
  7. 1 tool update
    • Changedgaip_receipt_export1 field changed
      • changedInput schema / properties / receipt_id / description
        Previous value: -"A receipt_id returned by an earlier GAIP call."New value: +"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."
  8. 1 tool update
    • Changedgaip_incident_bundle1 field changed
      • changedInput schema / properties / ai_system_ref / description
        Previous value: -"Optional: public id or URL of the AI system involved."New value: +"Optional: public id or URL of the AI system involved; given alone, GAIP starts the timeline from its own public records of that system."
  9. 1 tool update
    • Changedgaip_watch_register1 field changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "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": "SUPPLIER_CARD",
        -    "target_url": "https://weather.example.com/.well-known/agent-card.json",
        -    "webhook_url": "https://hooks.example.com/gaip-watch"
        -  }
        -]New value: +[
        +  {
        +    "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>"
        +  }
        +]
  10. 3 tool updates
    • Addedgaip_record_extract
    • Changedwitness_delivery1 field changed
      • addedInput schema / properties / research_consent
        Added value: +{
        +  "default": false,
        +  "description": "Optional, default false. true lets this delivery check be counted, never named, in GAIP's monthly aggregate research figures.",
        +  "type": "boolean"
        +}
    • Changedwitness_register_terms1 field changed
      • addedInput schema / properties / research_consent
        Added value: +{
        +  "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"
        +}
  11. 8 tool updates
    • Addedassurance_complete
    • Addedassurance_prepare
    • Addedassurance_verify
    • Addedgaip_evidence_pack
    • Addedgaip_incident_bundle
    • Addedgaip_measure_outcome_value
    • Addedgaip_verify_supplier_claims
    • Addedinspect_counterparty_evidence
  12. 3 tool updates
    • Addedgaip_check_sar_receipt
    • Changedgaip_watch_register6 fields changed
      • changedInput schema / properties / interval_hours / description
        Previous value: -"Optional: hours between checks (24 minimum on the free tier)."New value: +"Hours between checks: 24 minimum on the free tier; 1 for DELIVERY_SLA."
      • changedInput schema / properties / interval_hours / minimum
        Previous value: -24New value: +1
      • changedInput schema / properties / kind / description
        Previous value: -"AGENT_READINESS (agent URL), SUPPLIER_CARD (published card) or DELIVERY_TERMS (terms_id)."New value: +"AGENT_READINESS (agent URL), SUPPLIER_CARD (published card), DELIVERY_TERMS (terms_id) or DELIVERY_SLA (terms_id plus sla terms)."
      • changedInput schema / properties / kind / enum
        Previous value: -[
        -  "AGENT_READINESS",
        -  "DELIVERY_TERMS",
        -  "SUPPLIER_CARD"
        -]New value: +[
        +  "AGENT_READINESS",
        +  "DELIVERY_TERMS",
        +  "SUPPLIER_CARD",
        +  "DELIVERY_SLA"
        +]
      • addedInput schema / properties / sla
        Added value: +{
        +  "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"
        +}
      • changedInput schema / properties / terms_id / description
        Previous value: -"DELIVERY_TERMS: terms_id from witness_register_terms."New value: +"DELIVERY_TERMS or DELIVERY_SLA: terms_id from witness_register_terms."
    • Changedwitness_dispute_bundle5 fields changed
      • addedInput schema / properties / continuity_handle
        Added value: +{
        +  "description": "Optional: the continuity_handle that registered a DELIVERY_SLA watch on these terms; adds your SLA breaches.",
        +  "type": "object"
        +}
      • addedInput schema / properties / receipt_format
        Added value: +{
        +  "default": "gaip",
        +  "description": "gaip (default) or x402_sar: also give each delivery in the x402 SAR draft shape.",
        +  "enum": [
        +    "gaip",
        +    "x402_sar"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / receipt_id / description
        Previous value: -"A receipt_id returned by an earlier GAIP call."New value: +"A delivery receipt_id from witness_delivery."
      • addedInput schema / properties / terms_id
        Added value: +{
        +  "description": "Or the terms_id (wt_...) of the agreement.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "receipt_id"
        -]
  13. 1 tool update
    • Changedwitness_register_terms1 field changed
      • changedInput schema / properties / checks / description
        Previous value: -"1-8 checks, each {\"id\": \"http_status_in\", \"allowed\": [200]}, {\"id\": \"content_type_is\", \"value\": \"application/json\"}, {\"id\": \"non_empty\"} or {\"id\": \"json_parses\"}."New value: +"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\"}."
  14. 1 tool update
    • Changedwitness_register_terms1 field changed
      • changedInput schema / properties / checks / description
        Previous value: -"Checks: http_status_in {allowed}, content_type_is {value}, non_empty, json_parses."New value: +"1-8 checks, each {\"id\": \"http_status_in\", \"allowed\": [200]}, {\"id\": \"content_type_is\", \"value\": \"application/json\"}, {\"id\": \"non_empty\"} or {\"id\": \"json_parses\"}."
  15. 9 tool updates
    • Changedgaip_citation_witness2 fields changed
      • addedInput schema / properties / citations / description
        Added value: +"1-20 citations, each {url, quote?, claimed_title?, claimed_date?}."
      • addedInput schema / properties / data_classification / description
        Added value: +"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data."
    • Changedgaip_receipt_export2 fields changed
      • addedInput schema / properties / format / description
        Added value: +"x402, erc8004 or vc."
      • addedInput schema / properties / receipt_id / description
        Added value: +"A receipt_id returned by an earlier GAIP call."
    • Changedgaip_watch_events2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Optional: maximum events to return."
      • addedInput schema / properties / watch_id / description
        Added value: +"The watch_id returned by gaip_watch_register."
    • Changedgaip_watch_register3 fields changed
      • addedInput schema / properties / data_classification / description
        Added value: +"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data."
      • addedInput schema / properties / interval_hours / description
        Added value: +"Optional: hours between checks (24 minimum on the free tier)."
      • addedInput schema / properties / kind / description
        Added value: +"AGENT_READINESS (agent URL), SUPPLIER_CARD (published card) or DELIVERY_TERMS (terms_id)."
    • Changedgaip_watch_remove1 field changed
      • addedInput schema / properties / watch_id / description
        Added value: +"The watch_id returned by gaip_watch_register."
    • Changedverify_gaip_receipt6 fields changed
      • addedInput schema / properties / continuity_handle / description
        Added value: +"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones."
      • addedInput schema / properties / data_classification / description
        Added value: +"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data."
      • addedInput schema / properties / episode_id / description
        Added value: +"Optional: your own id to group related calls."
      • addedInput schema / properties / independent_operator_id / description
        Added value: +"Optional: your operator id (recorded as a claim, not verified)."
      • addedInput schema / properties / receipt_id / description
        Added value: +"A receipt_id returned by an earlier GAIP call."
      • addedInput schema / properties / synthetic / description
        Added value: +"Optional: true marks a test call."
    • Changedwitness_delivery11 fields changed
      • addedInput schema / properties / body / description
        Added value: +"BUYER_SUBMITTED: the response body you received (max 32 KiB)."
      • addedInput schema / properties / body_sha256 / description
        Added value: +"BUYER_SUBMITTED: SHA-256 of the body, instead of the body."
      • addedInput schema / properties / content_type / description
        Added value: +"BUYER_SUBMITTED: the Content-Type you received."
      • addedInput schema / properties / continuity_handle / description
        Added value: +"Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones."
      • addedInput schema / properties / data_classification / description
        Added value: +"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data."
      • addedInput schema / properties / episode_id / description
        Added value: +"Optional: your own id to group related calls."
      • addedInput schema / properties / http_status / description
        Added value: +"BUYER_SUBMITTED: the HTTP status you received."
      • addedInput schema / properties / independent_operator_id / description
        Added value: +"Optional: your operator id (recorded as a claim, not verified)."
      • addedInput schema / properties / mode / description
        Added value: +"PUBLIC_REPLAY: GAIP fetches the public URL itself. BUYER_SUBMITTED: check a response you pass in."
      • addedInput schema / properties / synthetic / description
        Added value: +"Optional: true marks a test call."
      • addedInput schema / properties / terms_id / description
        Added value: +"The terms_id returned when the terms were registered."
    • Changedwitness_dispute_bundle1 field changed
      • addedInput schema / properties / receipt_id / description
        Added value: +"A receipt_id returned by an earlier GAIP call."
    • Changedwitness_register_terms5 fields changed
      • addedInput schema / properties / checks / description
        Added value: +"Checks: http_status_in {allowed}, content_type_is {value}, non_empty, json_parses."
      • addedInput schema / properties / data_classification / description
        Added value: +"PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data."
      • addedInput schema / properties / seller_ref / description
        Added value: +"Optional: name of the supplier. Defaults to the host of service_url."
      • addedInput schema / properties / service_url / description
        Added value: +"Public https URL of the service."
      • changedInput schema / required
        Previous value: -[
        -  "seller_ref",
        -  "service_url",
        -  "checks"
        -]New value: +[
        +  "service_url"
        +]

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    767-2676.com provides tools to hash task schedule bytes and verify signed time and digest receipts for deadline, cancellation, expiry, and handoff checks. Try the free offline sample at https://767-2676.com/schedule/example; fresh signed witnesses cost $0.001 USDC and require payment authorization.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Cryptographically anchored, tamper-evident evidence receipts for AI agents — verified run receipts, existence-at-time proofs, and cited answers from an anchored public record. Remote MCP with proof-gated settlement; attests existence and integrity, never truth.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Signed delivery claims for x402 capacity trades (GPU-hours, storage, API credits, bandwidth). After a payment settles, the paying agent leaves a plain, cryptographically signed record of what was delivered, so a future buyer can check a sellers past history before paying again.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.