EmailOctopus MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Manage lists, contacts and campaigns, and read campaign performance reports on EmailOctopus.
13 tools: 5 can delete or cancel things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads8Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http emailoctopus https://emailoctopus.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
13 tools
Deletes or cancels 5Claude Code: deny
emailoctopus_create_contactCREATES a new contact in a list — this MODIFIES live data (adds a subscriber).No findings
Why it is in this group
- The name "emailoctopus_create_contact" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Create contact
- destructiveHint: true
emailoctopus_create_listCREATES a new list — this MODIFIES live data.No findings
Why it is in this group
- The name "emailoctopus_create_list" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it CREATES a new list — this MODIFIES live data. Provide a `name`. EmailOctopus: POST /lists. Returns the created list.
Annotations the server declares
- title: Create list
- destructiveHint: true
emailoctopus_delete_contactPERMANENTLY REMOVES a contact from a list — this MODIFIES live data and cannot be undone.No findings
Why it is in this group
- The name "emailoctopus_delete_contact" says "delete": a word for removing or ending something.
- The description says "PERMANENTLY REMOVES".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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}.
Annotations the server declares
- title: Delete contact
- destructiveHint: true
emailoctopus_update_contactUPDATES an existing contact in a list — this MODIFIES live data.No findings
Why it is in this group
- The name "emailoctopus_update_contact" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Update contact
- destructiveHint: true
emailoctopus_update_listUPDATES an existing list by id — this MODIFIES live data.No findings
Why it is in this group
- The name "emailoctopus_update_list" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it UPDATES an existing list by id — this MODIFIES live data. Sets the list's `name`. EmailOctopus: PUT /lists/{list_id}. Returns the updated list.
Annotations the server declares
- title: Update list
- destructiveHint: true
Only reads 8Claude Code: allow
emailoctopus_get_campaignGet a single campaign by its id.No findings
Why it is in this group
- The name "emailoctopus_get_campaign" says "get": a word for reading.
Description, as the server wrote it 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}.
Annotations the server declares
- title: Get campaign
- readOnlyHint: true
emailoctopus_get_campaign_links_reportGet a campaign's per-link click report — for each link in the campaign, the URL and its click counts.No findings
Why it is in this group
- The name "emailoctopus_get_campaign_links_report" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get campaign links report
- readOnlyHint: true
emailoctopus_get_campaign_reportGet a campaign's aggregate performance report — sent, opened, clicked, bounced, unsubscribed, complained, and related counts.No findings
Why it is in this group
- The name "emailoctopus_get_campaign_report" says "get": a word for reading.
Description, as the server wrote it Get a campaign's aggregate performance report — sent, opened, clicked, bounced, unsubscribed, complained, and related counts. EmailOctopus: GET /campaigns/{campaign_id}/reports/summary.
Annotations the server declares
- title: Get campaign report
- readOnlyHint: true
emailoctopus_get_contactGet a single contact in a list.No findings
Why it is in this group
- The name "emailoctopus_get_contact" says "get": a word for reading.
Description, as the server wrote it 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}.
Annotations the server declares
- title: Get contact
- readOnlyHint: true
emailoctopus_get_listGet a single list by its id.No findings
Why it is in this group
- The name "emailoctopus_get_list" says "get": a word for reading.
Description, as the server wrote it 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}.
Annotations the server declares
- title: Get list
- readOnlyHint: true
emailoctopus_list_campaignsList all campaigns in the account.No findings
Why it is in this group
- The name "emailoctopus_list_campaigns" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List campaigns
- readOnlyHint: true
emailoctopus_list_contactsList the contacts in a list.No findings
Why it is in this group
- The name "emailoctopus_list_contacts" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List contacts
- readOnlyHint: true
emailoctopus_list_listsList all lists in the account.No findings
Why it is in this group
- The name "emailoctopus_list_lists" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List lists
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http emailoctopus https://emailoctopus.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__emailoctopus__emailoctopus_list_lists",
"mcp__emailoctopus__emailoctopus_get_list",
"mcp__emailoctopus__emailoctopus_list_contacts",
"mcp__emailoctopus__emailoctopus_get_contact",
"mcp__emailoctopus__emailoctopus_list_campaigns",
"mcp__emailoctopus__emailoctopus_get_campaign",
"mcp__emailoctopus__emailoctopus_get_campaign_report",
"mcp__emailoctopus__emailoctopus_get_campaign_links_report"
],
"ask": [],
"deny": [
"mcp__emailoctopus__emailoctopus_create_list",
"mcp__emailoctopus__emailoctopus_update_list",
"mcp__emailoctopus__emailoctopus_create_contact",
"mcp__emailoctopus__emailoctopus_update_contact",
"mcp__emailoctopus__emailoctopus_delete_contact"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as emailoctopus. Review it before you use it.