mailcheap
Newsletters where you pay for the emails you send, not for dormant subscribers, at a fraction of the price of beehiiv and the like. Open source: self-host it, or use mailcheap.ai.
Install / Use
claude mcp add marclou -- npx -y github:marclou/mailcheapIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
CommunicationSupported Platforms
Our assessment of mailcheap
mailcheap scores 93/100 on our quality scale, 95th of 422 Communication skills we index (top 23%).
Its MCP Server is 35 KB long, well organised into 18 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.
With 1,390 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated today, so mailcheap is actively maintained.
- It is released under AGPL-3.0, a copyleft license: you can use it, but modified versions you distribute must carry the same license.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
mailcheap compared with similar skills
All 4 of these similar skills score higher than mailcheap; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| mailcheap (this skill)by marclou | 93 | 1.4k | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 101.5k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.7k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.5k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 89.4k | 1d ago | MCP Server |
Frequently asked questions
- How do I install mailcheap?
- Run
claude mcp add marclou -- npx -y github:marclou/mailcheap. The install tabs above show the steps for each supported agent. - Which AI agents does mailcheap work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is mailcheap safe to use?
- It is AGPL-3.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is mailcheap still maintained?
- The repository was last updated today, so mailcheap is actively maintained.
Skill content
View source on GitHub
MailCheap is a newsletter app: write an issue, send it to your list, publish it on the web, from the dashboard or from your AI agent. This repository is the whole app. Self-host it with your own Amazon SES or PostShiba account, or use MailCheap Cloud, which runs this same code.
Features
- AI agents and the dashboard. Everything the dashboard does also works from an AI agent through the MCP server, and from code through the REST API, with the same checks and limits. ChatGPT, Claude and Grok Bot connect with OAuth; Claude Code, Codex and Cursor with an API key. MCP marks sending as an action that can't be undone, so agents ask you first.
- Write, review, send. Write in an editor with slash commands, images and boxes, or send Markdown or a complete HTML email through the API and MCP. Review shows what to fix before sending: subject, preview text, unsubscribe link, Gmail's 100 KB clip, postal address, sender. Then send it, schedule it, or start with your most engaged readers and send to more later.
- Imports from beehiiv, Substack and Mailchimp. Their CSV exports import as they are, with each reader's status and signup date, and so do Kit's, MailerLite's, Buttondown's, Ghost's and EmailOctopus's.
- A website for each newsletter, on a free subdomain on MailCheap Cloud (
<slug>.mailcheap.ai), or on your server: every issue gets a page search engines can find, with a signup form, an author page, share images and a sitemap. - Sending from your own domain, with the DKIM, return path and DMARC records to add and a check for each. On MailCheap Cloud, a newsletter without a domain sends from its own shared address,
hello@<slug>.mailcheap.ai. - Deliverability protections, built in:
- sending pace: contacts the account never emailed go out in steps, a random 2% first, then 5% more, then the rest, 30 minutes apart while their bounces and complaints stay low. On MailCheap Cloud, a domain new to Gmail also sends to its first 2,000 Gmail readers on its first day and to the others the next day;
- list cleanup, on by default: readers who ignored several issues get one "do you still want this?" email, then stop getting issues;
- contact cleaning: imports leave out invalid, misspelled (gmial.com), spam trap, role, throwaway and duplicate addresses, domains that can't receive email, and anyone who unsubscribed, bounced or complained before;
- one never-email list for the whole server: an address the email provider says doesn't exist (for 180 days) or that turned out to be a spam trap (for good) is left out of every account's imports, signups and sends, and only a keyed hash of it is kept;
- spam and bounce limits: a send pauses past 2% hard bounces or 0.08% complaints, and the account is blocked past 5% or 0.3%, or on a spam trap hit;
- Gmail's spam rates, which Gmail never reports one complaint at a time: every email carries a
Feedback-IDfor Gmail's feedback loop (its campaign or newsletter, its account, its kind), and once an admin connects Google Postmaster Tools, MailCheap reads it every day. An account Gmail flags at 0.08% has its sends paused, at 0.3% it's blocked, and the admins hear when the whole domain reaches 0.1%; - one-click unsubscribe (RFC 8058) and a signed unsubscribe link in every email, and confirmed opt-in, on by default.
- Several newsletters: up to 3 per account, each with its own contacts, campaigns and website.
- Signups and stats: signup forms and a signup API, welcome emails, open and click tracking that leaves link scanners out, subscribers over time, and reports by inbox provider (Gmail, Outlook, Yahoo, iCloud...).
| Write, review, send | The newsletter's website |
| --- | --- |
|
|
|
All names and addresses in the screenshots are made up.
MailCheap Cloud or self-hosted
| | MailCheap Cloud | Self-hosted |
| --- | --- | --- |
| Price | From $19 a month for 20,000 emails | Free, plus what your provider charges per email: $0.10 to $0.16 per 1,000 on Amazon SES |
| Sending | Set up for you, from hello@<slug>.mailcheap.ai or your domain | Your Amazon SES or PostShiba account, from your domain |
| Website | <slug>.mailcheap.ai | /archive/<slug> on your server's domain |
| Who signs in | Anyone who signs up | The emails you allow |
| Limits | Emails a month and active subscribers, by plan | None |
| Setup | A few minutes | About an hour, most of it waiting for DNS and production access |
| Support | A chat in the dashboard | None: issues are off |
MailCheap Cloud is this repository with MAILCHEAP_CLOUD=true, which adds open sign-up, plans and Stripe billing. Only active subscribers count toward a plan, not the ones list cleanup marked dormant. Its marketing site (the landing, pricing and legal pages) isn't part of the open source. Every change to the app ships to both.
With your own sending account, you pay your provider for the emails you send: 10,000 readers and 4 issues a month is 40,000 emails, about $4 to $6 on Amazon SES.
Self-hosting
Plan for about an hour, most of it waiting for DNS and for your provider to approve production sending. Self-hosting comes without support: issues are off and setup questions go unanswered.
What you need
| Service | For | Cost | | --- | --- | --- | | MongoDB | Contacts, campaigns, stats | Free tier works | | Amazon SES or PostShiba | Sending | SES: $0.10 to $0.16 per 1,000 emails, depending on its pricing plan. PostShiba: a fixed price per cluster, invite only for now | | Upstash QStash | Background sending and scheduling | Free tier to start, then pay per message. One message sends 50 emails | | Vercel or any Node.js 22+ host | Hosting | Free tier works | | Resend (optional) | Sign-in codes and alerts. Without it, they go through SES or PostShiba | Free plan works | | Upstash Redis (optional) | Rate limits shared by every server instance | Free tier | | Amazon S3 with CloudFront, or Vercel Blob (optional) | Image uploads in the editor, the newsletter settings and the API | S3 and CloudFront: pay per use. Blob: free tier |
Without Redis, MailCheap counts the same rate limits in each server instance's memory. That still stops a script hammering a form, but on serverless hosts the limits aren't shared between instances and reset on each deploy. Add Redis before you put a signup form on a busy site. Without S3 or Blob, image uploads are off; HTML and Markdown campaigns can still use images hosted anywhere.
Environment variables
| Variable | What it does |
| --- | --- |
| MONGODB_URI | MongoDB connection string with a database name |
| BETTER_AUTH_SECRET | Signs sessions and every link in sent emails. 32+ random characters (openssl rand -base64 48), or the server refuses to start. Rotating it signs everyone out and breaks links in emails already sent |
| SUPPRESSION_HASH_KEY | Keys the hashes of the never-email list every account shares. 32+ random characters of its own, never BETTER_AUTH_SECRET, or the server refuses to start, after an upgrade too. Changing it empties the list |
| ADMIN_EMAILS | Comma-separated emails that can sign in and open /admin |
| ALLOWED_EMAILS | Who else can sign in: addresses and @domain entries, comma-separated |
| EMAIL_FROM | From address of sign-in codes and alerts, on a domain your Resend account or email provider verified |
| APP_URL | Public URL of the app, for email links and sign-in. On Vercel it defaults to the production domain |
| RESEND_API_KEY | Optional: sign-in codes and alerts through Resend. Without it, they go through the email provider |
| SENDING_ENABLED | Nothing goes to readers unless it's true. Sign-in codes and alerts don't wait for it |
| SES_* or POSTSHIBA_* | The email provider, in step 4 |
| QSTASH_* | Background sending and scheduling, in step 5 |
.env.example lists every variable with what it does, the optional ones included: Google sign-in and Postmaster Tools, image uploads, Redis, Telegram alerts, the shared domain, and MailCheap Cloud's own.
1. Database
- Create a free cluster on MongoDB Atlas.
- Database Access: add a user with a password and the "Read and write to any database" role.
- Network Access: allow
0.0.0.0/0. Vercel doesn't have fixed IP addresses. - Connect > Drivers: copy the connection string and add a database name before the
?, like...mongodb.net/mailcheap?retryWrites=true. That's yourMONGODB_URI.
2. Deploy
- Click Deploy above.
- Fill in
MONGODB_URI,BETTER_AUTH_SECRET(at least 32 characters; generate it withopenssl rand -base64 48),SUPPRESSION_HASH_KEY(generated the same way, another value),ADMIN_EMAILS(your email) andEMAIL_FROM(likeMailCheap <login@mail.example.com>, on a domain your Resend account or email provider verified). With a short secret, MailCheap refuses to start and the logs say why. - Sign-in codes need a way to reach you. The quickest is Resend: verify
EMAIL_FROM's domain there and addRESEND_API_KEY. Without it, codes go through SES or PostShiba once step 4 is done. - Open
https://<your-project>.vercel.app/signinand sign in with your email.
Sending stays off until you finish the next steps, so nothing goes out to readers by mistake. On any other Node.js host: npm ci && npm run build && npm start, with the same variables, behind HTTPS.
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
101.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
77.7kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.5kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
89.4k🕷️ A Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
