# MCP Observatory: one read only walk over every https endpoint in the official registry

> Public record of one read only walk over the official MCP registry: who answered, tools, who pays.

- name: io.github.ogasurfproject-jpg/hs-mcp-observatory
- version: 0.1.1
- connection class: R0 (autonomous)
- trust: 89/100 flags: duplicate-repo
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.ogasurfproject-jpg%2Fhs-mcp-observatory
- tools: https://api.protogrid.dev/v1/servers/io.github.ogasurfproject-jpg%2Fhs-mcp-observatory/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "hs-mcp-observatory": {
      "type": "http",
      "url": "https://observatory.horizonshield.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 98
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-96% ~updated-47d-ago -duplicate-repo(9 names)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 83/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list carries no ttlMs, so clients re-fetch it

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: mcp_observatory_measure_now (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); mcp_observatory_lookup (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); mcp_observatory_method (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 465 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 465 tokens to load them all
- tool set hash: 9ee6a99e30b55cb823e293facce1ce91
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.ogasurfproject-jpg/hs-mcp-observatory.svg)](https://protogrid.dev/servers/io.github.ogasurfproject-jpg/hs-mcp-observatory)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://observatory.horizonshield.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.95652175)

## Packages

_none_

## Tools (6)

- `mcp_observatory_disclosure_guide`: How the 152 servers that stated who compensates their operator actually did it - the field names observed in the wild, with counts. Not a specification we invented.
- `mcp_observatory_lookup`: What happened when we contacted one address, or an aggregate for one host. Returns the record hash and the procedure to recompute it. There is no tool here that lists addresses; you must already hold the one you are asking about.
- `mcp_observatory_measure_now`: Contact one https address now and report what we see: whether it speaks MCP, whether it carries an agent card, and whether that card names who compensates the operator. Read only; no tool is called. robots.txt is read first and honoured. This does NOT change the published record - the next full walk does that. Rate limited, because it contacts somebody else's server on your behalf.
- `mcp_observatory_method`: How the walk was run, what we got wrong and corrected, and the four rules the report holds itself to.
- `mcp_observatory_state`: What was measured, when, over what population, and what the measurement cannot tell you. Read this before quoting any number from this server.
- `mcp_observatory_summary`: The counts, as published and as corrected. How many addresses answered, how many tools they exposed, how many stated who compensates their operator.
