MailerLite
MCP Server

Changelog

Every MailerLite MCP server release: tools added, removed or renamed, tool description and schema changes, and fixes.

Each entry covers one release of the MailerLite MCP server at https://mcp.mailerlite.com/mcp. The server version is ours; the MCP protocol revision is the version of the Model Context Protocol the server speaks. Link to a release by its anchor, for example /mcp/changelog#v4-13-1.

⚠ Breaking marks a change that narrows what a tool accepts — a new required field, a removed enum value, a tighter limit — or removes a tool, or a field clients may rely on in a tool's output. Tool description changes are never marked breaking, but they are always listed: assistants read descriptions to decide how and when to call a tool.

v4.13.1

Sep 24, 2026 · MCP protocol 2025-11-25 (also supports 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07) · ⚠ Breaking

This patch release makes lookups more forgiving and fixes several problems with fetch, including one where it exposed webhook secrets.

Description changes

assign_subscriber_to_group
- Add a subscriber to a group
+ Add a subscriber to a group.
+ If no subscriber matches the ID/email or no group matches the ID, this returns a normal (non-error) result with found: false rather than failing — a missing subscriber or group is an expected outcome, not a tool error.
delete_subscriber
  Delete a subscriber from the account.
+ If no subscriber matches the ID, this returns a normal (non-error) result with success: false rather than failing — a missing subscriber is an expected outcome, not a tool error.
fetch
  Fetch the full record for a single MailerLite resource using an identifier returned by the search tool.
+ Always call search first to obtain this id — never guess or fabricate one.
  Args:
- - id (string, required): A prefixed identifier from search results formatted "<kind>:<id>" where kind is campaign, group, form, or automation (e.g.
+ - id (string, required): A prefixed identifier from search results formatted "<kind>:<id>" where kind is campaign, group, form, automation, or segment (e.g.
  "campaign:123").
+ Alternatively, a bare id (no prefix) if "type" is also given.
+ - type (string, optional): One of campaign, group, form, automation, segment.
+ Required only when "id" is a bare id without a "<kind>:" prefix.
  Returns: { "id": string, "title": string, "text": string, "url": string, "metadata": object }.
  "text" is the full resource serialized as JSON; "metadata" carries kind-specific summary fields (e.g. status/type for campaigns, active_count for groups).
  Examples:
  - After search returns "automation:012" -> fetch with id="automation:012".
- - The id must include the kind prefix from search; a bare numeric id or an unsupported kind returns an error.
+ - If you already have a bare numeric id and know its kind -> fetch with id="123", type="group".
+ - An id without a "<kind>:" prefix and no "type" argument, an unsupported kind, or an id that matches nothing returns an actionable error telling you to call search first.
get_campaign
- Get details of a specific campaign
+ Get details of a specific campaign.
+ If no campaign matches the ID, this returns a normal (non-error) result with found: false rather than failing — a missing campaign is an expected outcome, not a tool error.
get_group_subscribers
  Get subscribers in a specific group.
  Results are cursor-paginated — pass the cursor from the previous response to fetch the next page.
+ If no group matches the ID, this returns a normal (non-error) result with found: false rather than failing — a missing group is an expected outcome, not a tool error.
get_subscriber_activity
- Get activity history for a subscriber (opens, clicks, etc.)
+ Get activity history for a subscriber (opens, clicks, etc.).
+ If no subscriber matches the ID or email, this returns a normal (non-error) result with found: false rather than failing — a missing subscriber is an expected outcome, not a tool error.
search
- Search across MailerLite campaigns, groups, forms, and automations by free-text query, matching names and key fields (subject, type, status, slug).
+ Search across MailerLite campaigns, groups, forms, automations, and segments by free-text query, matching names and key fields (subject, type, status, slug).
  This is a discovery tool that returns lightweight result stubs, not full records.
  To get the full details of a result, pass its id to the fetch tool.
+ Always call search before fetch — fetch requires an id from these results (or a bare id plus an explicit type; see the fetch tool description).
  Args:
  - query (string, required): Case-insensitive text to match across resource names and fields.
  - limit (number): Max results, 1-20 (default 10).
  Returns: { "results": [{ "id": string, "title": string, "url": string }] }.
- Each id is a prefixed identifier like "campaign:123", "group:456", "form:789", or "automation:012" — pass it verbatim to fetch.
+ Each id is a prefixed identifier like "campaign:123", "group:456", "form:789", "automation:012", or "segment:345" — pass it verbatim to fetch.
  Returns an empty results array (never an error) when nothing matches.
  Examples:
  - "find my black friday campaign" -> query="black friday"
  - "which welcome automation do I have" -> query="welcome"
  - For unfiltered listing use list_campaigns / list_automations / list_resources instead.

Input schema changes

  • fetch · type — optional property added

Output schema changes

  • assign_subscriber_to_group · id · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · name · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · active_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · sent_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · opens_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · open_rate · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · clicks_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · click_rate · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · unsubscribed_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · unconfirmed_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · bounced_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · junk_count · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · created_at · ⚠ Breaking — no longer required
  • assign_subscriber_to_group · found — optional property added
  • get_campaign · id · ⚠ Breaking — no longer required
  • get_campaign · name · ⚠ Breaking — no longer required
  • get_campaign · found — optional property added
  • get_group_subscribers · found — optional property added
  • get_subscriber_activity · found — optional property added

Bug fixes

  • Fetching an automation with a webhook step no longer includes that webhook's signing secret in the result.
  • When fetch is given a well-formed id that doesn't match anything, it now returns the same error for every resource type and points to search as the next step. Previously the error differed by type and sometimes included internal server messages. Anything that matched the old error wording will need updating.
  • Fetch now treats deleted resources as not found. It no longer surfaces them as a generic API error.
  • Getting a campaign that has been deleted now gives the same not-found result as a campaign that never existed.
  • Subscriber emails with special characters, such as +, now work reliably in tools that look up a subscriber by email.

Auth & transport

  • No changes.

On this page