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.
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
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.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
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.Add this to your client's mcpServers config.
{
"mcpServers": {
"emailchef-by-usefulapi": {
"type": "http",
"url": "https://emailchef.usefulapi.io/mcp"
}
}
}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
https://emailchef.usefulapi.io/mcp.claude mcp add --transport http emailchef https://emailchef.usefulapi.io/mcp, then run /mcp to log in.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.
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.
*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].
MIT — see LICENSE. Documentation only; the server is hosted.
Source: servers/emailchef/README.md at commit 4046075
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.
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.
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.
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.
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.
limitorderoffsetorder_byGet list
One contact list: name, description, default sender, creation date. GET /lists/{list_id}.
list_idrequiredGet 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.
list_idrequiredend_datestart_dateGet list contact counts
How many contacts a list has by state: active, unsubscribed, bounced, reported. GET /lists/{list_id}/stats/count.
list_idrequiredCreate list
WRITE: create a new, empty contact list. Returns the new list id. POST /lists.
namerequireddescriptionUpdate list
WRITE: rename a contact list and/or change its description. Only the fields you pass change. PUT /lists/{list_id}.
namelist_idrequireddescriptionList contacts
List the contacts of one list (id, email, name, added by, subscription date), optionally by state. GET /contacts?list_id=...
limitorderoffsetstatuslist_idrequiredorder_byGet 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=...
list_idrequiredcontact_idrequiredAdd 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.
emailrequiredstatuslist_idrequiredlast_namefirst_namecustom_fieldsUpdate 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}.
statuslist_idrequiredlast_namecontact_idrequiredfirst_namecustom_fieldsUnsubscribe contact
WRITE: unsubscribe one contact from one list (it stops receiving that list's email). POST /lists/{list_id}/unsubscribe?contact_id=...
list_idrequiredcontact_idrequiredImport 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.
list_idrequiredcontactsrequiredList import tasks
List contact import tasks: list, status (DISPATCHED, COMPLETE, FAILED), progress, imported/updated/failed counts. GET /importtasks.
Takes no parameters.
Get import task
One import task: status, progress, imported/updated/failed counts and any error message. GET /importtasks/{task_id}.
task_idrequiredList predefined fields
The built-in contact fields (email, first name, ...) with their placeholders. GET /predefinedfields.
Takes no parameters.
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.
list_idrequiredList segments
List the saved segments of a list with how many contacts match each. GET /lists/{list_id}/segments.
limitoffsetlist_idrequiredGet segment
One segment with its logic and condition groups. GET /lists/{list_id}/segments/{segment_id}.
list_idrequiredsegment_idrequiredList blocked emails
List the account's blocklist (emails that never receive email): address and reason (MANUAL, UNSUBSCRIBED, COMPLAINT). GET /blockings.
limitoffsetsearchBlock 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.
emailsrequiredUnblock 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}.
emailrequiredGet campaign counts
How many campaigns the account has by state: drafts, sent, scheduled, archived, failed. GET /campaigns/count.
Takes no parameters.
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.
limitorderoffsetsearchstatusorder_byGet 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}.
campaign_idrequiredGet campaign links
The links contained in a campaign (id, name, URL). GET /newsletters/{id}/links.
campaign_idrequiredList 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.
eventrequiredlimitoffsetsearchcampaign_idrequiredCreate 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.
namerequiredsubjectrequiredlist_idsrequiredhtml_bodysender_idrequiredtext_bodysegment_idreply_to_idClone 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.
campaign_idrequiredUpdate 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}.
namesubjectlist_idshtml_bodysender_idtext_bodysegment_idcampaign_idrequiredreply_to_idSend 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.
emailrequiredcampaign_idrequiredSchedule 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.
campaign_idrequiredtimezone_idrequiredscheduled_timerequiredUnschedule campaign
WRITE: cancel the schedule of a SCHEDULED campaign and bring it back to DRAFT. PUT /campaigns/{id}/unschedule.
campaign_idrequiredSend 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.
confirmrequiredcampaign_idrequiredArchive campaign
WRITE: archive a campaign (hidden from the default list; statistics are kept). Reversible with emailchef_unarchive_campaign. PUT /campaigns/{id}/archivecampaign.
campaign_idrequiredRestore archived campaign
WRITE: restore an archived campaign. PUT /campaigns/{id}/unarchivecampaign.
campaign_idrequiredSend 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.
confirmrequiredsubjectrequiredto_namereply_toto_emailrequiredhtml_bodysender_idrequiredtext_bodyGet SMS balance
The account's SMS credit balance and currency. GET /sms/balance.
Takes no parameters.
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}.
message_idrequiredSend 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.
torequiredfromtextrequiredconfirmrequired100% 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.
io.usefulapiOfficial publisher
Ably MCP by usefulapi's hosted MCP server, published by usefulapi.io; no sign-in required; Streamable HTTP; 15 tools.
io.usefulapiOfficial publisher
Hosted read-only MCP server that lets an assistant look up Woffu company users, employment contracts, departments and offices.
io.usefulapiOfficial publisher
Hosted MCP server for White Label Loyalty: browse rewards, read a customer's points wallet and tier progress, and buy rewards with points.
io.usefulapiOfficial publisher
Hosted Weekdone connector that lets an assistant read weekly reports, teams, objectives and KPIs, and add report items, comments and KPI values.
io.usefulapiOfficial publisher
Hosted read-only MCP server that lets an assistant list WebinarKit webinars, their dates, series, meetings and white-label sub-accounts.
{ "mcpServers": { "emailchef": { "url": "https://emailchef.usefulapi.io/mcp" } }}