GAIP Supplier Watch Agent

Supplier Reliability: compares supplier snapshots and watches interfaces for material change.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'gaip_compare_supplier_snapshots' name length outside 3-30 rangein gaip_compare_supplier_snapshots

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,270Tokens (tool definitions)
~3.4 KBTypical response size
Moderate attention impact (1.77% of 128k context)

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-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools