good-sender avatar

GoodSender

good-sender/mcp

Connects Claude to GoodSender's email platform with consent management baked in. You get tools to send plain text, HTML, or Markdown emails, create and preview templates with dynamic variables, organize recipients into groups, and manage sender identities. The consent flow is automatic: new recipients get a consent request, emails queue locally until they opt in, and everything sends once approved. Built-in transactional templates handle OTP and order confirmations without consent requirements. All recipient data and templates stay on your machine. Useful when you need AI-assisted email campaigns that respect privacy laws or want to iterate on email designs conversationally with live previews.

tools
55
auth
Secret needed
transport
STDIO, HTTP
env vars
3
last updated
Nov 11, 2026

Tools

55 tools

Public tool metadata for what this MCP can expose to an agent.

list_postsList all posts, drafts and published, with the blog's byline and taxonomy.

List all posts, drafts and published, with the blog's byline and taxonomy.

No parameter schema in public metadata yet.

get_postGet one post, including its markdown body.

Get one post, including its markdown body.

No parameter schema in public metadata yet.

create_postCreate a draft post. It never publishes or sends.

Create a draft post. It never publishes or sends.

No parameter schema in public metadata yet.

edit_postChange a draft or published post.

Change a draft or published post.

No parameter schema in public metadata yet.

delete_postPermanently delete a post.

Permanently delete a post.

No parameter schema in public metadata yet.

create_post_previewCreate a signed preview URL for a draft or published post.

Create a signed preview URL for a draft or published post.

No parameter schema in public metadata yet.

upload_post_imageUpload an image (JPEG, PNG, GIF or WebP) for a post and get back its URL.

Upload an image (JPEG, PNG, GIF or WebP) for a post and get back its URL.

No parameter schema in public metadata yet.

get_post_distributionShow where a post goes when published: the newsletter and the dev.to, X, LinkedIn, Bluesky and Mastodon destinations.

Show where a post goes when published: the newsletter and the dev.to, X, LinkedIn, Bluesky and Mastodon destinations.

No parameter schema in public metadata yet.

set_post_distributionChoose those destinations and review their text, newsletter subject and summary.

Choose those destinations and review their text, newsletter subject and summary.

No parameter schema in public metadata yet.

publish_postPublish the post to the public blog, then act on its distribution plan.

Publish the post to the public blog, then act on its distribution plan.

No parameter schema in public metadata yet.

send_post_testSend a test email of the post to one inbox.

Send a test email of the post to one inbox.

No parameter schema in public metadata yet.

broadcast_postEmail a published post's newsletter to consented subscribers, at most once per post.

Email a published post's newsletter to consented subscribers, at most once per post.

No parameter schema in public metadata yet.

reannounce_postPost a published post to one announce destination (X, LinkedIn, Bluesky or Mastodon) again.

Post a published post to one announce destination (X, LinkedIn, Bluesky or Mastodon) again.

No parameter schema in public metadata yet.

get_blogGet blog settings (title, description, sender, theme, custom domain) and whether a custom design is live.

Get blog settings (title, description, sender, theme, custom domain) and whether a custom design is live.

No parameter schema in public metadata yet.

update_blogCreate or change blog settings, including SEO title and description.

Create or change blog settings, including SEO title and description.

No parameter schema in public metadata yet.

connect_blog_domainClaim a custom hostname for the blog and get the DNS records to add.

Claim a custom hostname for the blog and get the DNS records to add.

No parameter schema in public metadata yet.

get_blog_custom_domainCheck custom domain status and DNS targets.

Check custom domain status and DNS targets.

No parameter schema in public metadata yet.

remove_blog_custom_domainRemove the blog's custom domain.

Remove the blog's custom domain.

No parameter schema in public metadata yet.

blog_design_template_formatDocumentation for the blog design template format.

Documentation for the blog design template format.

No parameter schema in public metadata yet.

blog_design_listList saved designs, flagging the active one and the stock one.

List saved designs, flagging the active one and the stock one.

No parameter schema in public metadata yet.

blog_design_createCreate a new design from templates and images.

Create a new design from templates and images.

No parameter schema in public metadata yet.

blog_design_editEdit a design's templates.

Edit a design's templates.

No parameter schema in public metadata yet.

blog_design_get_latest_checkpointGet the latest version of a design.

Get the latest version of a design.

No parameter schema in public metadata yet.

blog_design_checkpoint_listList the versions of a design.

List the versions of a design.

No parameter schema in public metadata yet.

blog_design_checkpoint_restoreGo back to an earlier version, deleting the newer ones.

Go back to an earlier version, deleting the newer ones.

No parameter schema in public metadata yet.

blog_design_saveKeep a version and delete the older ones.

Keep a version and delete the older ones.

No parameter schema in public metadata yet.

blog_design_activateMake a saved design the live design of the blog.

Make a saved design the live design of the blog.

No parameter schema in public metadata yet.

blog_design_image_upload_urlGet an upload URL for a logo or favicon.

Get an upload URL for a logo or favicon.

No parameter schema in public metadata yet.

enqueue_emailQueue an email in plain text, HTML or Markdown to addresses or groups. It is sent once the recipient consents.

Queue an email in plain text, HTML or Markdown to addresses or groups. It is sent once the recipient consents.

No parameter schema in public metadata yet.

enqueue_template_emailQueue a template-based email. It is sent once the recipient consents.

Queue a template-based email. It is sent once the recipient consents.

No parameter schema in public metadata yet.

send_consentless_emailSend a built-in transactional template (OTP code, MFA enrollment, new device login, password or email changed, order receipt or completion) right away.

Send a built-in transactional template (OTP code, MFA enrollment, new device login, password or email changed, order receipt or completion) right away.

No parameter schema in public metadata yet.

send_pending_emailsSend queued emails whose recipients have consented since they were queued.

Send queued emails whose recipients have consented since they were queued.

No parameter schema in public metadata yet.

send_template_draft_test_emailSend a test email from a template draft to one recipient.

Send a test email from a template draft to one recipient.

No parameter schema in public metadata yet.

template_formatDocumentation for the email template format.

Documentation for the email template format.

No parameter schema in public metadata yet.

create_template_draftStart a new template draft.

Start a new template draft.

No parameter schema in public metadata yet.

edit_templateEdit a template or draft with search-and-replace changes.

Edit a template or draft with search-and-replace changes.

No parameter schema in public metadata yet.

get_templateGet a saved template by name.

Get a saved template by name.

No parameter schema in public metadata yet.

get_template_contentGet a template's current content, including unsaved edits.

Get a template's current content, including unsaved edits.

No parameter schema in public metadata yet.

render_template_previewRender a template preview with sample data.

Render a template preview with sample data.

No parameter schema in public metadata yet.

save_templateSave a template draft.

Save a template draft.

No parameter schema in public metadata yet.

list_templatesList email templates.

List email templates.

No parameter schema in public metadata yet.

delete_templateDelete a template and the emails created from it.

Delete a template and the emails created from it.

No parameter schema in public metadata yet.

create_recipientsAdd recipients and request their consent.

Add recipients and request their consent.

No parameter schema in public metadata yet.

list_recipientsList recipients with group memberships and their last known consent status.

List recipients with group memberships and their last known consent status.

No parameter schema in public metadata yet.

edit_recipientChange a recipient's display name.

Change a recipient's display name.

No parameter schema in public metadata yet.

delete_recipientsPermanently delete recipients and their emails.

Permanently delete recipients and their emails.

No parameter schema in public metadata yet.

create_groupCreate a recipient group.

Create a recipient group.

No parameter schema in public metadata yet.

list_groupsList recipient groups.

List recipient groups.

No parameter schema in public metadata yet.

add_group_membersAdd recipients to a group.

Add recipients to a group.

No parameter schema in public metadata yet.

remove_group_membersRemove recipients from a group.

Remove recipients from a group.

No parameter schema in public metadata yet.

create_sender_identityCreate a `From:` identity on a verified domain.

Create a `From:` identity on a verified domain.

No parameter schema in public metadata yet.

edit_sender_identityChange a sender identity's display name.

Change a sender identity's display name.

No parameter schema in public metadata yet.

list_sender_identitiesList sender identities and whether each domain is verified.

List sender identities and whether each domain is verified.

No parameter schema in public metadata yet.

check_sender_domain_statsShow email health metrics for each sender domain. Read-only.

Show email health metrics for each sender domain. Read-only.

No parameter schema in public metadata yet.

confirm_actionRun an action you approved, for both blog and email tools. Present only on a local server with action guards on (see Action confirmation).

Run an action you approved, for both blog and email tools. Present only on a local server with action guards on (see Action confirmation).

No parameter schema in public metadata yet.

Sponsors

Configuration

GOODSENDER_API_KEY*secret

Your GoodSender API key (from the API Keys section of the GoodSender Console).

GOODSENDER_TELEMETRY

Set to false to opt out of anonymous usage/reliability telemetry.

GOODSENDER_DISABLE_ACTION_GUARDS

Set to true so mutating tools run immediately without asking for action confirmation. Use for unattended agent loops (for example Claude Cowork on a schedule). Default false: publish and send wait for confirmation.

Readme

GoodSender MCP Server

Publish blog posts, send newsletters and emails from Claude, Claude Code, Codex and ChatGPT. Send consent-based email and transactional email (OTP and MFA codes), and publish blog posts on your own domain. Connect to the hosted server with OAuth and nothing to install, or run it locally with an API key.

What you can do

Ask your assistant things like:

  • "Write a post about our new release, publish it on my blog and email it to subscribers."
  • "Draft a post from these notes and show me the preview before anything goes live."
  • "Connect blog.example.com to my blog and tell me which DNS records to add."
  • "Create a custom design for my blog that matches our logo, and show me a preview first."
  • "Send a password reset code to user@example.com with the OTP template."
  • "Email the March update to the beta-users group."

View the full README on GitHub

Details

Repository
github.com/good-sender/mcp
Website
goodsender.com
Package
https://github.com/good-sender/mcp/releases/download/v0.9.2/goodsender.mcpb
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active