Precleared Contact Check
RemoteAbout Precleared Contact Check
Precleared Contact Check checks cold marketing email compliance for AI agents before outreach to a new contact. It returns a verdict, cited rules, footer requirements, and a verifiable signed receipt across eight countries.
Key features
- 01Check email addresses or domains
- 02Return verdicts with cited rules
- 03Provide required footer details
- 04Issue and verify signed receipts
Use cases
- 01Check permission before first outreach
- 02Review lead lists in batches
- 03Keep verifiable compliance records
MCP support
The MCP server exposes contact_check and verify_receipt to clients for checking email compliance and validating signed receipts.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://precleared.dev/mcpclaude mcp add --transport http dev-precleared-contact-check https://precleared.dev/mcp{"mcpServers":{"dev-precleared-contact-check":{"type":"http","url":"https://precleared.dev/mcp"}}}Open in Cursor{"servers":{"dev-precleared-contact-check":{"type":"http","url":"https://precleared.dev/mcp"}}}Open in VS Code{"mcpServers":{"dev-precleared-contact-check":{"type":"http","url":"https://precleared.dev/mcp"}}}{"mcpServers":{"dev-precleared-contact-check":{"serverUrl":"https://precleared.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://precleared.dev/mcpAuth requiredTools
2| Parameter | Type | Required | Description |
|---|---|---|---|
| pitch | string | No | What the email offers, in a few words, for example 'bookkeeping software for dental practices'. Used to judge relevance to the recipient's role. |
| suppressed | boolean | No | True if the recipient is on your own do-not-contact list. |
| address_source | enum | No | 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 the verdict, so do not assume published.published | bought | scraped | given | unknown |
| company_number | string | No | UK company number if known (8 characters), so the register can confirm the company. |
| pitch_relevant | boolean | No | True if the pitch relates to the recipient's job or business, false if it does not. |
| sender_country | enum | No | Country the sending business is based in, GB or US. Not the recipient's country. Default GB.GB | US |
| recipient_email | string | No | The recipient's email address. Give this or recipient_domain. |
| recipient_domain | string | No | The recipient's domain when you have no email address, for example acme.co.uk. |
| existing_customer | boolean | No | True if the recipient has bought from you before. Default false. |
| recipient_country | string | No | 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. |
| default_recipient_country | string | No | 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 are in the US. recipient_country always wins. |
Details
From the project READMEPrecleared: cold-email legality checks for AI agents
Is your agent allowed to send that? Precleared answers before the email goes out: a per-address verdict on cold marketing email, the rule quoted, what the footer must include, and a signed receipt anyone can verify. Covers the UK (PECR and UK GDPR), the US (CAN-SPAM), Canada (CASL), Germany (UWG), France (CPCE), Australia (Spam Act), Ireland (S.I. 336/2011) and the Netherlands (Telecommunicatiewet).
It sits between the step that finds an address (Hunter, Apollo, Clay) and the step that sends (Gmail, Outlook, Instantly, lemlist). One call per new contact, before the first email. It is not needed for invoices, receipts or other transactional email.
- Site and docs: https://precleared.dev/docs
- MCP server (streamable HTTP):
https://precleared.dev/mcp - REST:
POST https://precleared.dev/api/v1/check - OpenAPI: https://precleared.dev/openapi.json
- Rules, with sources: https://precleared.dev/rules
Plugin and agent skill
This repository is also a Claude plugin and an Agent Skills skill. The plugin connects your agent to the hosted MCP server and adds cold-email-check, a skill that tells the agent when to run a check (before the first cold email to a new address, not for invoices or replies), how to fill in the facts without guessing, what to do with each verdict and where to keep the receipt.
Claude Code:
claude plugin marketplace add gabrielaoimevbore-beep/precleared-mcp
claude plugin install precleared@precleared
If you added the Precleared MCP server separately before, remove it so the tools don't appear twice.
Claude.ai, the desktop app and Cowork: Customize, Plugins, Add, Add marketplace, enter gabrielaoimevbore-beep/precleared-mcp, then add Precleared and connect its connector from the plugin's Connectors tab.
Cursor, Codex, OpenCode and other agents that read skills:
npx skills add gabrielaoimevbore-beep/precleared-mcp
The skill uses the Precleared MCP tools when they are connected. Otherwise it runs skills/cold-email-check/scripts/check.mjs (Node 18 or later, no dependencies), which calls the REST API for one address or a whole list:
node skills/cold-email-check/scripts/check.mjs --email [email protected] --sender GB --source SOURCE --pitch "bookkeeping software"
node skills/cold-email-check/scripts/check.mjs --file leads.csv --sender GB --source SOURCE --out leads-checked.csv
SOURCE is where the addresses came from: published, bought, scraped, given or unknown. It changes the verdict, so give the real answer. The script sends each address and the facts given for it to precleared.dev, with PRECLEARED_API_KEY if you set it. Nothing else leaves your machine, and nothing is sent to the recipient.
Add it to your client
Cursor: Add to Cursor
VS Code: Add to VS Code
Claude Code:
claude mcp add --transport http precleared https://precleared.dev/mcp
Claude.ai and the Claude desktop app: Settings, Connectors, Add custom connector, paste https://precleared.dev/mcp.
Claude directory: https://claude.ai/directory/precleared (one click, no setup).
Smithery: connect through https://smithery.ai/servers/gabrielaoimevbore/precleared. The key is an optional connection setting there.
Official MCP registry: dev.precleared/contact-check
Local server over stdio (this repository): for clients that only run local servers.
{
"mcpServers": {
"precleared": {
"command": "npx",
"args": ["-y", "github:gabrielaoimevbore-beep/precleared-mcp"],
"env": { "PRECLEARED_API_KEY": "pc_live_..." }
}
}
}
Or with Docker: docker build -t precleared-mcp . && docker run -i --rm -e PRECLEARED_API_KEY=pc_live_... precleared-mcp. The key is optional either way. Any client can also bridge the hosted endpoint with npx mcp-remote https://precleared.dev/mcp --transport http-only.
Any MCP client (JSON):
{
"mcpServers": {
"precleared": {
"url": "https://precleared.dev/mcp",
"headers": { "Authorization": "Bearer pc_live_..." }
}
}
}
The Authorization header is optional, and X-API-Key: pc_live_... works too. Without a key you get 100 free checks a day over the hosted MCP endpoint (10 over REST), shared by everyone on the same IP address. A free key from https://precleared.dev/get-key gives you your own 100 a day over MCP (25 over REST); a £39 pack adds 2,000 checks that never expire.
What is in this repository
index.js is a small MCP server (Node 18 or later, one dependency) that exposes the same two tools as the hosted endpoint and fulfils them through the public REST API. Nothing is stored locally and nothing is sent to the recipient. The hosted endpoint at https://precleared.dev/mcp is the canonical server: without a key it allows 100 checks a day, while the REST API behind this local server allows 10 a day per network, so add a free key if you run it locally at any volume.
npm install
npm test # runs the server and the skill script against a fake API on localhost, no network needed
PRECLEARED_API_KEY=pc_live_... node index.js
Environment: PRECLEARED_API_KEY (optional), PRECLEARED_API_BASE (default https://precleared.dev/api/v1), PRECLEARED_TIMEOUT_MS (default 30000).
The plugin lives beside it: .claude-plugin/ holds the plugin and marketplace manifests, .mcp.json points at the hosted server, and skills/cold-email-check/ holds the skill and its script. node test/skill.mjs tests the script against a fake API.
Tools
| Tool | What it does |
|---|---|
contact_check | Takes a recipient email or domain, your sender country (GB or US), the pitch and where the address came from. Returns verdict (ok_to_email, consent_needed, blocked or unknown), confidence, the rule quoted with its source, footer_text (what the email's footer must include, not wording to paste), next_step, the facts used, and a signed receipt. Not needed for transactional email such as invoices. |
verify_receipt | Takes a receipt id and returns the receipt with its hashes, Ed25519 signature and public key. |
Example
curl https://precleared.dev/api/v1/check \
-H "Content-Type: application/json" \
-d '{"recipient_email":"[email protected]","sender_country":"GB","address_source":"published"}'
{
"verdict": "ok_to_email",
"confidence": "high",
"reasons": [{ "rule_key": "gb_corporate_ok", "text": "Under PECR the consent rule for marketing email applies to individual subscribers only...", "source_title": "PECR 2003 regulation 22(1) and ICO Guide to PECR" }],
"footer_text": "Say who you are and who the email is from, include a valid postal address, and give a simple free way to stop further emails (PECR regulation 23).",
"next_step": "Send. Log the receipt against the lead.",
"receipt": { "id": "cc_rcpt_...", "signature": "...", "key_version": "k1", "verify_url": "https://precleared.dev/api/v1/receipt?id=cc_rcpt_..." }
}
What the receipt proves
That Precleared was asked this question, with these facts, at this time, and gave this answer. Every receipt has a public page at https://precleared.dev/r/<id> and can be verified offline with the public key at https://precleared.dev/api/v1/public-key. It is decision support with sources, not legal advice.
Privacy and terms
https://precleared.dev/privacy · https://precleared.dev/terms
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.