Skip to main content

Overview

The MailGreet MCP server exposes 44 tools across 7 categories. Your API key controls which tools are available — tools/list only returns tools the key has permission to call.

Subscribers

9 tools

Campaigns

8 tools

Groups

8 tools

Webhooks

5 tools

Automations

5 tools

Forms

5 tools

Segments

4 tools

Response format

Every tool call returns a JSON-RPC result with a content array:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"success\": true, \"data\": {...}, \"meta\": {...}}"
      }
    ]
  }
}
The text field contains a JSON-encoded string with the actual data. On error, isError: true is added to the result and text contains {"error": "...", "message": "..."}.

Pagination

All list_* tools support these parameters:
ParameterTypeDefaultMax
pageinteger1
per_pageinteger25100
Paginated responses include a meta block:
{
  "meta": {
    "current_page": 1,
    "last_page": 4,
    "total": 87
  }
}

Subscribers

9 tools · Required permission: subscribers:read or subscribers:write
Permission: subscribers:writeAdd a new subscriber or update an existing one by email (upsert). If the email already exists, the record is updated with the provided fields — existing custom fields not mentioned are kept.
ParameterTypeRequiredDescription
emailstringSubscriber email address
first_namestringFirst name
last_namestringLast name
statusstringactive, unsubscribed, or unconfirmed
groupsstring[]Array of group UUIDs to add subscriber to
custom_fieldsobjectKey-value pairs for custom fields
Example:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add_subscriber",
    "arguments": {
      "email": "alice@example.com",
      "first_name": "Alice",
      "last_name": "Smith",
      "status": "active",
      "groups": ["a753d1f1-2cae-44b6-9ca1-7ce4380bc43f"],
      "custom_fields": { "company": "Acme Corp", "plan": "pro" }
    }
  }
}
Success response:
{
  "success": true,
  "data": {
    "id": "b812e3a4-...",
    "email": "alice@example.com",
    "first_name": "Alice",
    "last_name": "Smith",
    "status": "active",
    "created_at": "2026-03-21T10:00:00Z"
  }
}
Permission: subscribers:readGet full details about a subscriber by their UUID or email.
ParameterTypeRequiredDescription
subscriber_idstringSubscriber UUID
emailstringSubscriber email
One of subscriber_id or email must be provided.
Permission: subscribers:writeUpdate an existing subscriber’s fields. Only provided fields are changed — others are untouched.
ParameterTypeRequiredDescription
subscriber_idstringSubscriber UUID
emailstringNew email address
first_namestringFirst name
last_namestringLast name
statusstringactive, unsubscribed, or unconfirmed
custom_fieldsobjectFields to update (merged, not replaced)
Permission: subscribers:readList subscribers with optional filtering. Returns paginated results.
ParameterTypeRequiredDescription
statusstringactive, unsubscribed, bounced, junk, unconfirmed
searchstringSearch by email or name
group_idstringFilter by group UUID
pageintegerPage number (default: 1)
per_pageintegerPer page (default: 25, max: 100)
Permission: subscribers:readGet the activity history for a subscriber: email opens, clicks, sends, unsubscribes, and more.
ParameterTypeRequiredDescription
subscriber_idstringSubscriber UUID
pageintegerPage number
per_pageintegerPer page
Permission: subscribers:readGet the total count of subscribers, optionally filtered by status.
ParameterTypeRequiredDescription
statusstringactive, unsubscribed, bounced, junk, unconfirmed
Success response:
{
  "success": true,
  "data": {
    "total": 22,
    "status": "all"
  }
}
Permission: subscribers:writeDelete a subscriber. Historical activity data (opens, clicks) is retained. The subscriber can re-subscribe later.
ParameterTypeRequiredDescription
subscriber_idstringSubscriber UUID
Permission: subscribers:write
GDPR right-to-erasure tool. Completely removes a subscriber and all associated data including activity history, custom fields, and group memberships. This action is irreversible.
ParameterTypeRequiredDescription
subscriber_idstringSubscriber UUID
Permission: subscribers:readGet the status and details of a subscriber import job created via import_subscribers_to_group.
ParameterTypeRequiredDescription
import_idstringImport job ID

Campaigns

8 tools · Required permission: campaigns:read or campaigns:write
Permission: campaigns:writeCreate a new email campaign in draft status.
ParameterTypeRequiredDescription
namestringCampaign name (internal)
subjectstringEmail subject line
from_namestringSender display name
from_emailstringSender email address
typestringregular (default), ab, or resend
content_htmlstringFull HTML body
groupsstring[]Group UUIDs to send to
segmentsstring[]Segment UUIDs to send to
Permission: campaigns:readGet full details about a campaign including delivery stats.
ParameterTypeRequiredDescription
campaign_idstringCampaign UUID
Permission: campaigns:readList campaigns with optional filtering.
ParameterTypeRequiredDescription
statusstringdraft, scheduled, sending, sent, cancelled
typestringregular, ab, resend
pageintegerPage number
per_pageintegerPer page
Permission: campaigns:writeUpdate a campaign’s details. Only draft campaigns can be updated.
ParameterTypeRequiredDescription
campaign_idstringCampaign UUID
namestringCampaign name
subjectstringSubject line
from_namestringSender name
from_emailstringSender email
content_htmlstringHTML content
Permission: campaigns:writeDelete a campaign. Only draft or cancelled campaigns can be deleted.
ParameterTypeRequiredDescription
campaign_idstringCampaign UUID
Permission: campaigns:writeSchedule a draft campaign to send at a specific future time.
ParameterTypeRequiredDescription
campaign_idstringCampaign UUID
scheduled_atstringISO 8601 datetime — e.g. 2026-12-25T09:00:00Z
Permission: campaigns:writeCancel a scheduled campaign, returning it to draft status.
ParameterTypeRequiredDescription
campaign_idstringCampaign UUID
Permission: campaigns:readGet the list of subscribers who received a specific campaign.
ParameterTypeRequiredDescription
campaign_idstringCampaign UUID
pageintegerPage number
per_pageintegerPer page

Groups

8 tools · Required permission: groups:read or groups:write
Permission: groups:readList all subscriber groups.
ParameterTypeRequiredDescription
pageintegerPage number
per_pageintegerPer page
Permission: groups:writeCreate a new subscriber group.
ParameterTypeRequiredDescription
namestringGroup name
Success response:
{
  "success": true,
  "data": {
    "id": "a753d1f1-2cae-44b6-9ca1-7ce4380bc43f",
    "name": "VIP Customers",
    "subscribers_count": 0,
    "created_at": "2026-03-21T10:00:00Z"
  }
}
Permission: groups:writeRename a subscriber group.
ParameterTypeRequiredDescription
group_idstringGroup UUID
namestringNew name
Permission: groups:writeDelete a group. Subscribers in the group are not deleted — only their group membership is removed.
ParameterTypeRequiredDescription
group_idstringGroup UUID
Permission: groups:readGet all subscribers in a group.
ParameterTypeRequiredDescription
group_idstringGroup UUID
pageintegerPage number
per_pageintegerPer page
Permission: subscribers:writeAdd a subscriber to a group.
ParameterTypeRequiredDescription
subscriber_idstringSubscriber UUID
group_idstringGroup UUID
Permission: subscribers:writeRemove a subscriber from a group. The subscriber record is not deleted.
ParameterTypeRequiredDescription
subscriber_idstringSubscriber UUID
group_idstringGroup UUID
Permission: subscribers:writeBulk upsert up to 1,000 subscribers into a group per call. Creates new subscribers if the email doesn’t exist, or updates existing ones.
ParameterTypeRequiredDescription
group_idstringGroup UUID
subscribersarrayArray of subscriber objects (see below)
Each subscriber object in the array:
{
  "email": "bob@example.com",
  "first_name": "Bob",
  "last_name": "Jones",
  "custom_fields": { "plan": "starter" }
}

Webhooks

5 tools · Required permission: webhooks:read or webhooks:write
Permission: webhooks:readList all configured webhook endpoints.
ParameterTypeRequiredDescription
pageintegerPage number
per_pageintegerPer page
Permission: webhooks:readGet details of a specific webhook.
ParameterTypeRequiredDescription
webhook_idstringWebhook UUID
Permission: webhooks:writeCreate a new webhook endpoint. MailGreet will POST to the provided URL when selected events occur.
ParameterTypeRequiredDescription
urlstringEndpoint URL to receive POST requests
namestringFriendly name
eventsstring[]Array of event types to subscribe to
all_eventsbooleanSubscribe to all events (overrides events array)
Available event types:
  • email.delivery.sent · email.delivery.opened · email.delivery.clicked
  • email.delivery.bounced · email.delivery.complained · email.delivery.unsubscribed
  • api_email.sent · api_email.delivered · api_email.opened · api_email.clicked
  • api_email.bounced · api_email.failed
Permission: webhooks:writeUpdate a webhook’s URL, events, or enabled status.
ParameterTypeRequiredDescription
webhook_idstringWebhook UUID
namestringWebhook name
urlstringNew URL
eventsstring[]New events list
is_activebooleantrue to enable, false to disable
Permission: webhooks:writeDelete a webhook endpoint permanently.
ParameterTypeRequiredDescription
webhook_idstringWebhook UUID

Automations

5 tools · Required permission: automations:read or automations:write
Permission: automations:readList all automations.
ParameterTypeRequiredDescription
statusstringactive, draft, disabled
enabledbooleanFilter by enabled state
searchstringSearch by name
pageintegerPage number
per_pageintegerPer page
Permission: automations:readGet details about an automation including its trigger configuration and workflow steps.
ParameterTypeRequiredDescription
automation_idstringAutomation UUID
Permission: automations:readGet subscriber activity within an automation — who entered, who completed, who is currently active.
ParameterTypeRequiredDescription
automation_idstringAutomation UUID
statusstringactive, completed, cancelled, failed
pageintegerPage number
per_pageintegerPer page
Permission: automations:writeCreate a new automation in draft status.
ParameterTypeRequiredDescription
namestringAutomation name
trigger_typestringTrigger type (see below)
trigger_configobjectTrigger configuration object
descriptionstringOptional description
Available trigger types: subscriber_joins_group · completes_form · joins_segment · clicks_link · updates_field · event_anniversary · exact_date · api_called
Permission: automations:writeDelete an automation and all related steps, triggers, and subscriber history.
ParameterTypeRequiredDescription
automation_idstringAutomation UUID

Forms

5 tools · Required permission: forms:read or forms:write
Permission: forms:readList all signup forms.
ParameterTypeRequiredDescription
typestringpopup, embedded, or promotion
pageintegerPage number
per_pageintegerPer page
Permission: forms:readGet detailed information about a specific form.
ParameterTypeRequiredDescription
form_idstringForm UUID
Permission: forms:writeUpdate a form’s name.
ParameterTypeRequiredDescription
form_idstringForm UUID
namestringNew form name
Permission: forms:writeDelete a form permanently.
ParameterTypeRequiredDescription
form_idstringForm UUID
Permission: forms:readGet the list of subscribers who signed up through a specific form.
ParameterTypeRequiredDescription
form_idstringForm UUID
pageintegerPage number
per_pageintegerPer page

Segments

4 tools · Required permission: subscribers:read or subscribers:write
Segments use subscriber scopes (not a dedicated segments:* scope) because segments are a filtered view over subscriber data.
Permission: subscribers:readList all subscriber segments with their subscriber counts.
ParameterTypeRequiredDescription
pageintegerPage number
per_pageintegerPer page
Permission: subscribers:readGet subscribers matching a segment’s filter criteria.
ParameterTypeRequiredDescription
segment_idstringSegment UUID
statusstringactive, unsubscribed, bounced, junk
pageintegerPage number
per_pageintegerPer page
Permission: subscribers:writeRename a segment.
ParameterTypeRequiredDescription
segment_idstringSegment UUID
namestringNew segment name
Permission: subscribers:writeDelete a segment. Subscribers are not affected.
ParameterTypeRequiredDescription
segment_idstringSegment UUID

All tools at a glance

ToolCategoryRequired Permission
add_subscriberSubscriberssubscribers:write
get_subscriberSubscriberssubscribers:read
update_subscriberSubscriberssubscribers:write
list_subscribersSubscriberssubscribers:read
get_subscriber_activitySubscriberssubscribers:read
get_subscriber_countSubscriberssubscribers:read
delete_subscriberSubscriberssubscribers:write
forget_subscriberSubscriberssubscribers:write
get_single_importSubscriberssubscribers:read
create_campaignCampaignscampaigns:write
get_campaignCampaignscampaigns:read
list_campaignsCampaignscampaigns:read
update_campaignCampaignscampaigns:write
delete_campaignCampaignscampaigns:write
schedule_campaignCampaignscampaigns:write
cancel_campaignCampaignscampaigns:write
get_campaign_subscribersCampaignscampaigns:read
list_groupsGroupsgroups:read
create_groupGroupsgroups:write
update_groupGroupsgroups:write
delete_groupGroupsgroups:write
get_group_subscribersGroupsgroups:read
assign_subscriber_to_groupGroupssubscribers:write
unassign_subscriber_from_groupGroupssubscribers:write
import_subscribers_to_groupGroupssubscribers:write
list_webhooksWebhookswebhooks:read
get_webhookWebhookswebhooks:read
create_webhookWebhookswebhooks:write
update_webhookWebhookswebhooks:write
delete_webhookWebhookswebhooks:write
list_automationsAutomationsautomations:read
get_automationAutomationsautomations:read
get_automation_activityAutomationsautomations:read
create_automationAutomationsautomations:write
delete_automationAutomationsautomations:write
list_formsFormsforms:read
get_formFormsforms:read
update_formFormsforms:write
delete_formFormsforms:write
get_form_subscribersFormsforms:read
list_segmentsSegmentssubscribers:read
get_subscribers_in_segmentSegmentssubscribers:read
update_segmentSegmentssubscribers:write
delete_segmentSegmentssubscribers:write