# Precleared Contact Check (remote · precleared.dev)

Cold email compliance check, 12 countries: per-address verdict, rule cited, signed receipt.

- Trust score: 82/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `precleared.dev`: 82/100 (this document), [markdown](https://verifymcp.io/servers/dev-precleared-contact-check/precleared.md), [page](https://verifymcp.io/servers/dev-precleared-contact-check/precleared)

## Channel facts

- Endpoint: `https://precleared.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.3.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1716 tokens (~429/item across 4 items; 4 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 80/100
  - Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (50% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 4 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 5 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Precleared Contact Check MCP server?

Precleared Contact Check is a hosted endpoint at https://precleared.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http dev-precleared-contact-check 'https://precleared.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "dev-precleared-contact-check": {
      "url": "https://precleared.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "dev-precleared-contact-check": {
      "type": "http",
      "url": "https://precleared.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.dev-precleared-contact-check]
url = "https://precleared.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-precleared-contact-check": {
      "type": "remote",
      "url": "https://precleared.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dev-precleared-contact-check --url 'https://precleared.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  dev-precleared-contact-check:
    url: "https://precleared.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "dev-precleared-contact-check": {
      "Transport": "http",
      "Url": "https://precleared.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add dev-precleared-contact-check -t streamable-http -u 'https://precleared.dev/mcp'
```

### Other

```json
{
  "mcpServers": {
    "dev-precleared-contact-check": {
      "type": "http",
      "url": "https://precleared.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 81, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “contact_check” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 1382 → 1716
- [functional regression] Tool coverage: 67% → 50%
- [functional] New tool “suppress_contact”
- [cosmetic] “contact_check” added an optional parameter “email”

### 2026-11-02 (score 81, 0)

- [security] Tool “contact_check” rewrote its description, which is the text the model reads
- [cosmetic] “contact_check” reworded the description of “sender_country”

### 2026-11-01 (score 81, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Tool coverage: 100% → 67%
- [functional improvement] Schema quality: 616 → 447
- [functional] New tool “link_account”

### 2026-10-31 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 79, 0)

- [security] The server rewrote its instructions, which are the text every model session reads

### 2026-10-29 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 78, 0)

- [security] The server rewrote its instructions, which are the text every model session reads

## MCP tools (4)

### `contact_check` (~903 tokens)

Cold email compliance check

Is it legal to send a cold or marketing email to this person? Check before the first email to any new lead, prospect or contact who is not already a customer, one call per address: a compliance check for B2B sales outreach, prospecting and lead lists. Whether it is allowed, or needs consent first, turns on facts you cannot see in the address, such as whether a UK recipient is a limited company or a sole trader, so it looks them up live (UK Companies House) and applies UK PECR and GDPR, US CAN-SPAM, Canadian CASL, German UWG, French CPCE, Australia's Spam Act, Ireland's ePrivacy Regulations, the Dutch Telecommunicatiewet, Spain's LSSI, Italy's Privacy Code, Latvia's Information Society Services Law and the UAE's PDPL. Returns a verdict (ok_to_email, consent_needed, blocked or unknown), the rule quoted with its source, the footer requirements (who you are, a postal address, an unsubscribe or opt-out), the next step and a signed receipt id to show a client or auditor. Each charged call uses one check from your allowance (free daily allowance, no sign-in); unknown-country answers and one qualifying re-check within a day are free, up to a combined limit of 50 a day. Nothing is sent to the recipient. Not for transactional emails such as invoices, receipts or password resets. To check the email itself, send the draft as email ({ subject, body, from_name, from_email }); the answer then gains email_check, saying whether the footer has an opt-out, the sender's identity and, where the rule needs one, a postal address. The draft is not stored. Addresses on the key's opt-out list (see suppress_contact) come back blocked and free.

Input parameters:

- `address_source` (string): Where the address came from: published (on their website, profile or a directory), bought (a purchased list), scraped (collected by a tool), given (the person gave it to you) or unknown. It affects t…
- `company_name` (string): The recipient's company or organisation name if you know it, for example from your CRM. For UK recipients it is used to search Companies House when the domain alone does not find the company. A compa…
- `company_number` (string): UK company number if known (8 characters), so the register can confirm the company.
- `default_recipient_country` (string): Two-letter country code to use only when the recipient's country can't be worked out from recipient_country, the domain, company records or the company's website, for example US if all your prospects…
- `email` (object): The draft email, if you want the answer to say whether its footer meets the rule for the recipient's country. The body is not stored.
- `existing_customer` (boolean): True if the recipient has bought from you before. Default false.
- `pitch` (string): What the email offers, in a few words, for example 'bookkeeping software for dental practices'. Used to judge relevance to the recipient's role.
- `pitch_relevant` (boolean): True if the pitch relates to the recipient's job or business, false if it does not.
- `recipient_country` (string): Two-letter country code of the recipient if known, for example GB or DE. Otherwise it is worked out from the domain, company records and the company's website.
- `recipient_domain` (string): The recipient's domain when you have no email address, for example acme.co.uk.
- `recipient_email` (string): The recipient's email address. Give this or recipient_domain.
- `recipient_name` (string): The recipient's full name if you know it, for example Jane Smith. For UK recipients it is matched against a company's current officers at Companies House. Precleared does not store it.
- `sender_country` (string): Country the sending business is based in: GB, US, AE (United Arab Emirates) or CA (Canada). Canadian senders must also meet CASL. Not the recipient's country. Default GB.
- `suppressed` (boolean): True if the recipient is on your own do-not-contact list.

Output parameters:

- `charged` (boolean)
- `confidence` (string): high, medium or low.
- `disclaimer` (string): Fixed disclaimer line.
- `email_check` (object): Present when you sent email: whether the draft's footer has what the rule needs.
- `facts` (object): Facts gathered about the recipient.
- `footer_text` (string|null): What the email's footer must include, if the rule sets requirements.
- `free_recheck_of` (string)
- `held_because` (object)
- `next_step` (string|null): What to do next.
- `possible_company` (object)
- `reasons` (array): The rule that matched, with its text and source, then any notes.
- `receipt` (object): Signed receipt for this check.
- `rules_applied` (array): Rule keys used.
- `rules_version` (string): Version of the rule set used.
- `usage` (object): Allowance left for the caller.
- `verdict` (string): The answer for this recipient.

### `verify_receipt` (~89 tokens)

Verify receipt

Fetch a Precleared receipt by its id (cc_rcpt_...) to show what was checked, when, and the verdict, with the hashes, Ed25519 signature and public key needed to verify it. Use it when a person or an audit asks for proof of a check.

Input parameters:

- `id` (string, required): Receipt id, such as cc_rcpt_0123456789ABCDEF.

Output parameters:

- `algorithm` (string|null): Signature algorithm.
- `confidence` (string|null): Confidence given.
- `created_at` (string|null): When the check was made.
- `id` (string): Receipt id.
- `key_version` (string|null): Signing key version.
- `public_key` (string|null): Public key, base64 SPKI DER.
- `recipient_domain` (string|null): Recipient domain.
- `recipient_email_masked` (string|null): Masked recipient address.
- `request_hash` (string|null): SHA-256 of the request.
- `response_hash` (string|null): SHA-256 of the response.
- `rules_applied`: Rule keys used.
- `rules_version` (string|null): Rule set version.
- `sender_country` (string|null): Sender country.
- `signature` (string|null): Ed25519 signature, base64.
- `verdict` (string|null): Verdict given.

### `suppress_contact` (~163 tokens)

Add to or remove from the opt-out list

Records that a person asked not to be emailed, on this Precleared key's opt-out list, so every agent and tool using the key gets blocked for that address from contact_check. Use it as soon as someone replies stop, unsubscribes, bounces or complains. Give email or domain; set remove to true only when the person asks to be emailed again. Needs a Precleared key (a free one is fine). Never charged. The address is kept only as a hash and a masked copy.

Input parameters:

- `domain` (string): A whole domain, such as acme.co.uk.
- `email` (string): The address.
- `reason` (string): Default opted_out.
- `remove` (boolean): True to take the entry off the list.

### `link_account` (~83 tokens)

Sign in to Precleared

Links this connection to the person's own Precleared key, so checks use their own free allowance, 14-day trial and plan instead of the shared free allowance. Use it when the person asks to sign in to or connect Precleared, or when contact_check says the free checks have run out. If they aren't signed in, Claude will ask them to sign in.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/dev-precleared-contact-check/precleared#diagnostics

## Score history

- 2026-11-05: 82
- 2026-11-04: 82
- 2026-11-03: 81
- 2026-11-02: 81
- 2026-11-01: 81
- 2026-10-31: 80
- 2026-10-30: 79
- 2026-10-29: 79
- 2026-10-28: 78
- 2026-10-27: 78
- 2026-10-26: 78
- 2026-10-25: 77
- 2026-10-24: 77
- 2026-10-23: 76
- 2026-10-22: 76
- 2026-10-21: 75
- 2026-10-20: 75
- 2026-10-19: 74
- 2026-10-18: 74
- 2026-10-17: 74
- 2026-10-16: 74
- 2026-10-15: 73
- 2026-10-14: 73
- 2026-10-13: 72
- 2026-10-12: 73

## Common questions

### What is the Precleared Contact Check MCP server?

Precleared Contact Check is an MCP server listed in the public MCP registry as dev.precleared/contact-check. Cold email compliance check, 12 countries: per-address verdict, rule cited, signed receipt. This page covers its hosted endpoint (https://precleared.dev/mcp).

### Is the Precleared Contact Check MCP server safe to use?

Precleared Contact Check scores 82 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Precleared Contact Check MCP server expose?

Precleared Contact Check exposes 4 tools: contact_check, verify_receipt, suppress_contact, link_account. Their descriptions and schemas cost roughly 1,238 tokens of context every time the server is loaded.

### Does the Precleared Contact Check MCP server require authentication?

No. We connected to Precleared Contact Check without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Precleared Contact Check MCP server still maintained?

Precleared Contact Check is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the Precleared Contact Check MCP server?

VerifyMCP ran 13 checks on Precleared Contact Check, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://precleared.dev/mcp
- Repository: https://github.com/gabrielaoimevbore-beep/precleared-mcp
- Website: https://precleared.dev/
- Changelog RSS feed: https://verifymcp.io/servers/dev-precleared-contact-check/precleared.xml
- Changelog JSON feed: https://verifymcp.io/servers/dev-precleared-contact-check/precleared/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/dev-precleared-contact-check/precleared.json
- HTML version of this page: https://verifymcp.io/servers/dev-precleared-contact-check/precleared
