Enginemailer MCP by usefulapi

Read Enginemailer subscribers, lists and campaigns; add subscribers, create and send campaigns.

Sollte ich dies verwenden

Qualität und Sicherheit

B
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
85%
Qualität der Benennung
67%
Risiko der Vergiftung
0%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (27)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_get_subscriber
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_list_subscriber_categories
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_list_custom_fields
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_add_subscriber
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_update_subscriber
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_unsubscribe_subscriber
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_save_subscriber_category
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_list_campaigns
  • MEDIUMTool description contains suspicious base64-like encoded stringin enginemailer_get_campaign_stats

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,604Tokens (Tool-Definitionen)
~1.7 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.60% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

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

Remote-Endpunkte

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

Was es kann

Tool-Inventar

Tools (17)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢enginemailer_get_subscriber(email)

One subscriber by email: id, status and all custom field values. GET /restapi/subscriber/emsubscriber/getSubscriber.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 128,
      "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": "An email address (max 128 characters)."
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enginemailer_list_subscriber_categories(include_active_subscriber_count)

The subscriber category tree: each category with its subcategories (ids, names). Use the subcategory ids when adding or updating subscribers and when assigning campaign recipients. GET /restapi/subscriber/emsubscriber/getSubCategory.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "include_active_subscriber_count": {
      "description": "Also return active subscriber counts (only for accounts the vendor has enabled this for).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enginemailer_list_custom_fields

The subscriber custom field definitions (key, name, type). Use the keys when adding or updating subscribers. GET /restapi/subscriber/emsubscriber/getCustomField.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡enginemailer_add_subscriber(email, subcategory_ids, custom_fields, source_type)

WRITE: add a subscriber to the account (optionally into subcategories, with custom field values). Only add people who consented to marketing email. Free accounts may insert 50 subscribers a day, paid accounts 10,000. POST /restapi/subscriber/emsubscriber/insertSubscriber.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 128,
      "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": "An email address (max 128 characters)."
    },
    "subcategory_ids": {
      "description": "Subcategory (list/segment) ids from enginemailer_list_subscriber_categories.",
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Custom field key from enginemailer_list_custom_fields (customfield_key)."
          },
          "value": {
            "type": "string",
            "maxLength": 512,
            "description": "The value. Dates 'dd MMM yyyy', phones '+<country><number>', checkbox values separated by '|'."
          }
        },
        "required": [
          "key",
          "value"
        ]
      }
    },
    "source_type": {
      "description": "Where the subscriber came from, e.g. 'Signup from website' (max 256).",
      "type": "string",
      "maxLength": 256
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enginemailer_update_subscriber(email, subcategory_ids, subcategories_mode, custom_fields, custom_fields_mode)

WRITE: change an existing subscriber's subcategories and/or custom fields. subcategories_mode: append (default), remove (drop the given subcategories) or replace (the given list becomes the full list). custom_fields_mode: update_given (change only the given fields) or replace_all (default; fields not given are cleared). POST /restapi/subscriber/emsubscriber/updateSubscriber.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 128,
      "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": "An email address (max 128 characters)."
    },
    "subcategory_ids": {
      "description": "Subcategory (list/segment) ids from enginemailer_list_subscriber_categories.",
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "subcategories_mode": {
      "description": "How subcategory_ids apply (default append).",
      "type": "string",
      "enum": [
        "append",
        "remove",
        "replace"
      ]
    },
    "custom_fields": {
      "description": "Custom field values to set.",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Custom field key from enginemailer_list_custom_fields (customfield_key)."
          },
          "value": {
            "type": "string",
            "maxLength": 512,
            "description": "The value. Dates 'dd MMM yyyy', phones '+<country><number>', checkbox values separated by '|'."
          }
        },
        "required": [
          "key",
          "value"
        ]
      }
    },
    "custom_fields_mode": {
      "description": "update_given changes only the listed fields; replace_all (the vendor default) clears the others.",
      "type": "string",
      "enum": [
        "update_given",
        "replace_all"
      ]
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enginemailer_unsubscribe_subscriber(email)

WRITE: unsubscribe a subscriber so they no longer receive campaigns. Reversing it needs the subscriber to opt in again in Enginemailer. GET /restapi/subscriber/emsubscriber/unSubSubscriber.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 128,
      "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": "An email address (max 128 characters)."
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enginemailer_save_subscriber_category(category_id, name, description, is_visible, subcategories)

WRITE: create a subscriber category (category_id 0) or update one (its id), with subcategories (subcategory_id 0 creates one). Names and descriptions max 128 characters. POST /restapi/subscriber/emsubscriber/updateCategory.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "0 to create a new category, else the existing category id."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "description": {
      "type": "string",
      "maxLength": 128
    },
    "is_visible": {
      "description": "Visible to subscribers (default true).",
      "type": "boolean"
    },
    "subcategories": {
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "subcategory_id": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "0 to create, else the existing subcategory id."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "description": {
            "type": "string",
            "maxLength": 128
          }
        },
        "required": [
          "subcategory_id",
          "name"
        ]
      }
    }
  },
  "required": [
    "category_id",
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enginemailer_list_campaigns

List campaigns that have NOT been delivered yet (drafts and scheduled ones): id, name, subject, sender and schedule. Delivered campaigns are not listed by the API; use enginemailer_get_campaign_stats with a known id. Needs a paid account. GET /restapi/campaign/emcampaign/ListCampaign.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enginemailer_get_campaign_stats(campaign_id)

Delivery results of a DELIVERED campaign: emails sent, delivered, bounces, opens, unique opens, clicks, unique clicks, unsubscribes, spam complaints. Needs a paid account. GET /restapi/campaign/emcampaign/getcampaigndeliverystatus.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Campaign id."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enginemailer_list_campaign_categories

The categories that campaign recipients can be filtered by (id, name, description). Needs a paid account. GET /restapi/campaign/emcampaign/GetCategoryList.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enginemailer_list_campaign_subcategories(category_id)

The subcategories of one campaign category (id, name, description); use these ids in enginemailer_assign_campaign_recipients. Needs a paid account. GET /restapi/campaign/emcampaign/GetSubCategoryList.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Category id from enginemailer_list_campaign_categories."
    }
  },
  "required": [
    "category_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡enginemailer_create_campaign(name, sender_name, sender_email, reply_to, subject, ...)

WRITE: create a campaign DRAFT. Nothing is sent: assign recipients with enginemailer_assign_campaign_recipients, then send with enginemailer_send_campaign. The sender domain must be verified in Enginemailer; max 200 campaigns per account. Needs a paid account. POST /restapi/Campaign/EMCampaign/CreateCampaign.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Internal campaign name."
    },
    "sender_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "sender_email": {
      "type": "string",
      "maxLength": 128,
      "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 address on a verified domain."
    },
    "reply_to": {
      "type": "string",
      "maxLength": 128,
      "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": "An email address (max 128 characters)."
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    },
    "content_html": {
      "type": "string",
      "minLength": 1,
      "maxLength": 262144,
      "description": "The email body, HTML (max 256 KB)."
    }
  },
  "required": [
    "name",
    "sender_name",
    "sender_email",
    "subject",
    "content_html"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enginemailer_assign_campaign_recipients(campaign_id, audience, subcategory_ids, match_type)

WRITE: set who a campaign will go to: all subscribers, or the subscribers in the given subcategory ids (match_type any = OR, all = AND). Does not send anything. Needs a paid account. POST /restapi/campaign/emcampaign/AssignRecipientList.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Campaign id."
    },
    "audience": {
      "type": "string",
      "enum": [
        "all_subscribers",
        "subcategories"
      ]
    },
    "subcategory_ids": {
      "description": "Required when audience is subcategories.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "match_type": {
      "description": "any = subscribers in at least one subcategory (OR, default); all = in every one (AND).",
      "type": "string",
      "enum": [
        "any",
        "all"
      ]
    }
  },
  "required": [
    "campaign_id",
    "audience"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enginemailer_send_campaign(campaign_id, confirm)

WRITE, SENDS EMAIL TO CUSTOMERS NOW and cannot be undone: delivers the campaign to its assigned recipients immediately. The campaign needs at least one recipient and must not be scheduled or already delivered. Show the user the campaign and its audience and get their go-ahead first; set confirm to true only then. Needs a paid account. GET /restapi/campaign/emcampaign/SendCampaign.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Campaign id."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true: the user has approved sending this campaign to its recipients now."
    }
  },
  "required": [
    "campaign_id",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enginemailer_send_transactional_email(to_email, sender_email, sender_name, subject, content_html, ...)

WRITE, SENDS ONE EMAIL NOW and cannot be undone: submits a transactional email to one recipient (plus optional CC/BCC). Needs a sender address on a verified domain; give either subject + content_html, or a template_id from the Enginemailer portal (the template supplies subject and sender name). Total message incl. attachments max 5 MB. Confirm the recipient and text with the user first; set confirm to true only then. POST /RESTAPI/V2/Submission/SendEmail.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "to_email": {
      "type": "string",
      "maxLength": 128,
      "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": "An email address (max 128 characters)."
    },
    "sender_email": {
      "type": "string",
      "maxLength": 128,
      "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 address on a verified domain (must match the template's sender when template_id is used)."
    },
    "sender_name": {
      "type": "string",
      "maxLength": 128
    },
    "subject": {
      "type": "string",
      "maxLength": 256
    },
    "content_html": {
      "description": "Email body (HTML). Not needed with template_id.",
      "type": "string",
      "maxLength": 1048576
    },
    "template_id": {
      "description": "Stored template id from the Enginemailer portal.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "campaign_name": {
      "description": "Label for reports.",
      "type": "string",
      "maxLength": 128
    },
    "substitution_tags": {
      "description": "Merge tags. Values must not contain { } [ ].",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "value": {
            "type": "string",
            "maxLength": 2000
          }
        },
        "required": [
          "key",
          "value"
        ]
      }
    },
    "cc": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 128,
        "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": "An email address (max 128 characters)."
      }
    },
    "bcc": {
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 128,
        "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": "An email address (max 128 characters)."
      }
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true: the user has approved sending this email now."
    }
  },
  "required": [
    "to_email",
    "sender_email",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡enginemailer_start_transactional_report_export(period, email_to_filter, domain_filter)

Start a CSV export of the transactional email delivery report for a period (start date at most 60 days back). Returns an export id; poll it with enginemailer_check_transactional_report_export. Creates a report file only; nothing is sent. POST /RESTAPI/V2/Submission/Report/Export.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "period": {
      "type": "string",
      "pattern": "^\\d{1,2} [A-Za-z]{3} \\d{4} - \\d{1,2} [A-Za-z]{3} \\d{4}$",
      "description": "Date range exactly like '1 Sep 2026 - 16 Sep 2026'."
    },
    "email_to_filter": {
      "description": "Only emails sent to this recipient.",
      "type": "string",
      "maxLength": 128,
      "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,}$"
    },
    "domain_filter": {
      "description": "Domain filter, sent as the vendor's DomainFilter (the sender domain in the vendor's report), e.g. example.com.",
      "type": "string",
      "maxLength": 255
    }
  },
  "required": [
    "period"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enginemailer_check_transactional_report_export(export_id)

Status of a report export (Processing or Complete); when complete it includes the CSV download URL. POST /RESTAPI/V2/Submission/Report/CheckExport (read-only).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "export_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "ExportID from enginemailer_start_transactional_report_export."
    }
  },
  "required": [
    "export_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet17 Tools