The MCP Observatory / who watches the watchers
We published an MCP server. Two dozen robots showed up to inspect it.
The moment a server lands in the MCP registry, an invisible ecosystem wakes up: crawlers that grade it, monitor its uptime, verify its ownership, diff its tools, and check whether it wants paying. Almost nobody has documented these. The Fomite can, because it is the fresh server they came to inspect — so it sees exactly who knocks, how fast, and what they look at.
The watchers
Every client below is a piece of infrastructure whose job is to watch otherMCP servers. We identify them by User-Agent; unverified until forward/reverse DNS confirms them.
| Watcher | Kind | What it does | robots | Requests | Found us in |
|---|---|---|---|---|---|
| SentinelOracle | MCP watcher | MCP liveness monitor (heavy poller). | never-read | 255 | 1.7 h |
| mcpbeat | MCP watcher | MCP-server liveness monitor. | never-read | 109 | 2.6 h |
| AgentGrade | agent directory | Agent security-research crawler. | never-read | 24 | 3.8 h |
| agent-tools.cloud | agent directory | Agent-tools directory crawler. | never-read | 14 | 4.8 h |
| aisec-registry | MCP watcher | AI-security MCP registry scanner. | never-read | 12 | 9.4 h |
| MCPWatch | MCP watcher | Longitudinal MCP security research. | never-read | 10 | 4.8 h |
| reliability-bureau-spike | MCP watcher | Reliability monitor. | never-read | 8 | 10.2 h |
| ProofBench | MCP watcher | MCP registry health / benchmark. | never-read | 8 | 26 min |
| mcpgrade-probe | MCP watcher | MCP-server grading probe. | never-read | 7 | 8.2 h |
| spanly-enrich | agent directory | Enrichment crawler. | never-read | 7 | 8.7 h |
| 402explorer | agent payment | Probes whether a server requires x402 payment. | never-read | 7 | 4.3 h |
| VerifyMCP | MCP watcher | MCP verification service (probe + owners bot). | never-read | 6 | 1.0 h |
| zerm-tool-census | MCP watcher | MCP tool census crawler. | never-read | 6 | 6.2 h |
| SmitheryBot | MCP watcher | Smithery MCP directory crawler (registry cascade). | never-read | 6 | 25 min |
| mcp-drift-monitor | MCP watcher | Read-only tool-definition drift observer. | never-read | 6 | 1.4 h |
| ProwlBot | agent directory | Directory crawler. | never-read | 5 | 10.1 h |
| AgentIndexBot | agent directory | Agent registry directory crawler. | compliant | 5 | 5.0 h |
| api-forge-mcp-index | MCP watcher | MCP index crawler. | insufficient-data | 3 | 2.5 h |
| rootz-mcp-registry-prober | MCP watcher | MCP registry prober. | insufficient-data | 3 | 10.3 h |
| MCPWitness | MCP watcher | MCP health probe. | insufficient-data | 3 | 7.5 h |
| measure-mcp-schema | MCP watcher | MCP schema measurement. | insufficient-data | 3 | 4.5 h |
| x402-observatory | agent payment | x402 payment-ecosystem research collector. | insufficient-data | 3 | 7.3 h |
| HUNT-Bot | agent directory | Discovery engine. | insufficient-data | 2 | 0 min |
| domains-distillery | agent directory | Domain crawler. | insufficient-data | 2 | 1.8 h |
| SaSameAgentAudit | MCP watcher | Agent audit probe. | insufficient-data | 2 | 8.5 h |
| lastseen | MCP watcher | Introspection-only schema probe. | insufficient-data | 2 | 6.3 h |
| understory | agent directory | Certificate-transparency research crawler. | insufficient-data | 2 | 0 min |
| skillex-enrichment | agent directory | Enrichment crawler. | insufficient-data | 1 | 5.0 h |
| AgentReputationBot | agent directory | Agent reputation scanner. | insufficient-data | 1 | 4.2 h |
| AIVE-MCP-EndpointProbe | MCP watcher | MCP endpoint probe. | insufficient-data | 1 | 8.8 h |
| catalog-health | MCP watcher | MCP catalog health probe. | insufficient-data | 1 | 4.3 h |
| CertSignalBot | agent directory | Certificate-signal monitor. | insufficient-data | 1 | 4.3 h |
How fast they found us
The Fomite's server entered the official MCP registry at 2026-08-19 23:00:00 UTC. Here is how long each watcher took to arrive after that — a rough read on which parts of the ecosystem are fast and which are slow.
| Order | Watcher | First seen (UTC) | After publish |
|---|---|---|---|
| 1 | HUNT-Bot | 2026-08-19 21:04 | 0 min |
| 2 | understory | 2026-08-19 21:06 | 0 min |
| 3 | SmitheryBot | 2026-08-19 23:24 | 25 min |
| 4 | ProofBench | 2026-08-19 23:26 | 26 min |
| 5 | VerifyMCP | 2026-08-20 00:00 | 1.0 h |
| 6 | mcp-drift-monitor | 2026-08-20 00:25 | 1.4 h |
| 7 | SentinelOracle | 2026-08-20 00:44 | 1.7 h |
| 8 | domains-distillery | 2026-08-20 00:46 | 1.8 h |
| 9 | api-forge-mcp-index | 2026-08-20 01:28 | 2.5 h |
| 10 | mcpbeat | 2026-08-20 01:34 | 2.6 h |
| 11 | AgentGrade | 2026-08-20 02:46 | 3.8 h |
| 12 | AgentReputationBot | 2026-08-20 03:12 | 4.2 h |
| 13 | CertSignalBot | 2026-08-20 03:15 | 4.3 h |
| 14 | 402explorer | 2026-08-20 03:17 | 4.3 h |
| 15 | catalog-health | 2026-08-20 03:19 | 4.3 h |
| 16 | measure-mcp-schema | 2026-08-20 03:31 | 4.5 h |
| 17 | MCPWatch | 2026-08-20 03:47 | 4.8 h |
| 18 | agent-tools.cloud | 2026-08-20 03:48 | 4.8 h |
| 19 | AgentIndexBot | 2026-08-20 03:58 | 5.0 h |
| 20 | skillex-enrichment | 2026-08-20 03:58 | 5.0 h |
| 21 | zerm-tool-census | 2026-08-20 05:09 | 6.2 h |
| 22 | lastseen | 2026-08-20 05:20 | 6.3 h |
| 23 | x402-observatory | 2026-08-20 06:15 | 7.3 h |
| 24 | MCPWitness | 2026-08-20 06:30 | 7.5 h |
| 25 | mcpgrade-probe | 2026-08-20 07:13 | 8.2 h |
| 26 | SaSameAgentAudit | 2026-08-20 07:29 | 8.5 h |
| 27 | spanly-enrich | 2026-08-20 07:44 | 8.7 h |
| 28 | AIVE-MCP-EndpointProbe | 2026-08-20 07:49 | 8.8 h |
| 29 | aisec-registry | 2026-08-20 08:23 | 9.4 h |
| 30 | ProwlBot | 2026-08-20 09:06 | 10.1 h |
| 31 | reliability-bureau-spike | 2026-08-20 09:13 | 10.2 h |
| 32 | rootz-mcp-registry-prober | 2026-08-20 09:17 | 10.3 h |
What they looked at
Every watcher reads our tools/list. So we turned the telescope around and recorded their reading: which MCP methods each one calls. The observed become the observatory.
| MCP method | Calls | Distinct clients |
|---|---|---|
| initialize | 30 | 8 |
| tools/list | 29 | 8 |
| notifications/initialized | 26 | 5 |
| tools/call | 1 | 1 |
Tools actually invoked (not just introspected)
| Tool | Calls |
|---|---|
| fomite_census | 1 |
Per watcher
| Watcher | Methods it called |
|---|---|
| curl | initialize×2 tools/list×1 tools/call×1 |
| mcpbeat | tools/list×6 initialize×6 notifications/initialized×6 |
| node | tools/list×2 notifications/initialized×2 initialize×2 |
| rootz-mcp-registry-prober | notifications/initialized×1 tools/list×1 initialize×1 |
| SentinelOracle | notifications/initialized×16 tools/list×16 initialize×16 |
| unidentified | initialize×3 tools/list×3 notifications/initialized×1 |
The x402 experiment
Some of these crawlers exist to find MCP servers that charge for access, over the emerging x402 agent-payment protocol. So we set a trap for the trap-finders: https://thefomite.com/api/x402/premium answers with a real HTTP 402 payment challenge. No funds are ever taken — it is a testnet challenge with a zero address, disclosed as research, and any payment header at all gets free access. The only thing we collect is who knocked.
| Who knocked | Times | Tried to pay |
|---|---|---|
| curl | 3 | 1 |
Method: /methodology. Discovery latency is measured from the registry-publish time above and clamped at zero for anything that found us by another channel first. The x402 endpoint never collects funds.