GAIP Supplier Watch Agent
Supplier Reliability: compares supplier snapshots and watches interfaces for material change.
Should I use this
Quality & Safety
Findings (1)
- LOWin gaip_compare_supplier_snapshots
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"gaip-supplier-watch": {
"url": "https://www.gaipagents.com/mcp/agents/supplier-watch"
}
}
}Remote endpoints
https://www.gaipagents.com/mcp/agents/supplier-watchstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟡gaip_compare_supplier_snapshots(continuity_handle, counterparty_id, current, data_classification, episode_id, ...)
Use this when asked what changed between two versions of an agent card, MCP server description or OpenAPI document ("did this API break?"). Pass `prior` and `current`. Returns each change as BREAKING / NON_BREAKING / INFO with migration notes and a receipt. Free, no account; records a GAIP receipt only. Inputs must be public and non-personal.
Input Schema
{
"type": "object",
"properties": {
"continuity_handle": {
"additionalProperties": false,
"description": "Optional: the continuity_handle from an earlier GAIP result; links this call to your earlier ones.",
"properties": {
"continuity_id": {
"type": "string"
},
"token": {
"type": "string"
}
},
"required": [
"continuity_id",
"token"
],
"type": "object"
},
"counterparty_id": {
"description": "Name or URL of the agent/service. Optional.",
"type": "string"
},
"current": {
"description": "The later version, same kind as `prior`.",
"type": "object"
},
"data_classification": {
"default": "PUBLIC",
"description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.",
"enum": [
"PUBLIC",
"NON_PERSONAL_PUBLIC"
],
"type": "string"
},
"episode_id": {
"description": "Optional: your own id to group related calls.",
"type": "string"
},
"independent_operator_id": {
"description": "Optional: your operator id (recorded as a claim, not verified).",
"type": "string"
},
"prior": {
"description": "The earlier version: agent card, MCP server description, OpenAPI document or snapshot.",
"type": "object"
},
"protocol": {
"description": "Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.",
"enum": [
"A2A",
"MCP",
"OPENAPI"
],
"type": "string"
},
"synthetic": {
"description": "Optional: true marks a test call.",
"type": "boolean"
},
"task_class": {
"default": "supplier_snapshot_comparison",
"description": "Optional: short name of the task, e.g. weather_forecast.",
"type": "string"
}
},
"required": [
"prior",
"current"
],
"additionalProperties": true,
"examples": [
{
"counterparty_id": "example-weather-agent",
"current": {
"capabilities": {
"streaming": true
},
"name": "Weather Agent",
"protocolVersion": "0.3.0",
"security": [
{
"bearer": []
}
],
"securitySchemes": {
"bearer": {
"scheme": "bearer",
"type": "http"
}
},
"skills": [
{
"id": "forecast",
"name": "Forecast"
}
],
"url": "https://weather.example.com/v2/a2a",
"version": "2.0.0"
},
"prior": {
"capabilities": {
"streaming": true
},
"name": "Weather Agent",
"protocolVersion": "0.3.0",
"skills": [
{
"id": "forecast",
"name": "Forecast"
},
{
"id": "alerts",
"name": "Severe weather alerts"
}
],
"url": "https://weather.example.com/a2a",
"version": "1.4.0"
}
}
]
}🟡gaip_watch_register(continuity_handle, data_classification, interval_hours, kind, target_url, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"continuity_handle": {
"description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
"properties": {
"continuity_id": {
"type": "string"
},
"token": {
"type": "string"
}
},
"required": [
"continuity_id",
"token"
],
"type": "object"
},
"data_classification": {
"default": "PUBLIC",
"description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.",
"enum": [
"PUBLIC",
"NON_PERSONAL_PUBLIC"
],
"type": "string"
},
"interval_hours": {
"default": 24,
"description": "Optional: hours between checks (24 minimum on the free tier).",
"maximum": 168,
"minimum": 24,
"type": "integer"
},
"kind": {
"description": "AGENT_READINESS (agent URL), SUPPLIER_CARD (published card) or DELIVERY_TERMS (terms_id).",
"enum": [
"AGENT_READINESS",
"DELIVERY_TERMS",
"SUPPLIER_CARD"
],
"type": "string"
},
"target_url": {
"description": "Public https URL (AGENT_READINESS, SUPPLIER_CARD). No query string.",
"format": "uri",
"maxLength": 2048,
"type": "string"
},
"terms_id": {
"description": "DELIVERY_TERMS: terms_id from witness_register_terms.",
"type": "string"
},
"webhook_url": {
"description": "Optional: your own public https endpoint for signed change events.",
"format": "uri",
"maxLength": 2048,
"type": "string"
}
},
"required": [
"continuity_handle",
"kind"
],
"additionalProperties": false,
"examples": [
{
"continuity_handle": {
"continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>",
"token": "<continuity_handle.token returned by any GAIP tool>"
},
"interval_hours": 24,
"kind": "SUPPLIER_CARD",
"target_url": "https://weather.example.com/.well-known/agent-card.json",
"webhook_url": "https://hooks.example.com/gaip-watch"
}
]
}🟢gaip_watch_list(continuity_handle)
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.
Input Schema
{
"type": "object",
"properties": {
"continuity_handle": {
"description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
"properties": {
"continuity_id": {
"type": "string"
},
"token": {
"type": "string"
}
},
"required": [
"continuity_id",
"token"
],
"type": "object"
}
},
"required": [
"continuity_handle"
],
"additionalProperties": false,
"examples": [
{
"continuity_handle": {
"continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>",
"token": "<continuity_handle.token returned by any GAIP tool>"
}
}
]
}🔴gaip_watch_remove(continuity_handle, watch_id)
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.
Input Schema
{
"type": "object",
"properties": {
"continuity_handle": {
"description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
"properties": {
"continuity_id": {
"type": "string"
},
"token": {
"type": "string"
}
},
"required": [
"continuity_id",
"token"
],
"type": "object"
},
"watch_id": {
"description": "The watch_id returned by gaip_watch_register.",
"type": "string"
}
},
"required": [
"continuity_handle",
"watch_id"
],
"additionalProperties": false,
"examples": [
{
"continuity_handle": {
"continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>",
"token": "<continuity_handle.token returned by any GAIP tool>"
},
"watch_id": "<watch_id from gaip_watch_register>"
}
]
}🟢gaip_watch_events(continuity_handle, limit, watch_id)
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.
Input Schema
{
"type": "object",
"properties": {
"continuity_handle": {
"description": "The continuity_handle from an earlier GAIP result; proves you own these watches.",
"properties": {
"continuity_id": {
"type": "string"
},
"token": {
"type": "string"
}
},
"required": [
"continuity_id",
"token"
],
"type": "object"
},
"limit": {
"description": "Optional: maximum events to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"watch_id": {
"description": "The watch_id returned by gaip_watch_register.",
"type": "string"
}
},
"required": [
"continuity_handle"
],
"additionalProperties": false,
"examples": [
{
"continuity_handle": {
"continuity_id": "<continuity_handle.continuity_id returned by any GAIP tool>",
"token": "<continuity_handle.token returned by any GAIP tool>"
},
"limit": 10,
"watch_id": "<watch_id from gaip_watch_register>"
}
]
}🟢gaip_supplier_reliability(counterparty_id, data_classification, failure, failure_started_at, failures, ...)
Use this when a supplier agent or API you depend on started failing ("did something change on their side?"). Pass its `supplier_url` and the `failure`. Returns the diagnosis plus changes GAIP observed around then (correlated in time, not causation), with receipts. Free, read-only, no account; inputs must be public and non-personal.
Input Schema
{
"type": "object",
"properties": {
"counterparty_id": {
"description": "Optional: name of the supplier.",
"type": "string"
},
"data_classification": {
"default": "PUBLIC",
"description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.",
"enum": [
"PUBLIC",
"NON_PERSONAL_PUBLIC"
],
"type": "string"
},
"failure": {
"description": "{code, detail?, http_status?} as for gaip_diagnose_integration_failure.",
"type": "object"
},
"failure_started_at": {
"description": "Optional: RFC 3339 time the failures started.",
"format": "date-time",
"type": "string"
},
"failures": {
"description": "Optional: several failures, each {code, detail}.",
"maxItems": 100,
"minItems": 1,
"type": "array"
},
"lookback_days": {
"default": 14,
"description": "Optional: days of GAIP observations to look back over.",
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"protocol": {
"description": "A2A, MCP or OPENAPI. Inferred when omitted.",
"enum": [
"A2A",
"MCP",
"OPENAPI"
],
"type": "string"
},
"supplier_url": {
"description": "Public https URL of the supplier's agent card, MCP server or API.",
"format": "uri",
"maxLength": 2048,
"type": "string"
},
"task_class": {
"description": "Optional: short name of the task, e.g. weather_forecast.",
"type": "string"
}
},
"required": [
"supplier_url"
],
"additionalProperties": true,
"examples": [
{
"failure": {
"code": 404,
"detail": "Not Found"
},
"failure_started_at": "2026-09-27T12:00:00Z",
"supplier_url": "https://weather.example.com/.well-known/agent-card.json"
}
]
}Community
Evidence