MCP Verification Gate: check an MCP server or an A2A agent before you connect or delegate
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Check an A2A agent before you delegate, or an MCP server's measured conduct. Free, no key.
| Author | io.github.ogasurfproject-jpg |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 145 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"MCP Verification Gate: check an MCP server or an A2A agent before you connect or delegate": {
"url": "https://gate.horizonshield.dev/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
get_conditionsread-onlyReturn the five conditions this gate measures, what it explicitly does not verify, and the tier definitions. Takes no arguments and returns identical output every time. Read this before running a check so you know what a verdict does and does not claim.
Hints: read-only yes · destructive no · idempotent yes · open-world no
check_conformanceread-onlyMeasure a public MCP endpoint against five conditions: it speaks MCP, it publishes an A2A agent card, it declares who pays it, identical input returns identical output, and the verdict itself can be recomputed by anyone. Free, no key. Conformance and disclosure only; this says nothing about whether any figure the checked server returns is correct. By default no tool on the checked server is called, so determinism comes back as not measured rather than guessed. It is measured when the owner has published /.well-known/mcp-conduct.json with allow_tool_call true.
Parameters:
endpoint(required) — string — https URL of the MCP endpoint to measureallow_tool_call— boolean — Kept for compatibility. Since 2026-10-08 an assertion alone calls no tool: consent is proven only by the owner's /.well-known/mcp-conduct.json. Default false.
Hints: read-only yes · destructive no · idempotent no · open-world yes
verify_verdictread-onlyTake a verdict this gate issued and recompute its record_sha256 independently. Removes record_sha256 and recompute_note, serialises the remainder in key order, and hashes it. Returns whether the verdict was altered after it was issued. You do not have to trust the party that issued the verdict, including this one.
Parameters:
record(required) — object — The full verdict object as returned by check_conformance or GET /self
Hints: read-only yes · destructive no · idempotent yes · open-world no
lookup_serverread-onlyReturns one record (not a list). Look up what this register already holds about an MCP endpoint: whether it is watched, how often it is re-measured, how many measurements exist, when the first and latest were taken, and the latest verdict with the record_sha256 you can recompute yourself. Reads stored measurements only. It contacts nothing and measures nothing, so use check_conformance for a fresh reading. An endpoint that is absent is reported as absent and that is NOT a negative verdict: it means nobody has measured it here, not that it failed.
Parameters:
endpoint(required) — string — https URL of the MCP endpoint to look up, exactly as it appears on the register
Hints: read-only yes · destructive no · idempotent yes · open-world no
is_verifiedread-onlyA single machine-first answer for an agent deciding whether to trust an MCP endpoint BEFORE it connects. Returns verified (true only when the latest scheduled measurement passed every measured condition; null otherwise, never false), a state enum saying which case it is, measured_at, and a record_sha256 with a recompute_url so you can check the verdict without trusting this gate. Reads the stored register only: it contacts nothing and measures nothing. Absent and pending are reported honestly and are NOT negative verdicts. For a fresh measurement rather than the stored one, use check_conformance.
Parameters:
endpoint(required) — string — https URL of the MCP endpoint to look up, exactly as it appears on the register
Hints: read-only yes · destructive no · idempotent yes · open-world no
preflight_agentread-onlyCall this before handing work to an A2A agent you have not used before. Fetches the agent's public card (https://<agent>/.well-known/agent-card.json, one request), reports whether it declares the A2A Conduct Extension, who it says pays it (the compensation declaration, as declared and not verified), whether the card carries a signature, the endpoints it asks to be measured on, and this register's stored reading for each (verified is true only when the latest scheduled measurement passed; null otherwise, never false), plus where to file your own witness walk. Measures nothing new and returns counts and pointers, never a score. An agent that does not declare the extension is reported as such, which is not a negative verdict.
Parameters:
agent(required) — string — https origin of the agent (https://agent.example) or the full URL of its agent card
Hints: read-only yes · destructive no · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.