Emailchef MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.5.4Updated Nov 7, 2026

Read lists, contacts, campaign stats; add contacts; draft, schedule and send campaigns and SMS.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableCommunication & CollaborationBusiness & Commerce

Overview

AI-generated overview

Hosted Emailchef MCP server that lets an assistant read contact lists and campaign stats and draft, schedule and send email campaigns, single emails and SMS.

What you can do
  • Inspect the account, plan, senders, timezones and usage status
  • List, create and rename contact lists, and view list growth and contact counts
  • List, add, update, import and unsubscribe contacts, and manage the account blocklist
  • Read campaigns, links and per-contact engagement, and create, clone, update, archive or restore drafts
  • Schedule, unschedule, test and send campaigns, and send single emails or SMS
When to use it
Useful when you want an assistant to work inside an existing Emailchef account: answering questions about lists, contacts and campaign performance, adding or importing contacts, and preparing or launching email and SMS sends.
Requirements
Remote endpoint reached over streamable HTTP; no local install. Sign-in uses OAuth, and the login page asks for the Consumer Key and Consumer Secret of an Emailchef API key, which only the account Owner can create. No API key or Authorization header goes in the client config. Free tier allows 50 tool calls per month; paid plans are billed separately.
Before you install
Many tools write data, and sending a campaign or single email is immediate and cannot be undone, uses plan sends, and can reach non-contacts. Adding or reactivating a contact makes them receive campaigns, so only do so with consent. The server stores your Emailchef API key credentials per user, and upgrade tools return payment links for paid plans.

Installation

In SourceWeft

  1. Open Emailchef MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Femailchef/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "emailchef-by-usefulapi": {
      "type": "http",
      "url": "https://emailchef.usefulapi.io/mcp"
    }
  }
}

README

Emailchef MCP by usefulapi

Use your Emailchef account from Claude, Cursor, or any MCP client. Read lists, contacts, campaigns and their opens and clicks, and add contacts, draft, schedule and send campaigns, emails and SMS. Hosted, no local install: connect with your own credentials.

Live endpoint: https://emailchef.usefulapi.io/mcp · Homepage: https://usefulapi.io

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://emailchef.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http emailchef https://emailchef.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "emailchef": {      "url": "https://emailchef.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your Emailchef credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/emailchef/

On first connect you provide the Consumer Key and Consumer Secret of an Emailchef API key (Emailchef → Settings → API Keys → Create API Key; only the account Owner can). The server validates them and stores them per user. No keys go in config files.

Tools

ToolTypeWhat it does
emailchef_get_accountreadGet account
emailchef_get_subscriptionreadGet subscription
emailchef_list_sendersreadList senders
emailchef_list_timezonesreadList timezones
emailchef_list_listsreadList contact lists
emailchef_get_listreadGet list
emailchef_get_list_statsreadGet list growth stats
emailchef_get_list_contact_countsreadGet list contact counts
emailchef_create_listwriteCreate list
emailchef_update_listwriteUpdate list
emailchef_list_contactsreadList contacts
emailchef_get_contactreadGet contact
emailchef_create_contactwriteAdd contact to a list
emailchef_update_contactwriteUpdate contact
emailchef_unsubscribe_contactwriteUnsubscribe contact
emailchef_import_contactswriteImport contacts
emailchef_list_import_tasksreadList import tasks
emailchef_get_import_taskreadGet import task
emailchef_list_predefined_fieldsreadList predefined fields
emailchef_list_custom_fieldsreadList custom fields
emailchef_list_segmentsreadList segments
emailchef_get_segmentreadGet segment
emailchef_list_blockedreadList blocked emails
emailchef_block_emailswriteBlock emails
emailchef_unblock_emailwriteUnblock email
emailchef_get_campaign_countsreadGet campaign counts
emailchef_list_campaignsreadList campaigns
emailchef_get_campaignreadGet campaign
emailchef_get_campaign_linksreadGet campaign links
emailchef_list_campaign_engagementreadList campaign engagement
emailchef_create_campaignwriteCreate campaign (draft)
emailchef_clone_campaignwriteClone campaign
emailchef_update_campaignwriteUpdate draft campaign
emailchef_send_test_campaignwriteSend campaign test email
emailchef_schedule_campaignwriteSchedule campaign
emailchef_unschedule_campaignwriteUnschedule campaign
emailchef_send_campaignwriteSend campaign now
emailchef_archive_campaignwriteArchive campaign
emailchef_unarchive_campaignwriteRestore archived campaign
emailchef_send_emailwriteSend one email
emailchef_get_sms_balancereadGet SMS balance
emailchef_get_sms_statusreadGet SMS status
emailchef_send_smswriteSend SMS
emailchef_usage_statusmetaUsage status (free-tier meter)
emailchef_request_featuremetaRequest a missing feature
emailchef_upgrademetaUpgrade to Pro or Pro+
emailchef_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per user)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with emailchef_upgrade (it returns a Stripe Checkout link). Cancel any time with emailchef_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running emailchef_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT — see LICENSE. Documentation only; the server is hosted.

Source: servers/emailchef/README.md at commit 4046075

Tools

43

emailchef_get_account

Get account

The Emailchef account this API key belongs to: id, email, language, status, subscriber total, bounces and complaints. GET /accounts/current.

Takes no parameters.

emailchef_get_subscription

Get subscription

The account's current Emailchef plan: plan name, plan expiry, contact and send limits, credits left, active/expired flags. Check this before a big send. GET /subscriptions/current.

Takes no parameters.

emailchef_list_senders

List senders

List the sender identities (name, email, verification status, postal address). Campaigns and emails need a verified sender id. GET /senders.

Takes no parameters.

emailchef_list_timezones

List timezones

List Emailchef's timezones (id, name, fixed UTC offset). The id is required to schedule a campaign. GET /meta/timezones.

Takes no parameters.

emailchef_list_lists

List contact lists

List the contact lists with id, name, and counts of active, unsubscribed and bounced contacts and segments. Newest first by default. GET /lists.

Parameterslimitorderoffsetorder_by

emailchef_get_list

Get list

One contact list: name, description, default sender, creation date. GET /lists/{list_id}.

Parameterslist_idrequired

emailchef_get_list_stats

Get list growth stats

Daily growth of a list over a date range: total contacts per day and the daily delta. Omit the dates for the whole history. GET /lists/{list_id}/stats.

Parameterslist_idrequiredend_datestart_date

emailchef_get_list_contact_counts

Get list contact counts

How many contacts a list has by state: active, unsubscribed, bounced, reported. GET /lists/{list_id}/stats/count.

Parameterslist_idrequired

emailchef_create_list

Create list

WRITE: create a new, empty contact list. Returns the new list id. POST /lists.

Parametersnamerequireddescription

emailchef_update_list

Update list

WRITE: rename a contact list and/or change its description. Only the fields you pass change. PUT /lists/{list_id}.

Parametersnamelist_idrequireddescription

emailchef_list_contacts

List contacts

List the contacts of one list (id, email, name, added by, subscription date), optionally by state. GET /contacts?list_id=...

Parameterslimitorderoffsetstatuslist_idrequiredorder_by

emailchef_get_contact

Get contact

One contact in one list: status, email, name, IP, how it was added, when, and its custom field values. GET /contacts/{contact_id}?list_id=...

Parameterslist_idrequiredcontact_idrequired

emailchef_create_contact

Add contact to a list

WRITE: add a contact (email, name, custom fields) to a list. Only add people who agreed to receive email: an ACTIVE contact will receive the account's campaigns and automations. Returns the contact id and status. POST /contacts.

Parametersemailrequiredstatuslist_idrequiredlast_namefirst_namecustom_fields

emailchef_update_contact

Update contact

WRITE: change a contact's name, state or custom fields in one list. Only the fields you pass change. Setting the status to ACTIVE re-subscribes someone: only do so with their consent. PUT /contacts/{contact_id}.

Parametersstatuslist_idrequiredlast_namecontact_idrequiredfirst_namecustom_fields

emailchef_unsubscribe_contact

Unsubscribe contact

WRITE: unsubscribe one contact from one list (it stops receiving that list's email). POST /lists/{list_id}/unsubscribe?contact_id=...

Parameterslist_idrequiredcontact_idrequired

emailchef_import_contacts

Import contacts

WRITE: bulk-add or update up to 500 contacts in a list in one call (an existing email is updated). Each contact is an object keyed by field placeholder, e.g. {"email":"[email protected]","firstname":"Ada"}: get the placeholders from emailchef_list_predefined_fields and emailchef_list_custom_fields. Import only people who agreed to receive email. Runs in the background: poll emailchef_get_import_task with the returned id. POST /lists/{list_id}/import.

Parameterslist_idrequiredcontactsrequired

emailchef_list_import_tasks

List import tasks

List contact import tasks: list, status (DISPATCHED, COMPLETE, FAILED), progress, imported/updated/failed counts. GET /importtasks.

Takes no parameters.

emailchef_get_import_task

Get import task

One import task: status, progress, imported/updated/failed counts and any error message. GET /importtasks/{task_id}.

Parameterstask_idrequired

emailchef_list_predefined_fields

List predefined fields

The built-in contact fields (email, first name, ...) with their placeholders. GET /predefinedfields.

Takes no parameters.

emailchef_list_custom_fields

List custom fields

The custom contact fields of a list: name, data type, placeholder (the key used when writing contacts), options. GET /lists/{list_id}/customfields.

Parameterslist_idrequired

emailchef_list_segments

List segments

List the saved segments of a list with how many contacts match each. GET /lists/{list_id}/segments.

Parameterslimitoffsetlist_idrequired

emailchef_get_segment

Get segment

One segment with its logic and condition groups. GET /lists/{list_id}/segments/{segment_id}.

Parameterslist_idrequiredsegment_idrequired

emailchef_list_blocked

List blocked emails

List the account's blocklist (emails that never receive email): address and reason (MANUAL, UNSUBSCRIBED, COMPLAINT). GET /blockings.

Parameterslimitoffsetsearch

emailchef_block_emails

Block emails

WRITE: add up to 100 addresses to the account blocklist so they never receive email from any list. Reversible with emailchef_unblock_email. POST /blockings?type=MANUAL.

Parametersemailsrequired

emailchef_unblock_email

Unblock email

WRITE: remove one address from the account blocklist so it can receive email again. Only do this for an address whose owner asked for it. DELETE /blockings/{email}.

Parametersemailrequired

emailchef_get_campaign_counts

Get campaign counts

How many campaigns the account has by state: drafts, sent, scheduled, archived, failed. GET /campaigns/count.

Takes no parameters.

emailchef_list_campaigns

List campaigns

List email campaigns with state, recipients, delivered, unique opens and unique clicks. Without a status filter Emailchef returns only SENT and ARCHIVED campaigns; pass a status to see DRAFT, SCHEDULED, SENDING or FAILED ones. GET /campaigns.

Parameterslimitorderoffsetsearchstatusorder_by

emailchef_get_campaign

Get campaign

One campaign: name, subject, HTML and text body, sender, reply-to, state, schedule, recipient lists/segments and cached sent/open/click counts. GET /campaigns/{id}.

Parameterscampaign_idrequired

emailchef_list_campaign_engagement

List campaign engagement

Per-contact engagement for a sent campaign: who opened, clicked, was delivered, did not open, unsubscribed, complained, or was sent to, with counts and first/last event time. Pick exactly one event. GET /newsletters/{id}/contacts.

Parameterseventrequiredlimitoffsetsearchcampaign_idrequired

emailchef_create_campaign

Create campaign (draft)

WRITE: create a new campaign as a DRAFT (nothing is sent). Needs a verified sender (emailchef_list_senders) and at least one list. To be sendable the HTML body must contain the CAN-SPAM placeholders [[account:business]], [[account:address_1]], [[account:city]], [[account:postal_code]], [[account:country]] and an unsubscribe link <a href="[[unsubscribe_link]]">, otherwise the send ends FAILED. Schedule or send it afterwards. POST /newsletters.

Parametersnamerequiredsubjectrequiredlist_idsrequiredhtml_bodysender_idrequiredtext_bodysegment_idreply_to_id

emailchef_clone_campaign

Clone campaign

WRITE: copy an existing campaign into a new DRAFT (nothing is sent). A SENT campaign cannot be cloned (Emailchef answers HTTP 500). Returns the new campaign id. POST /newsletters?clone=1.

Parameterscampaign_idrequired

emailchef_update_campaign

Update draft campaign

WRITE: change a DRAFT campaign's name, subject, body, sender, reply-to or recipient lists. Only the fields you pass change: the tool reads the campaign first and sends the complete record back, because Emailchef blanks any omitted field. Refuses a campaign that is not a DRAFT. PUT /newsletters/{id}.

Parametersnamesubjectlist_idshtml_bodysender_idtext_bodysegment_idcampaign_idrequiredreply_to_id

emailchef_send_test_campaign

Send campaign test email

WRITE: email ONE test copy of a campaign to a single address. The campaign state does not change. The sender must be verified. PUT /campaigns/{id}/sendtest.

Parametersemailrequiredcampaign_idrequired

emailchef_schedule_campaign

Schedule campaign

WRITE, SENDS EMAIL TO CUSTOMERS LATER: schedule a DRAFT campaign to go out to all its recipients at a date and time. Emailchef timezones are fixed offsets without daylight saving: pick the id (emailchef_list_timezones) whose offset matches the send date. Undo before it starts with emailchef_unschedule_campaign. PUT /campaigns/{id}/schedule.

Parameterscampaign_idrequiredtimezone_idrequiredscheduled_timerequired

emailchef_unschedule_campaign

Unschedule campaign

WRITE: cancel the schedule of a SCHEDULED campaign and bring it back to DRAFT. PUT /campaigns/{id}/unschedule.

Parameterscampaign_idrequired

emailchef_send_campaign

Send campaign now

WRITE, SENDS EMAIL TO CUSTOMERS NOW AND CANNOT BE UNDONE: start sending a DRAFT (or FAILED) campaign immediately to ALL its recipients and use up plan sends. Check the recipients (emailchef_get_campaign), the sender and the subscription first, ideally after emailchef_send_test_campaign, and send only with the user's explicit go-ahead (confirm must be true). Queued asynchronously: poll emailchef_get_campaign for the final state. PUT /campaigns/{id}/send.

Parametersconfirmrequiredcampaign_idrequired

emailchef_archive_campaign

Archive campaign

WRITE: archive a campaign (hidden from the default list; statistics are kept). Reversible with emailchef_unarchive_campaign. PUT /campaigns/{id}/archivecampaign.

Parameterscampaign_idrequired

emailchef_unarchive_campaign

Restore archived campaign

WRITE: restore an archived campaign. PUT /campaigns/{id}/unarchivecampaign.

Parameterscampaign_idrequired

emailchef_send_email

Send one email

WRITE, SENDS AN EMAIL NOW AND CANNOT BE UNDONE: send a single email to one recipient from a verified sender and use up plan sends. Pass text_body and/or html_body. The recipient does not need to be a contact. Send only with the user's explicit go-ahead (confirm must be true). POST /sendmail.

Parametersconfirmrequiredsubjectrequiredto_namereply_toto_emailrequiredhtml_bodysender_idrequiredtext_body

emailchef_get_sms_balance

Get SMS balance

The account's SMS credit balance and currency. GET /sms/balance.

Takes no parameters.

emailchef_get_sms_status

Get SMS status

Delivery status of one sent SMS by message id: recipient, text, sent/done time, parts, price, state and error. GET /sms/status/{messageId}.

Parametersmessage_idrequired

emailchef_send_sms

Send SMS

WRITE, SENDS TEXT MESSAGES NOW, COSTS SMS CREDIT AND CANNOT BE UNDONE: send an SMS to 1-50 phone numbers in international format (e.g. +393331234567). Check emailchef_get_sms_balance first and send only with the user's explicit go-ahead (confirm must be true). Returns a message id per recipient and the remaining balance. POST /sms/send.

Parameterstorequiredfromtextrequiredconfirmrequired

Version history

7
  1. v1.5.4LatestNov 7, 2026
  2. v1.4.3Nov 5, 2026
  3. v1.4.2Nov 5, 2026
  4. v1.4.1Nov 4, 2026
  5. v1.4.0Nov 3, 2026
  6. v1.3.1Nov 3, 2026
  7. v1.2.0Nov 1, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations