Moosend MCP by usefulapi

Inspect Moosend lists, subscribers, segments and campaign stats, and add or unsubscribe subscribers.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
95%
Naming quality
76%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • LOWTool 'moosend_get_subscriber_by_email' name length outside 3-30 rangein moosend_get_subscriber_by_email
  • LOWTool 'moosend_list_segment_subscribers' name length outside 3-30 rangein moosend_list_segment_subscribers
  • LOWTool 'moosend_get_campaign_link_activity' name length outside 3-30 rangein moosend_get_campaign_link_activity
  • LOWTool 'moosend_get_campaign_activity_by_location' name length outside 3-30 rangein moosend_get_campaign_activity_by_location

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,844Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (3.78% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "moosend": {
      "url": "https://moosend.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://moosend.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢moosend_list_mailing_lists(page, page_size, sort_by, sort_method)

List the active email (mailing) lists in the account with member counts (active, bounced, removed, unsubscribed), custom field definitions and preferences, plus paging info. A cheap way to confirm the API key works and to find list IDs. Moosend: GET /lists/{Page}/{PageSize}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, starting at 1. Default 1.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Results per page, 1-1000.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "sort_by": {
      "description": "Property to sort by. Default CreatedOn.",
      "type": "string",
      "enum": [
        "Name",
        "Subject",
        "Status",
        "DeliveredOn",
        "CreatedOn"
      ]
    },
    "sort_method": {
      "description": "Sort direction. Default ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_mailing_list(mailing_list_id, with_statistics)

Get one mailing list: name, member counts, status, custom field definitions (id, name, type, required), preferences and the latest import operation. Moosend: GET /lists/{MailingListID}/details.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "with_statistics": {
      "description": "Include subscriber statistics. Default true.",
      "type": "boolean"
    }
  },
  "required": [
    "mailing_list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_list_subscribers(mailing_list_id, status, page, page_size)

List the subscribers of one mailing list filtered by status (Subscribed, Unsubscribed, Bounced or Removed), with name, email, custom fields, tags, preferences and dates. Paged. Moosend: GET /lists/{MailingListID}/subscribers/{Status}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "status": {
      "description": "Subscriber status to return. Default Subscribed.",
      "type": "string",
      "enum": [
        "Subscribed",
        "Unsubscribed",
        "Bounced",
        "Removed"
      ]
    },
    "page": {
      "description": "Page number, starting at 1. Default 1.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Results per page, 1-1000.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "mailing_list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_subscriber_by_email(mailing_list_id, email)

Look up a subscriber in one mailing list by email address: ID, name, status (SubscribeType 1 subscribed, 2 unsubscribed, 3 bounced, 4 removed), custom fields, tags and preferences. Moosend: GET /subscribers/{MailingListID}/view.json?Email=.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Subscriber email address."
    }
  },
  "required": [
    "mailing_list_id",
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_subscriber(mailing_list_id, subscriber_id)

Get one subscriber in a mailing list by subscriber ID. Moosend: GET /subscribers/{MailingListID}/find/{SubscriberID}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "subscriber_id": {
      "type": "string",
      "minLength": 1,
      "description": "Subscriber ID (a GUID)."
    }
  },
  "required": [
    "mailing_list_id",
    "subscriber_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_list_segments(mailing_list_id)

List the segments of one mailing list, including their criteria, match type (0 all / 1 any) and a readable description. Moosend: GET /lists/{MailingListID}/segments.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    }
  },
  "required": [
    "mailing_list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_segment(mailing_list_id, segment_id)

Get one segment's details and criteria (not its members). Moosend: GET /lists/{MailingListID}/segments/{SegmentID}/details.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "segment_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Segment ID (an integer, from moosend_list_segments)."
    }
  },
  "required": [
    "mailing_list_id",
    "segment_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_list_segment_subscribers(mailing_list_id, segment_id)

List the subscribers that currently match one segment's criteria. Moosend: GET /lists/{MailingListID}/segments/{SegmentID}/members.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "segment_id": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Segment ID (an integer, from moosend_list_segments)."
    }
  },
  "required": [
    "mailing_list_id",
    "segment_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_list_campaigns(page, page_size, sort_by, sort_method)

List campaigns with status (0 draft, 1 queued, 3 sent, 5 awaiting delivery, 6 sending, ...), delivery/schedule dates, target lists and headline stats (sent, opens, clicks, bounces, unsubscribes, complaints). Paged, up to 1000 per page. Moosend: GET /campaigns/{Page}/{PageSize}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, starting at 1. Default 1.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Results per page, 1-1000.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "sort_by": {
      "description": "Property to sort by. Default CreatedOn.",
      "type": "string",
      "enum": [
        "Name",
        "Subject",
        "Status",
        "DeliveredOn",
        "CreatedOn"
      ]
    },
    "sort_method": {
      "description": "Sort direction. Default ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_campaign(campaign_id)

Get one campaign's details: subject, sender and reply-to, HTML and plain content, target lists/segments, schedule, status and A/B data. No statistics (use moosend_get_campaign_summary). Moosend: GET /campaigns/{CampaignID}/view.json.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "description": "Campaign ID (a GUID, from moosend_list_campaigns)."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_campaign_summary(campaign_id)

Get a sent campaign's results to date: sent, total/unique opens, total/unique link clicks, bounces, complaints, forwards and unsubscribes. Moosend: GET /campaigns/{CampaignID}/view_summary.json.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "description": "Campaign ID (a GUID, from moosend_list_campaigns)."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_campaign_activity(campaign_id, type, page, page_size, from, ...)

Per-recipient activity for a campaign by type: Sent, Opened, LinkClicked, Unsubscribed, Bounced, Complained, or Activity (all). Paged (default 50, max 1000) and filterable by date. NOTE: Moosend rate-limits this endpoint to 2 calls per 60 seconds per API key. Moosend: GET /campaigns/{CampaignID}/stats/{Type}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "description": "Campaign ID (a GUID, from moosend_list_campaigns)."
    },
    "type": {
      "description": "Activity type. Default Sent.",
      "type": "string",
      "enum": [
        "Sent",
        "Opened",
        "LinkClicked",
        "Unsubscribed",
        "Bounced",
        "Complained",
        "Activity"
      ]
    },
    "page": {
      "description": "Page number, starting at 1. Default 1.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Results per page, 1-1000.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "from": {
      "description": "Start date, DD-MM-YYYY. Default: the send date.",
      "type": "string",
      "pattern": "^\\d{2}-\\d{2}-\\d{4}$"
    },
    "to": {
      "description": "End date, DD-MM-YYYY. Default: today.",
      "type": "string",
      "pattern": "^\\d{2}-\\d{2}-\\d{4}$"
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_campaign_link_activity(campaign_id)

List every link in a campaign with its total and unique click counts. Moosend: GET /campaigns/{CampaignID}/stats/links.json.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "description": "Campaign ID (a GUID, from moosend_list_campaigns)."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_get_campaign_activity_by_location(campaign_id)

A campaign's total and unique opens broken down by country code. Moosend: GET /campaigns/{CampaignID}/stats/countries.json.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "description": "Campaign ID (a GUID, from moosend_list_campaigns)."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢moosend_list_senders

List the account's campaign senders (name, email, enabled, SPF/DKIM verification). A draft campaign's sender and reply-to must be one of these. Moosend: GET /senders/find_all.json.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴moosend_create_mailing_list(name, confirmation_page, redirect_after_unsubscribe_page, preferences)

WRITE: create a new, empty mailing list. Returns the new list's ID. Moosend: POST /lists/create.json.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "List name."
    },
    "confirmation_page": {
      "description": "URL shown at the end of the subscription process.",
      "type": "string"
    },
    "redirect_after_unsubscribe_page": {
      "description": "URL subscribers are redirected to after unsubscribing.",
      "type": "string"
    },
    "preferences": {
      "description": "Optional preference field for the list. Omit for none.",
      "type": "object",
      "properties": {
        "select_type": {
          "type": "string",
          "enum": [
            "SingleSelect",
            "MultiSelect"
          ],
          "description": "Single- or multi-select."
        },
        "options": {
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Up to 10 preference options."
        },
        "is_required": {
          "description": "Whether a choice is required. Default false.",
          "type": "boolean"
        }
      },
      "required": [
        "select_type",
        "options"
      ]
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴moosend_add_subscriber(mailing_list_id, email, name, has_external_double_opt_in, custom_fields, ...)

WRITE: add one subscriber to a mailing list. If the email already exists in the list, that subscriber is UPDATED instead (and custom fields you omit are cleared). A previously unsubscribed address is re-subscribed. Rate limit 10 calls / 10 s. Moosend: POST /subscribers/{MailingListID}/subscribe.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Subscriber email address."
    },
    "name": {
      "description": "Subscriber name.",
      "type": "string"
    },
    "has_external_double_opt_in": {
      "description": "True if the subscriber already gave consent by other means.",
      "type": "boolean"
    },
    "custom_fields": {
      "description": "Custom field values by field name, e.g. {\"City\":\"Athens\",\"Age\":25}. Sent to Moosend as \"Name=Value\" pairs. WARNING: on an existing subscriber, any custom field NOT included is cleared — include every field you want to keep.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": [
          "string",
          "number",
          "boolean"
        ]
      }
    },
    "tags": {
      "description": "Subscriber tags.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "preferences": {
      "description": "Preference option values chosen by the subscriber (must match the list's preference options).",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "mailing_list_id",
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴moosend_update_subscriber(mailing_list_id, subscriber_id, email, name, has_external_double_opt_in, ...)

WRITE: update one subscriber (by ID) in a mailing list — email, name, custom fields, tags, preferences. Include every custom field you want to keep. Moosend: POST /subscribers/{MailingListID}/update/{SubscriberID}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "subscriber_id": {
      "type": "string",
      "minLength": 1,
      "description": "Subscriber ID (a GUID)."
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "The subscriber's email address (required by Moosend)."
    },
    "name": {
      "description": "Subscriber name.",
      "type": "string"
    },
    "has_external_double_opt_in": {
      "description": "True if the subscriber already gave consent by other means.",
      "type": "boolean"
    },
    "custom_fields": {
      "description": "Custom field values by field name, e.g. {\"City\":\"Athens\",\"Age\":25}. Sent to Moosend as \"Name=Value\" pairs. WARNING: on an existing subscriber, any custom field NOT included is cleared — include every field you want to keep.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": [
          "string",
          "number",
          "boolean"
        ]
      }
    },
    "tags": {
      "description": "Subscriber tags.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "preferences": {
      "description": "Preference option values chosen by the subscriber (must match the list's preference options).",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "mailing_list_id",
    "subscriber_id",
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴moosend_unsubscribe_subscriber(mailing_list_id, email)

WRITE: unsubscribe one email address from one mailing list (not account-wide). Undo by adding the subscriber again with moosend_add_subscriber. Moosend: POST /subscribers/{MailingListID}/unsubscribe.json.

Input Schema

{
  "type": "object",
  "properties": {
    "mailing_list_id": {
      "type": "string",
      "minLength": 1,
      "description": "Mailing list ID (a GUID, from moosend_list_mailing_lists)."
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Email address to unsubscribe."
    }
  },
  "required": [
    "mailing_list_id",
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴moosend_create_draft_campaign(name, subject, sender_email, reply_to_email, confirmation_to_email, ...)

WRITE: create a regular (non-A/B) DRAFT campaign. It is NOT sent — sending stays a human action in Moosend. Give the content as html_content or a web_location URL. sender_email and reply_to_email must be senders in the account (see moosend_list_senders). Returns the new campaign's ID. Moosend: POST /campaigns/create.json.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Campaign name."
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "description": "Subject line."
    },
    "sender_email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Sender email — must be one of the account's senders."
    },
    "reply_to_email": {
      "description": "Reply-to email — must be one of the account's senders. Default: sender_email.",
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "confirmation_to_email": {
      "description": "Where to send the 'campaign sent' confirmation. Default: sender_email.",
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "html_content": {
      "description": "Complete HTML body of the campaign.",
      "type": "string"
    },
    "web_location": {
      "description": "URL Moosend fetches the HTML from (CSS is inlined automatically).",
      "type": "string",
      "format": "uri"
    },
    "mailing_lists": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "mailing_list_id": {
            "type": "string",
            "minLength": 1,
            "description": "Mailing list ID."
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "string",
                "pattern": "^\\d+$"
              }
            ],
            "description": "Segment ID (an integer, from moosend_list_segments)."
          }
        },
        "required": [
          "mailing_list_id"
        ]
      },
      "description": "Target lists, each optionally narrowed to one segment."
    },
    "track_in_google_analytics": {
      "description": "Enable Google Analytics tracking (requires GA on your site).",
      "type": "boolean"
    }
  },
  "required": [
    "name",
    "subject",
    "sender_email",
    "mailing_lists"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools
verifiedversion not recorded20 tools