EmailOctopus MCP server. Manage lists, contacts and campaigns, and read campaign performance reports on EmailOctopus.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"emailoctopus": {
"url": "https://emailoctopus.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
emailoctopus_list_lists | read | List lists 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. |
emailoctopus_get_list | read | Get list 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}. |
emailoctopus_list_contacts | read | List contacts 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. |
emailoctopus_get_contact | read | Get contact 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}. |
emailoctopus_list_campaigns | read | List campaigns 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. |
emailoctopus_get_campaign | read | Get campaign 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}. |
emailoctopus_get_campaign_report | read | Get campaign report Get a campaign's aggregate performance report — sent, opened, clicked, bounced, unsubscribed, complained, and related counts. EmailOctopus: GET /campaigns/{campaign_id}/reports/summary. |
emailoctopus_get_campaign_links_report | read | Get campaign links report 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. |
emailoctopus_create_list | write | Create list CREATES a new list — this MODIFIES live data. Provide a `name`. EmailOctopus: POST /lists. Returns the created list. |
emailoctopus_update_list | write | Update list UPDATES an existing list by id — this MODIFIES live data. Sets the list's `name`. EmailOctopus: PUT /lists/{list_id}. Returns the updated list. |
emailoctopus_create_contact | write | Create contact 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. |
emailoctopus_update_contact | write | Update contact 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. |
emailoctopus_delete_contact | write | Delete contact 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}. |
emailoctopus_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter. | |
emailoctopus_upgrade | Upgrade to Pro (unlimited) Subscribe to the Pro plan for UNLIMITED EmailOctopus tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Proper user | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.