GAIP Integration & Protocol Agent
Agent Observatory: checks A2A, MCP and OpenAPI declarations and logs published changes.
Should I use this
Quality & Safety
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-integration-protocol": {
"url": "https://www.gaipagents.com/mcp/agents/integration-protocol"
}
}
}Remote endpoints
https://www.gaipagents.com/mcp/agents/integration-protocolstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢check_agent_conformance(data_classification, declared_identity, expected_endpoint, intended_task, metadata, ...)
Use this when asked to check an AI agent or MCP server: does it work, is it reachable, is its card valid ("check this agent", "is this MCP server up?"). Pass just its `url`. Returns READY / FIXES_NEEDED / NO_AGENT_CARD / UNREACHABLE with fixes and a receipt. Free, read-only, no account; inputs must be public and non-personal.
Input Schema
{
"type": "object",
"properties": {
"data_classification": {
"default": "PUBLIC",
"description": "PUBLIC (default) or NON_PERSONAL_PUBLIC. Never send personal data.",
"enum": [
"PUBLIC",
"NON_PERSONAL_PUBLIC"
],
"type": "string"
},
"declared_identity": {
"description": "Optional: the name the agent claims.",
"type": "string"
},
"expected_endpoint": {
"description": "Optional: the endpoint you expect; a different primary endpoint is reported as ENDPOINT_DRIFT.",
"format": "uri",
"type": "string"
},
"intended_task": {
"description": "VERIFY_BEFORE_CALL: what you intend to delegate.",
"type": "string"
},
"metadata": {
"description": "Alternative to url: the agent card or MCP/OpenAPI document itself.",
"type": "object"
},
"mode": {
"description": "CONFORMANCE (default) checks the interface; VERIFY_BEFORE_CALL returns task-specific evidence about `target` for `intended_task`.",
"enum": [
"CONFORMANCE",
"VERIFY_BEFORE_CALL"
],
"type": "string"
},
"protocol": {
"description": "Counterparty protocol. Inferred from metadata when omitted, otherwise MCP.",
"enum": [
"A2A",
"MCP",
"OPENAPI"
],
"type": "string"
},
"source_url": {
"description": "Optional: where `metadata` was published, used only to resolve relative endpoints. Never fetched.",
"format": "uri",
"maxLength": 2048,
"type": "string"
},
"target": {
"description": "VERIFY_BEFORE_CALL: the counterparty URL or reference.",
"oneOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "object"
}
]
},
"url": {
"description": "Public https link to an agent, its A2A agent card, MCP server description or OpenAPI document. GAIP fetches, validates and reach-tests it. Use instead of metadata.",
"format": "uri",
"maxLength": 2048,
"type": "string"
}
},
"additionalProperties": false,
"examples": [
{
"url": "https://www.gaipagents.com/.well-known/agent-card.json"
},
{
"metadata": {
"name": "GAIP Broker",
"protocolVersion": "2025-06-18",
"tools": [],
"url": "https://www.gaipagents.com/mcp"
}
}
]
}🟡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_observatory_lookup(name, target_id, url)
Use this when asked about an MCP server's or agent's history ("has this server changed?", "was it up last week?"). Pass its `url` or `name`. Returns dated facts the Agent Observatory observed: status history, manifest hash, conformance codes, change log. Not an assessment. Free, read-only, no account; inputs must be public and non-personal.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Optional: server or agent name to search for.",
"maxLength": 200,
"type": "string"
},
"target_id": {
"description": "Optional: an Observatory target id (obs_...).",
"pattern": "^obs_[0-9a-f]{24}$",
"type": "string"
},
"url": {
"description": "Public URL of the MCP server or agent to look up.",
"maxLength": 2048,
"type": "string"
}
},
"additionalProperties": false,
"examples": [
{
"url": "https://weather.example.com/mcp"
}
]
}🟢gaip_manifest_changes(limit, since, target_id)
Use this when asked which MCP servers or agents changed recently ("what changed this week?"). Optional `since` (RFC 3339), `target_id`, `limit` (max 100). Returns the Observatory's hash-chained log of manifest changes: before/after hashes, neutral facts, receipts. Free, read-only, no account; inputs must be public and non-personal.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Optional: maximum entries (1-100).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"since": {
"description": "Optional: RFC 3339 time, e.g. 2026-09-01T00:00:00Z.",
"format": "date-time",
"type": "string"
},
"target_id": {
"description": "Optional: an Observatory target id (obs_...).",
"pattern": "^obs_[0-9a-f]{24}$",
"type": "string"
}
},
"additionalProperties": false,
"examples": [
{
"limit": 20,
"since": "2026-09-01T00:00:00Z"
}
]
}Community
Evidence