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
Campaigns
Groups
Webhooks
Automations
Forms
Segments
Response format
Every tool call returns a JSON-RPC result with acontent array:
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
Alllist_* tools support these parameters:
| Parameter | Type | Default | Max |
|---|---|---|---|
page | integer | 1 | — |
per_page | integer | 25 | 100 |
meta block:
Subscribers
9 tools · Required permission:subscribers:read or subscribers:write
add_subscriber
add_subscriber
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.| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | ✅ | Subscriber email address |
first_name | string | — | First name |
last_name | string | — | Last name |
status | string | — | active, unsubscribed, or unconfirmed |
groups | string[] | — | Array of group UUIDs to add subscriber to |
custom_fields | object | — | Key-value pairs for custom fields |
get_subscriber
get_subscriber
subscribers:readGet full details about a subscriber by their UUID or email.| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber_id | string | — | Subscriber UUID |
email | string | — | Subscriber email |
subscriber_id or email must be provided.update_subscriber
update_subscriber
subscribers:writeUpdate an existing subscriber’s fields. Only provided fields are changed — others are untouched.| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber_id | string | ✅ | Subscriber UUID |
email | string | — | New email address |
first_name | string | — | First name |
last_name | string | — | Last name |
status | string | — | active, unsubscribed, or unconfirmed |
custom_fields | object | — | Fields to update (merged, not replaced) |
list_subscribers
list_subscribers
subscribers:readList subscribers with optional filtering. Returns paginated results.| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | — | active, unsubscribed, bounced, junk, unconfirmed |
search | string | — | Search by email or name |
group_id | string | — | Filter by group UUID |
page | integer | — | Page number (default: 1) |
per_page | integer | — | Per page (default: 25, max: 100) |
get_subscriber_activity
get_subscriber_activity
subscribers:readGet the activity history for a subscriber: email opens, clicks, sends, unsubscribes, and more.| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber_id | string | ✅ | Subscriber UUID |
page | integer | — | Page number |
per_page | integer | — | Per page |
get_subscriber_count
get_subscriber_count
subscribers:readGet the total count of subscribers, optionally filtered by status.| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | — | active, unsubscribed, bounced, junk, unconfirmed |
delete_subscriber
delete_subscriber
subscribers:writeDelete a subscriber. Historical activity data (opens, clicks) is retained. The subscriber can re-subscribe later.| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber_id | string | ✅ | Subscriber UUID |
forget_subscriber
forget_subscriber
subscribers:write| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber_id | string | ✅ | Subscriber UUID |
get_single_import
get_single_import
subscribers:readGet the status and details of a subscriber import job created via import_subscribers_to_group.| Parameter | Type | Required | Description |
|---|---|---|---|
import_id | string | ✅ | Import job ID |
Campaigns
8 tools · Required permission:campaigns:read or campaigns:write
create_campaign
create_campaign
campaigns:writeCreate a new email campaign in draft status.| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Campaign name (internal) |
subject | string | ✅ | Email subject line |
from_name | string | — | Sender display name |
from_email | string | — | Sender email address |
type | string | — | regular (default), ab, or resend |
content_html | string | — | Full HTML body |
groups | string[] | — | Group UUIDs to send to |
segments | string[] | — | Segment UUIDs to send to |
get_campaign
get_campaign
campaigns:readGet full details about a campaign including delivery stats.| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | ✅ | Campaign UUID |
list_campaigns
list_campaigns
campaigns:readList campaigns with optional filtering.| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | — | draft, scheduled, sending, sent, cancelled |
type | string | — | regular, ab, resend |
page | integer | — | Page number |
per_page | integer | — | Per page |
update_campaign
update_campaign
campaigns:writeUpdate a campaign’s details. Only draft campaigns can be updated.| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | ✅ | Campaign UUID |
name | string | — | Campaign name |
subject | string | — | Subject line |
from_name | string | — | Sender name |
from_email | string | — | Sender email |
content_html | string | — | HTML content |
delete_campaign
delete_campaign
campaigns:writeDelete a campaign. Only draft or cancelled campaigns can be deleted.| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | ✅ | Campaign UUID |
schedule_campaign
schedule_campaign
campaigns:writeSchedule a draft campaign to send at a specific future time.| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | ✅ | Campaign UUID |
scheduled_at | string | ✅ | ISO 8601 datetime — e.g. 2026-12-25T09:00:00Z |
cancel_campaign
cancel_campaign
campaigns:writeCancel a scheduled campaign, returning it to draft status.| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | ✅ | Campaign UUID |
get_campaign_subscribers
get_campaign_subscribers
campaigns:readGet the list of subscribers who received a specific campaign.| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | ✅ | Campaign UUID |
page | integer | — | Page number |
per_page | integer | — | Per page |
Groups
8 tools · Required permission:groups:read or groups:write
list_groups
list_groups
groups:readList all subscriber groups.| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | — | Page number |
per_page | integer | — | Per page |
create_group
create_group
groups:writeCreate a new subscriber group.| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Group name |
update_group
update_group
groups:writeRename a subscriber group.| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | ✅ | Group UUID |
name | string | ✅ | New name |
delete_group
delete_group
groups:writeDelete a group. Subscribers in the group are not deleted — only their group membership is removed.| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | ✅ | Group UUID |
get_group_subscribers
get_group_subscribers
groups:readGet all subscribers in a group.| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | ✅ | Group UUID |
page | integer | — | Page number |
per_page | integer | — | Per page |
assign_subscriber_to_group
assign_subscriber_to_group
subscribers:writeAdd a subscriber to a group.| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber_id | string | ✅ | Subscriber UUID |
group_id | string | ✅ | Group UUID |
unassign_subscriber_from_group
unassign_subscriber_from_group
subscribers:writeRemove a subscriber from a group. The subscriber record is not deleted.| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber_id | string | ✅ | Subscriber UUID |
group_id | string | ✅ | Group UUID |
import_subscribers_to_group
import_subscribers_to_group
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.| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | ✅ | Group UUID |
subscribers | array | ✅ | Array of subscriber objects (see below) |
Webhooks
5 tools · Required permission:webhooks:read or webhooks:write
list_webhooks
list_webhooks
webhooks:readList all configured webhook endpoints.| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | — | Page number |
per_page | integer | — | Per page |
get_webhook
get_webhook
webhooks:readGet details of a specific webhook.| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✅ | Webhook UUID |
create_webhook
create_webhook
webhooks:writeCreate a new webhook endpoint. MailGreet will POST to the provided URL when selected events occur.| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | ✅ | Endpoint URL to receive POST requests |
name | string | — | Friendly name |
events | string[] | — | Array of event types to subscribe to |
all_events | boolean | — | Subscribe to all events (overrides events array) |
email.delivery.sent·email.delivery.opened·email.delivery.clickedemail.delivery.bounced·email.delivery.complained·email.delivery.unsubscribedapi_email.sent·api_email.delivered·api_email.opened·api_email.clickedapi_email.bounced·api_email.failed
update_webhook
update_webhook
webhooks:writeUpdate a webhook’s URL, events, or enabled status.| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✅ | Webhook UUID |
name | string | — | Webhook name |
url | string | — | New URL |
events | string[] | — | New events list |
is_active | boolean | — | true to enable, false to disable |
delete_webhook
delete_webhook
webhooks:writeDelete a webhook endpoint permanently.| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✅ | Webhook UUID |
Automations
5 tools · Required permission:automations:read or automations:write
list_automations
list_automations
automations:readList all automations.| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | — | active, draft, disabled |
enabled | boolean | — | Filter by enabled state |
search | string | — | Search by name |
page | integer | — | Page number |
per_page | integer | — | Per page |
get_automation
get_automation
automations:readGet details about an automation including its trigger configuration and workflow steps.| Parameter | Type | Required | Description |
|---|---|---|---|
automation_id | string | ✅ | Automation UUID |
get_automation_activity
get_automation_activity
automations:readGet subscriber activity within an automation — who entered, who completed, who is currently active.| Parameter | Type | Required | Description |
|---|---|---|---|
automation_id | string | ✅ | Automation UUID |
status | string | — | active, completed, cancelled, failed |
page | integer | — | Page number |
per_page | integer | — | Per page |
create_automation
create_automation
automations:writeCreate a new automation in draft status.| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Automation name |
trigger_type | string | — | Trigger type (see below) |
trigger_config | object | — | Trigger configuration object |
description | string | — | Optional description |
subscriber_joins_group · completes_form · joins_segment · clicks_link · updates_field · event_anniversary · exact_date · api_calleddelete_automation
delete_automation
automations:writeDelete an automation and all related steps, triggers, and subscriber history.| Parameter | Type | Required | Description |
|---|---|---|---|
automation_id | string | ✅ | Automation UUID |
Forms
5 tools · Required permission:forms:read or forms:write
list_forms
list_forms
forms:readList all signup forms.| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | — | popup, embedded, or promotion |
page | integer | — | Page number |
per_page | integer | — | Per page |
get_form
get_form
forms:readGet detailed information about a specific form.| Parameter | Type | Required | Description |
|---|---|---|---|
form_id | string | ✅ | Form UUID |
update_form
update_form
forms:writeUpdate a form’s name.| Parameter | Type | Required | Description |
|---|---|---|---|
form_id | string | ✅ | Form UUID |
name | string | ✅ | New form name |
delete_form
delete_form
forms:writeDelete a form permanently.| Parameter | Type | Required | Description |
|---|---|---|---|
form_id | string | ✅ | Form UUID |
get_form_subscribers
get_form_subscribers
forms:readGet the list of subscribers who signed up through a specific form.| Parameter | Type | Required | Description |
|---|---|---|---|
form_id | string | ✅ | Form UUID |
page | integer | — | Page number |
per_page | integer | — | Per page |
Segments
4 tools · Required permission:subscribers:read or subscribers:write
segments:* scope) because segments are a filtered view over subscriber data.list_segments
list_segments
subscribers:readList all subscriber segments with their subscriber counts.| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | — | Page number |
per_page | integer | — | Per page |
get_subscribers_in_segment
get_subscribers_in_segment
subscribers:readGet subscribers matching a segment’s filter criteria.| Parameter | Type | Required | Description |
|---|---|---|---|
segment_id | string | ✅ | Segment UUID |
status | string | — | active, unsubscribed, bounced, junk |
page | integer | — | Page number |
per_page | integer | — | Per page |
update_segment
update_segment
subscribers:writeRename a segment.| Parameter | Type | Required | Description |
|---|---|---|---|
segment_id | string | ✅ | Segment UUID |
name | string | ✅ | New segment name |
delete_segment
delete_segment
subscribers:writeDelete a segment. Subscribers are not affected.| Parameter | Type | Required | Description |
|---|---|---|---|
segment_id | string | ✅ | Segment UUID |
All tools at a glance
| Tool | Category | Required Permission |
|---|---|---|
add_subscriber | Subscribers | subscribers:write |
get_subscriber | Subscribers | subscribers:read |
update_subscriber | Subscribers | subscribers:write |
list_subscribers | Subscribers | subscribers:read |
get_subscriber_activity | Subscribers | subscribers:read |
get_subscriber_count | Subscribers | subscribers:read |
delete_subscriber | Subscribers | subscribers:write |
forget_subscriber | Subscribers | subscribers:write |
get_single_import | Subscribers | subscribers:read |
create_campaign | Campaigns | campaigns:write |
get_campaign | Campaigns | campaigns:read |
list_campaigns | Campaigns | campaigns:read |
update_campaign | Campaigns | campaigns:write |
delete_campaign | Campaigns | campaigns:write |
schedule_campaign | Campaigns | campaigns:write |
cancel_campaign | Campaigns | campaigns:write |
get_campaign_subscribers | Campaigns | campaigns:read |
list_groups | Groups | groups:read |
create_group | Groups | groups:write |
update_group | Groups | groups:write |
delete_group | Groups | groups:write |
get_group_subscribers | Groups | groups:read |
assign_subscriber_to_group | Groups | subscribers:write |
unassign_subscriber_from_group | Groups | subscribers:write |
import_subscribers_to_group | Groups | subscribers:write |
list_webhooks | Webhooks | webhooks:read |
get_webhook | Webhooks | webhooks:read |
create_webhook | Webhooks | webhooks:write |
update_webhook | Webhooks | webhooks:write |
delete_webhook | Webhooks | webhooks:write |
list_automations | Automations | automations:read |
get_automation | Automations | automations:read |
get_automation_activity | Automations | automations:read |
create_automation | Automations | automations:write |
delete_automation | Automations | automations:write |
list_forms | Forms | forms:read |
get_form | Forms | forms:read |
update_form | Forms | forms:write |
delete_form | Forms | forms:write |
get_form_subscribers | Forms | forms:read |
list_segments | Segments | subscribers:read |
get_subscribers_in_segment | Segments | subscribers:read |
update_segment | Segments | subscribers:write |
delete_segment | Segments | subscribers:write |

