Mailazy MCP

Run email marketing from your AI assistant: contacts, campaigns, automations and behavior emails.

Hosted MCP Server

npx add-mcp 'https://mcp.mailazy.com'

Installs into Claude Code, Codex, Cursor and more

Documentation

Mailazy MCP server

Mailazy has an MCP server, so AI apps — Claude, ChatGPT, Cursor and any other MCP client — can run Mailazy for a marketer: read contacts and reports, create lists and newsletters, schedule sends. Everything goes through the same API and permission checks as the dashboard.

For the marketer-facing guide, see Mailazy MCP: connect ChatGPT, Claude and other AI apps.

Address

https://mcp.mailazy.com

https://mcp.mailazy.com/mcp works too. Transport: Streamable HTTP, stateless (POST, JSON responses); GET and DELETE return 405.

Connect a client

Claude Code

claude mcp add --transport http mailazy https://mcp.mailazy.com

Then run /mcp, pick mailazy and authenticate.

Claude, ChatGPT and other apps with connectors — add a custom connector with the address above.

MCP Inspector (testing)

npx @modelcontextprotocol/inspector

Set the URL to the MCP address and connect.

Login (OAuth)

The MCP server is its own OAuth 2.1 authorization server in front of the Mailazy login, so marketers log in with their normal Mailazy account.

  1. The client reads /.well-known/oauth-protected-resource/mcp and /.well-known/oauth-authorization-server.
  2. It registers itself: POST /register (dynamic client registration, public client, token_endpoint_auth_method: none).
  3. It opens /authorize (authorization code + PKCE S256, required).
  4. The marketer enters their email (used to pick the right organization), logs in with their Mailazy account, ticks the products the AI may use (grouped by organization) and agrees to share data with their AI app.
  5. The client calls POST /token and gets:
    • an access pass: RS256 JWT, 1 hour, holding the user, the picked products and the connection id;
      • a renewal pass: 60 days, rotated on every use (an old one stops working).

Public keys: /.well-known/jwks.json.

What a pass can do

  • Only product-scoped API routes, and only for the products picked at login (others return 404).
  • The marketer's role is checked live per organization, exactly like the dashboard.
  • Never organization, team, profile or connection settings (403).
  • Disconnect from the dashboard (MCP page) stops the pass and its renewals at once.

Safety

RuleHow it works
Preview, then yesTools marked needs yes first return a preview and a confirm_code (10 minutes, only for the same tool and arguments). Calling again with the code runs it.
Practice modeOn by default per person. Real sends (schedule, send, resume automation) are refused and people can't be put on a list whose automation is on; test sends work. Automations already on keep sending by themselves. Toggle in the dashboard or with update_practice_mode.
Pre-send checkcheck_newsletter / POST /newsletters/:id/check returns blockers (no unsubscribe link, empty subject, broken links, empty list, SMTP not set up) and warnings (spammy, all-caps or long subject, image-heavy, missing names, not tested). Sends refuse while there are blockers.
Cancel windowsend_newsletter sends 5 minutes later (send-now with delaySeconds: 300), so it can still be cancelled.
UndoReversible changes are logged with their reverse calls and can be undone for 1 day (undo_change, or Undo in the dashboard's Logs → Activity logs / MCP logs). Sent emails, deletes and imports can't be undone.
Activity logEvery change — by team members in the dashboard and by AI apps — is kept for 7 days and shown under Logs (Activity logs and MCP logs tabs), per product or for the whole organization.

Tools

84 tools. Type says what a tool does to data: GET (reads), CREATE, UPDATE, DELETE, SEND. Every tool takes an optional product (name or id; automatic when only one product is connected). Lists, tags, templates, newsletters and automations are named in plain words, not ids.

Account

ToolTypeWhat it does
get_accountGETShows the connected organizations and products, and the marketer's role in each.
get_setup_statusGETChecks if the product is ready to send, and what is missing.
get_overviewGETAccount numbers for the last 30 days.
get_reportGETNumbers for any date range (product time zone), optionally compared with another range.
list_docsGETLists every docs page: guide, developer pages and the API reference (api/contacts, api/events, …).
read_docGETReturns one docs page in full. The same pages are also MCP resources (mailazy-docs://guide/mcp, …).
get_suggestionsGETAnswers "What needs my attention?" with up to 5 next steps, most important first.

Contacts

ToolTypeWhat it does
list_contactsGETFinds contacts.
get_contactGETEverything about one contact.
create_contactCREATEAdds one new contact.
update_contactUPDATEChanges one contact's details.
delete_contactsDELETE · needs yesDeletes contacts and their pending emails.
check_contacts_importGETChecks contacts before import. Changes nothing.
import_contactsCREATEAdds many contacts at once.
add_contacts_tagsUPDATEAdds tags to many contacts.
remove_contacts_tagsUPDATERemoves tags from many contacts.
add_contacts_to_listUPDATEAdds contacts to a list.
remove_contacts_from_listUPDATERemoves contacts from a list. They stay in Mailazy.
move_contacts_to_listUPDATEMoves contacts from one list to another.
stop_contact_automationsUPDATEStops automated emails for some contacts.

Lists & Segments

ToolTypeWhat it does
list_listsGETAll lists with contact counts.
get_listGETOne list and its contacts.
create_listCREATEMakes an empty list.
update_listUPDATERenames a list.
delete_listDELETE · needs yesDeletes a list. Contacts stay.
preview_segmentGETCounts contacts that match rules. Saves nothing.
create_list_from_segmentCREATESaves matching contacts as a new list.
ToolTypeWhat it does
list_tagsGETAll tags with contact counts.
create_tagCREATE
update_tagUPDATERenames a tag everywhere.
delete_tagDELETE · needs yesRemoves a tag from all contacts and deletes it.

Templates

ToolTypeWhat it does
list_templatesGET
get_templateGET
write_templateGETMailazy's AI writer drafts a subject and HTML in the brand's style. Uses the plan's AI credits (not on Free), so the AI asks first and offers to write the HTML itself instead. Saves nothing; create_template saves it after a yes.
create_templateCREATESaves content (usually written by the AI) as a new template.
update_templateUPDATEEdits a template. Old versions are kept; emails already scheduled keep their version.
turn_off_templateUPDATE · needs yesTurns a template off. The warning lists every newsletter, automation and event rule that uses it.
turn_on_templateUPDATETurns a turned-off template back on (newest version).
delete_templateDELETE · needs yesOnly if no scheduled newsletter or active automation uses it.
preview_templateGETIn AI apps that support MCP Apps (Claude, ChatGPT and others), shows the real email in the chat with Send me a test / Change it / Use it buttons. Others get the text.
send_test_templateSEND (test)Sends a test to the marketer only.

Newsletters

ToolTypeWhat it does
list_newslettersGET
get_newsletterGET
create_newsletterCREATECreates a draft.
update_newsletterUPDATEChanges a draft or scheduled newsletter. Clears the "tested" mark.
delete_newsletterDELETE · needs yesOnly drafts and cancelled newsletters.
duplicate_newsletterCREATECopies any newsletter into a new draft.
check_newsletterGETPre-send checker.
preview_newsletterGETSame email preview. Schedule it: pick a time (or Send now), see the send preview, then click Yes or No. Uses the same confirm code as typing yes, so practice mode and blockers still apply.
send_test_newsletterSEND (test)Sends a test to the marketer only. Marks the newsletter "tested".
schedule_newsletterSEND · needs yes
send_newsletterSEND · needs yesSends now, after a 5-minute wait (can be cancelled in that time).
turn_off_newsletterUPDATE · needs yesMoves a scheduled newsletter back to draft so it won't send. schedule_newsletter turns it back on.
cancel_newsletterUPDATEStops a scheduled newsletter, or one still in its 5-minute wait.

Reports

ToolTypeWhat it does
get_newsletter_reportGETHow a sent newsletter did.
list_newsletter_recipientsGETWho got a newsletter and what they did.
compare_newslettersGET

Email Logs & Unsubscribes

ToolTypeWhat it does
why_no_emailGETWhy one address isn't getting emails: SMTP setup, unsubscribed, last errors. Plain words, most likely reason first.
check_sendingSEND (test)Shows the SMTP server and sender (never the password); optionally sends a test to the marketer.
list_email_logsGETAll emails sent to one address.
get_email_logGETOne sent email in detail.
list_scheduled_emailsGETEmails waiting to go out (or stopped or failed ones): counts by automation, newsletter or event, and the next 20.
stop_scheduled_emailsUPDATE · needs yesPauses waiting emails, filtered by source, list, template or address. Can be resumed.
resume_scheduled_emailsUPDATE · needs yesPuts stopped emails back. Send times move later by how long they were stopped; people who left, unsubscribed or were blocked are skipped.
resend_failed_emailsUPDATE · needs yesSends failed emails again now. Skips the same people and sources as resume; the plan's monthly limit applies. Warns that "Interrupted while sending" emails may arrive twice.
cancel_scheduled_emailsUPDATE · needs yesDrops waiting or stopped emails for good. Can't be undone.
list_unsubscribesGETUnsubscribed and blocked addresses.
create_unsubscribeCREATEUnsubscribes an address. Pending emails are cancelled.
delete_unsubscribeDELETE · needs yesLets an unsubscribed person get emails again. Only if they asked.

Automations

ToolTypeWhat it does
list_automationsGET
get_automationGET
create_automationCREATE · needs yesCreates an automatic email series that starts when someone joins a list.
update_automationUPDATE
pause_automationUPDATE · needs yesTurns an automation off. Waiting emails are cancelled.
resume_automationUPDATE · needs yesTurns an automation back on.
delete_automationDELETE · needs yes

Brand Settings

ToolTypeWhat it does
get_product_settingsGET- Branding: logo, colours, company name and address, footer, white-label
update_brand_voiceUPDATEChanges only the brand voice (Settings → Brand).

Safety

ToolTypeWhat it does
help_meGETStart here. Without a goal: what is set up and a short menu of next steps. With a goal: a step-by-step guide (first email, welcome series, sale, email not arriving, results, import, clean up, win-back). Same guides as the prompts, for AI apps that hide prompts.
get_practice_modeGET
update_practice_modeUPDATE · needs yes
list_changesGETRecent changes (last 1 day).
undo_changeUPDATEUndoes a change from the last 1 day.

Guided workflows (prompts)

plan_and_send_newsletter · clean_up_list · weekly_report · import_new_list · win_back_inactive

Errors

Tool errors come back as normal results with isError: true and a plain sentence, for example "Your Mailazy connection expired. Please reconnect Mailazy in your AI app." or "Two lists match "Leads": … Which one?".