Well done.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Well done.Find 20 HVAC companies in Austin and draft first-touch emails."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
This project has moved and been renamed to Leonidas of the Web: https://github.com/fpavia111-creator/leonidas npm:
@kurtfrancisco/leonidas(this package,@kurtfrancisco/leadwright, is deprecated). Runnpx -y @kurtfrancisco/leonidas.
leadwright
A compliance-first outbound sales pipeline that runs as an MCP server for Claude Code, Cursor and Codex.
Your coding agent researches leads, scores them against an industry ICP, and drafts cold email. leadwright checks every draft against CAN-SPAM and deliverability rules, logs why each lead was contacted, and holds everything for a human to approve. By default nothing is ever sent.
Based on Harvey by Ethan Rogers (MIT). leadwright is an independent project. It is not affiliated with or endorsed by Ethan Rogers. The skills library and the content rules (banned phrases, merge-tag, link and plain-text checks) come from Harvey. The MCP server, compliance gate, send window, caps, audit log and ICP templates are new.
Why
Autonomous SDR agents fail in the same ways: a fake "Re:" subject, a missing unsubscribe line, a burned domain, an email to someone who already opted out, and no record of why that person was emailed. leadwright puts deterministic code between the model and the outbox.
Related MCP server: LocalPulse MCP
Features
MCP server (stdio, zero dependencies) with 17 tools:
lw_add_leads,lw_writer_prompt,lw_check_email,lw_queue_email,lw_why,lw_send_approved,lw_dns_check, and more.Never auto-sends.
sending.modedefaults to"draft". Only a human approves (leadwright approve <id>). Agents can approve only if you setapproval.allowAgentApproval: trueyourself.CAN-SPAM gate. Every message gets a footer with your physical postal address and an opt-out line.
List-Unsubscribeheaders are added (one-click when you set a URL). DeceptiveRe:/Fwd:subjects on a first touch are blocked.Cold email bodies under 100 words (footer excluded). Hard error at queue and send time. Config can tighten it but can't loosen it.
Subject lines under 30 characters. This is a hard error. Config can tighten the limit but can't loosen it.
Tuesday/Wednesday sending only (the default). The day is checked in the lead's
timezone, falling back tosending.timezone(defaultAmerica/Chicago). Approved mail that comes up on another day is markedscheduledfor the next Tuesday or Wednesday and goes out on the nextleadwright sendrun on or after that date.Deliverability. Daily cap, per-domain cap, a warmup ramp (5/day, +3/day), a bounce-rate circuit breaker (pauses above 5% hard bounces), and SPF/DMARC/DKIM checks.
Do-not-contact list. Blocks exact emails (case and
+tagnormalized) and whole domains. Hard bounces and complaints are added automatically, and adding an entry pulls any pending mail to that address.Audit log of decisions. Each step records who acted and why, the evidence and the score reasons. The log is append-only JSONL with a SHA-256 hash chain, so tampering shows up.
leadwright why <email>shows the full trail.Eight industry ICP templates: SaaS, agencies, home services, dental/clinics, e-commerce, real estate, professional services and manufacturing. Each lead is scored with readable reasons.
Content gate from Harvey: banned spam and AI-tell phrases, unrendered merge tags, a one-link budget, plain text only, and a word ceiling. Also blocks role addresses and header injection.
CSV import and export. Exports are protected against formula injection.
Quick start
npx -y @kurtfrancisco/leadwright init --icp home_services
# edit .leadwright/config.json: sender.name/company/email/physicalAddress, compliance.unsubscribe
npx -y @kurtfrancisco/leadwright install-snippets # prints configs for all three hostsClaude Code: claude mcp add leadwright -- npx -y @kurtfrancisco/leadwright mcp
Cursor (.cursor/mcp.json): {"mcpServers":{"leadwright":{"command":"npx","args":["-y","@kurtfrancisco/leadwright","mcp"]}}}
Codex (~/.codex/config.toml):
[mcp_servers.leadwright]
command = "npx"
args = ["-y", "@kurtfrancisco/leadwright", "mcp"]Then ask your agent, for example: "Find 20 HVAC companies in Austin, add them to leadwright, and draft first-touch emails for the qualified ones."
Review and send:
leadwright outbox pending_approval
leadwright show <id>
leadwright approve <id> "looks right"
leadwright send # only works with sending.mode="send"; only Tue/Wed
leadwright why owner@example.comConfiguration (.leadwright/config.json)
Key | Default | Meaning |
|
| Must be set to |
|
| Weekdays when cold email may go out |
|
| Used when a lead has no |
| 30 / 3 | Hard caps per day |
| 5/day +3/day | Ramp for a new mailbox |
| 0.05 | Hard-bounce rate that pauses sending (after 20 sends) |
|
|
|
|
| Lets the MCP agent approve its own drafts. Leave this off |
| 99 | Can only go lower. Bodies must be under 100 words, excluding the footer |
| 29 | Can only go lower. Subjects must be under 30 characters |
|
| One of the 8 templates ( |
Pro ($11 launch price)
leadwright Pro adds:
Sequence and playbook packs for 8 industries
A deeper compliance and deliverability checker: CASL/GDPR/PECR region rules, list hygiene, spam scoring, a full DNS audit and pack validation
A one-command installer that registers the server with Claude Code, Cursor and Codex
Pro is sold separately. The core in this repo is MIT and fully usable without it.
Buy leadwright Pro: $11 one-time →
Legal
leadwright helps you follow the rules, but it isn't legal advice. You're responsible for complying with CAN-SPAM, CASL, GDPR/PECR and your mail provider's terms.
License
MIT. Copyright (c) 2026 Ethan Rogers (original Harvey) and Copyright (c) 2026 Kurt Francisco (modifications). See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Coldrig — cold-email infra run by your agent: 28 MCP tools, live sending, free sandbox, from $99/mo.
LinkedIn outreach MCP server — 19 tools for AI agents to prospect, sequence, and manage contacts.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Hosted MCP server for MuntuAI outreach campaigns, leads, senders, domains, and analytics.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to discover and qualify B2B leads from Leadbay's knowledge base, with tools for lead research, enrichment, and outreach logging.MIT
- FlicenseAqualityDmaintenanceMCP server for value-first cold outreach to local service businesses, enabling personalized cold email generation and lead scoring.5-
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables agent-driven LinkedIn outreach across multiple accounts, with a safety gate for human approval and LLM-powered personalization.1Apache 2.0
- FlicenseNot gradedqualityDmaintenanceMCP server that provides tools for cold email outreach, including checking contact history, drafting personalized emails, and retrieving performance summaries from past outreach data.-