# Desvela ARD Registry — free preflight(domain)

> What a domain publishes for AI agents: ai-catalog.json, llms.txt, agents.md, robots.txt rules. Free.

- name: dev.desvela/registry
- version: 0.1.0
- connection class: R0 (autonomous)
- trust: 76/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.desvela%2Fregistry
- tools: https://api.protogrid.dev/v1/servers/dev.desvela%2Fregistry/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "desvela": {
      "type": "http",
      "url": "https://registry.desvela.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 65
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-92d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### 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: watch (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); crawler_block_test (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); search (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 750 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`: 1 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: 4, about 750 tokens to load them all
- tool set hash: 98d0514e4a6165b2d80ddcaa5a4d49b2
- tools last changed: 2026-09-29T18:24:49.411Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.desvela/registry.svg)](https://protogrid.dev/servers/dev.desvela/registry)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-29 `preflight` changed (description)
  - before: What a domain publishes for AI agents before you touch it: ai-catalog.json (ARD), llms.txt, agents.md, and its robots.txt directives for AI bots (GPTBot, ClaudeBot, Google-Extended…). Served from the Desvela ARD index when fresh (<7 days), live-checked otherwise. Free.
  - after: What a domain publishes for AI agents before you touch it: ai-catalog.json (ARD), llms.txt, agents.md, and its robots.txt directives for AI bots (GPTBot, ClaudeBot, Google-Extended…). Includes a visibility receipt: surface-by-surface state, the words that would find the domain in search (or the honest fact that none would), what is missing and where to publish it. Served from the Desvela ARD index when fresh (<7 days), live-checked otherwise. Free.

Full history: https://api.protogrid.dev/v1/servers/dev.desvela%2Fregistry/changes

## Remotes

- https://registry.desvela.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `crawler_block_test`: What the domain's CDN really does, as opposed to what its robots.txt says. Sends each AI crawler's real user-agent at the homepage and compares the response against a browser: a site can allow GPTBot in robots.txt and still have its CDN answer it a 403, and robots.txt cannot tell you that. Verdicts per crawler: ok, blocked, throttled (429, which is "too fast" and not "not you"), degraded (a 200 with a fraction of the bytes, the shape of a JS-gated page), or error. When `measurable` is false the site refused the control request too and there is no verdict to give. Live probe, ~6 requests. Free. Use preflight for the declared policy; use this for the observed one.
- `preflight`: What a domain publishes for AI agents before you touch it: ai-catalog.json (ARD), llms.txt, agents.md, and its robots.txt directives for AI bots (GPTBot, ClaudeBot, Google-Extended…). Includes a visibility receipt: surface-by-surface state, the words that would find the domain in search (or the honest fact that none would), what is missing and where to publish it. Served from the Desvela ARD index when fresh (<7 days), live-checked otherwise. Free.
- `search`: Natural-language search over what Desvela has indexed: agents, MCP servers, registries — the same index as POST /search. Returns catalog entries per the ARD spec. When nothing matches, returns referrals (other ARD-conformant registries you can query the same way) and listing (how a domain gets into this index: publish ai-catalog.json, then preflight it), instead of an empty answer.
- `watch`: Subscribe to a domain: get a signed webhook (X-Desvela-Signature, HMAC-SHA256) when what it publishes for AI agents changes — ai-catalog.json entries added/changed/gone, llms.txt or agents.md edited or removed, robots.txt AI-bot directives changed. Checked weekly against the Desvela ARD index. Returns a manage_token (GET/DELETE https://registry.desvela.dev/watch/{id}) and the signing secret — store both.
