# ICANN registrar accreditation status

> Is a domain registrar still ICANN-accredited, and has ICANN acted against it? 4,500+ registrars.

- name: io.github.joelp22-maker/referencesource-registrars
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 93/100 flags: duplicate-repo
- quality: 89/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.joelp22-maker%2Freferencesource-registrars
- tools: https://api.protogrid.dev/v1/servers/io.github.joelp22-maker%2Freferencesource-registrars/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "referencesource-registrars": {
      "type": "http",
      "url": "https://referencesource.org/mcp/registrars"
    }
  }
}
```


## Trust

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

## Quality 89/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 declares ttlMs 0, so clients re-fetch it on every use

### 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: 86 (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
- pass `tools.annotations`: 4 of 4 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: resolve_registrar (idempotentHint); get_registrar (idempotentHint); verify_quote (idempotentHint); …
- pass `tools.token_cost`: about 875 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: 4, about 875 tokens to load them all
- tool set hash: bea89d19c71d6d773bd9cd883c846ebf
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.joelp22-maker/referencesource-registrars.svg)](https://protogrid.dev/servers/io.github.joelp22-maker/referencesource-registrars)
- 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://referencesource.org/mcp/registrars (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `get_registrar`: Everything this register holds for one IANA registrar ID: accreditation status, RDAP base URL, and any ICANN breach, suspension or termination notice with the date and the notice PDF — each with its source page and a verbatim quote. Returns a LIST: ten IDs today carry two records because ICANN and IANA spell the registrar's name differently, and both are returned rather than one being chosen.
- `list_enforcement_actions`: Which registrars has ICANN acted against? Lists the Contractual Compliance notices in this register — breach, suspension and termination — newest first, with the registrar, the date as ICANN prints it, the notice PDF and a verbatim quote of the notice line. Filter by action type or by date to see recent enforcement.
- `resolve_registrar`: Which registrar is this? Search ICANN's accredited-registrar register by registrar name (or part of one, e.g. "GoDaddy", "Tucows", "namecheap") or by IANA registrar ID. Returns the matching registrars with their accreditation status and any ICANN enforcement action, each with the page and verbatim quote it was read from. Use this first when you have a name; use get_registrar when you already have the IANA ID.
- `verify_quote`: Is this right? Check a claim about a registrar — its accreditation status, its name, an enforcement date — against the register instead of trusting it. Says whether the claim matches a stored value, appears only in the verbatim source quote, or differs (and then what the register says instead), and returns the source page and quote so the claim can be traced upstream.
