Field report / who watches the watchers, graded
The MCP Client Conformance Report
The Model Context Protocol has dozens of tools that score servers. Nobody scores the clients — the frameworks, inspectors and agents that connect. We can, because we are a live server the whole ecosystem dials into. Here is how each client actually behaves on the wire: whether it completes the handshake, what it reads, and whether it sends anything malformed.
The scorecard
Six checks: handshake (initialize + initialized), tools (reads the tool list), resources, prompts, invokes (actually calls a tool), clean (no malformed requests). Clients are identified by the name they announce, falling back to User-Agent.
| Client | Score | Handshake | Tools | Resources | Prompts | Invokes | Clean | Protocol | Calls |
|---|---|---|---|---|---|---|---|---|---|
| glimind-probe | 3/6 | ✓ | ✓ | — | — | — | ✓ | 2025-06-18 | 1,410 |
| mcpbeat | 5/6 | ✓ | ✓ | ✓ | ✓ | — | ✓ | 2025-06-18 | 701 |
| glama | 5/6 | ✓ | ✓ | ✓ | ✓ | — | ✓ | 2025-11-25 | 265 |
| unidentified | 4/6 | ✓ | ✓ | — | ✓ | — | ✓ | — | 91 |
| agent-tools.cloud-crawler | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 80 |
| curl | 5/6 | — | ✓ | ✓ | ✓ | ✓ | ✓ | — | 36 |
| node | 5/6 | ✓ | ✓ | ✓ | ✓ | — | ✓ | — | 34 |
| ProofBench | 2/6 | — | ✓ | — | — | — | ✓ | — | 32 |
| mcp-drift-monitor | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 27 |
| python-httpx | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 25 |
| MCPWatch | 5/6 | ✓ | ✓ | ✓ | ✓ | — | ✓ | — | 20 |
| mcp-rugpull-research | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 18 |
| agent-evidence-scanner | 4/6 | — | ✓ | ✓ | ✓ | — | ✓ | — | 16 |
| SaSame-MCP-Audit | 6/6 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | 14 |
| Go-http-client | 4/6 | ✓ | ✓ | — | — | ✓ | ✓ | — | 14 |
| reliability-bureau-spike | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 14 |
| AgentDirectory.Exchange MCP Health | 2/6 | — | ✓ | — | — | — | ✓ | — | 13 |
| MCPWitness | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 12 |
| python-httpx2 | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 10 |
| io.verifymcp | 1/6 | — | — | — | — | — | ✓ | — | 9 |
| Mozilla | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 8 |
| AgentIndexBot | 2/6 | — | ✓ | — | — | — | ✓ | — | 8 |
| mcpcomp | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 8 |
| rootz-mcp-registry-prober | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 6 |
| agent-world-probe | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 6 |
| aisec-registry | 1/6 | — | — | — | — | — | ✓ | — | 6 |
| api-forge-mcp-index | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 6 |
| hultra-link | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 6 |
| loop-mcp-catalog-fetch | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 6 |
| mcp-exposure-auditor | 6/6 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 2025-06-18 | 6 |
| MCPMeter | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 6 |
| measure-mcp-schema | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 6 |
| SaSame-Census-Era-Probe | 1/6 | — | — | — | — | — | ✓ | — | 4 |
| Python-urllib | 3/6 | — | ✓ | ✓ | — | — | ✓ | — | 4 |
| lastseen-schema-probe | 2/6 | — | ✓ | — | — | — | ✓ | — | 4 |
| AgentAlmanac-Snapshot | 2/6 | — | ✓ | — | — | — | ✓ | — | 4 |
| MCP-Stats-Prober | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 3 |
| mcp-scraper | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 3 |
| mcpqueen-grader | 3/6 | ✓ | ✓ | — | — | — | ✓ | — | 3 |
| Bun | 1/6 | — | — | — | — | — | ✓ | — | 3 |
| catalog-health | 1/6 | — | — | — | — | — | ✓ | — | 2 |
| BuiltWith-MCPRegistryScrape | 2/6 | — | ✓ | — | — | — | ✓ | — | 2 |
| smithery-probe | 2/6 | — | ✓ | — | — | — | ✓ | 2025-06-18 | 2 |
| AIVE-MCP-Discover | 1/6 | — | — | — | — | — | ✓ | — | 2 |
| x402-observatory | 1/6 | — | — | — | — | — | ✓ | — | 2 |
Read this before you trust it
A low score is not always a bug: many clients are single-purpose (an uptime monitor only needs the handshake; a tool-diff watcher never invokes anything). The value is the shape, not a ranking — which clients complete the handshake, which respect the newer discovery method, which send malformed JSON-RPC. Method and caveats: /methodology. Raw data is CC0.
Companion to the MCP Observatory (who watches the watchers) and the field report.