EmailOctopus MCP by usefulapi
Server Details
Manage lists, contacts and campaigns, and read campaign performance reports on EmailOctopus.
- Status
- Healthy
- Uptime
- 83.8% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 13 tools
Each tool targets a distinct resource-action combination (create/get/update/delete/list for lists and contacts; get/list/report for campaigns). The campaign report tools are clearly differentiated by their descriptions (summary vs. per-link).
All tools follow the consistent pattern `emailoctopus_<verb>_<noun>`, with plural nouns for list operations (list_campaigns, list_contacts, list_lists). No mixed conventions or surprising verbs.
13 tools is well within the ideal range for an email marketing API server. Each tool maps to a meaningful endpoint or report, and the count feels proportionate to the domain.
Contacts and lists have solid CRUD coverage (create/get/update/list/delete for contacts; create/get/update/list for lists). Campaigns, however, are read-only: no create/update/delete or send operation, and there is no delete_list. These are notable gaps for a full email marketing workflow.
Available Tools
13 toolsemailoctopus_create_contactCreate contactDestructiveInspect
CREATES a new contact in a list — this MODIFIES live data (adds a subscriber). email_address is required; optionally set fields (keyed by field tag), tags, and status. EmailOctopus: POST /lists/{list_id}/contacts. Returns the created contact.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags to apply to the contact, e.g. ["vip", "beta"]. | |
| fields | No | Custom field values, keyed by the list's field tag (e.g. {"FirstName": "Ada"}). | |
| status | No | Subscription status: subscribed, pending, or unsubscribed. | |
| list_id | Yes | The list's id to add the contact to. | |
| email_address | Yes | The contact's email address. |
emailoctopus_create_listCreate listDestructiveInspect
CREATES a new list — this MODIFIES live data. Provide a name. EmailOctopus: POST /lists. Returns the created list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name for the new list. |
emailoctopus_delete_contactDelete contactDestructiveInspect
PERMANENTLY REMOVES a contact from a list — this MODIFIES live data and cannot be undone. contact_id is the MD5 hash of the lowercased email address, or the id from list_contacts. EmailOctopus: DELETE /lists/{list_id}/contacts/{contact_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | The list's id. | |
| contact_id | Yes | The contact's id to delete — the MD5 hash of the lowercased email address, or the id from list_contacts. |
emailoctopus_get_campaignGet campaignRead-onlyInspect
Get a single campaign by its id. Returns the campaign's full state — name, status, subject, from, content, and created_at. EmailOctopus: GET /campaigns/{campaign_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign's id. |
emailoctopus_get_campaign_links_reportGet campaign links reportRead-onlyInspect
Get a campaign's per-link click report — for each link in the campaign, the URL and its click counts. EmailOctopus: GET /campaigns/{campaign_id}/reports/links.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign's id. |
emailoctopus_get_campaign_reportGet campaign reportRead-onlyInspect
Get a campaign's aggregate performance report — sent, opened, clicked, bounced, unsubscribed, complained, and related counts. EmailOctopus: GET /campaigns/{campaign_id}/reports/summary.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign's id. |
emailoctopus_get_contactGet contactRead-onlyInspect
Get a single contact in a list. Returns email_address, fields, tags, status, and created_at. contact_id is the MD5 hash of the lowercased email address, or the id returned by emailoctopus_list_contacts. EmailOctopus: GET /lists/{list_id}/contacts/{contact_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | The list's id. | |
| contact_id | Yes | The contact's id — the MD5 hash of the lowercased email address, or the id from list_contacts. |
emailoctopus_get_listGet listRead-onlyInspect
Get a single list by its id. Returns the list's full state — name, contact counts by status, and created_at. EmailOctopus: GET /lists/{list_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | The list's id. |
emailoctopus_list_campaignsList campaignsRead-onlyInspect
List all campaigns in the account. Returns {data:[...],paging:{...}} — each campaign's id, name, status, subject, and created_at. Paginate with limit (max 100) and starting_after. EmailOctopus: GET /campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max campaigns to return (1..100). | |
| starting_after | No | Pagination cursor — the id to start after (from the previous page's paging). |
emailoctopus_list_contactsList contactsRead-onlyInspect
List the contacts in a list. Returns {data:[...],paging:{...}} — each contact's id, email_address, fields, tags, status, and created_at. Paginate with limit (max 100) and starting_after. EmailOctopus: GET /lists/{list_id}/contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max contacts to return (1..100). | |
| list_id | Yes | The list's id. | |
| starting_after | No | Pagination cursor — the id to start after (from the previous page's paging). |
emailoctopus_list_listsList listsRead-onlyInspect
List all lists in the account. Returns {data:[...],paging:{...}} — each list's id, name, contact counts by status, and created_at. Paginate with limit (max 100) and starting_after (cursor from the previous page). EmailOctopus: GET /lists.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max lists to return (1..100). | |
| starting_after | No | Pagination cursor — the id to start after (from the previous page's paging). |
emailoctopus_update_contactUpdate contactDestructiveInspect
UPDATES an existing contact in a list — this MODIFIES live data. Send only the fields you want to change (email_address, fields, tags, status). contact_id is the MD5 hash of the lowercased email address, or the id from list_contacts. EmailOctopus: PUT /lists/{list_id}/contacts/{contact_id}. Returns the updated contact.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags to apply to the contact, e.g. ["vip", "beta"]. | |
| fields | No | Custom field values, keyed by the list's field tag (e.g. {"FirstName": "Ada"}). | |
| status | No | Subscription status: subscribed, pending, or unsubscribed. | |
| list_id | Yes | The list's id. | |
| contact_id | Yes | The contact's id — the MD5 hash of the lowercased email address, or the id from list_contacts. | |
| email_address | No | The contact's email address. |
emailoctopus_update_listUpdate listDestructiveInspect
UPDATES an existing list by id — this MODIFIES live data. Sets the list's name. EmailOctopus: PUT /lists/{list_id}. Returns the updated list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new name for the list. | |
| list_id | Yes | The list's id to update. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
- Changed
emailoctopus_create_contact1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_create_list1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_delete_contact1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_get_campaign1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_get_campaign_links_report1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_get_campaign_report1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_get_contact1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_get_list1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_list_campaigns1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_list_contacts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_list_lists1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_update_contact1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
emailoctopus_update_list1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
13 tool updates
- First observed
emailoctopus_create_contact - First observed
emailoctopus_create_list - First observed
emailoctopus_delete_contact - First observed
emailoctopus_get_campaign - First observed
emailoctopus_get_campaign_links_report - First observed
emailoctopus_get_campaign_report - First observed
emailoctopus_get_contact - First observed
emailoctopus_get_list - First observed
emailoctopus_list_campaigns - First observed
emailoctopus_list_contacts - First observed
emailoctopus_list_lists - First observed
emailoctopus_update_contact - First observed
emailoctopus_update_list
Related MCP Connectors
Read audiences, members, campaigns and reports; add, update, tag and archive subscribers.
Send email and read templates, marketing contacts, lists, stats, bounces and unsubscribes.
Manage Benchmark Email lists and contacts, and read campaign reports: opens, clicks, bounces.
251Manage Sendlane lists, contacts, tags and custom fields; read campaign and SMS reports.
311
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage mailing lists and contacts, read campaign reports with per-link clicks, and trigger automations. Supports lookups and updates by email address, tag and status management, and destructive operations with client confirmation.MIT
- AlicenseBqualityFmaintenanceProvides an interface to manage email marketing, contact lists, dynamic templates, and email analytics via SendGrid's API.21898 npm32ISC
- FlicenseBqualityDmaintenanceEnables management of email campaigns, subscribers, lists, segments, journeys, templates, transactional email, and client/account settings through the Campaign Monitor API via natural language.1001-
- AlicenseNot gradedqualityDmaintenanceEnables sending and managing emails via Postmark, including email delivery with templates, template listing, and delivery statistics.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.