Flexmail integration
Flexmail is a Belgian email marketing platform; its REST API covers contact management. Create, look up, update, replace and unsubscribe contacts, bulk-import contacts, subscribe contacts to interests (mailing topics) and manage those interests and their translations, send double opt-in confirmation mails through an opt-in form, read custom fields, sources, segments and contact languages, and manage webhooks. Sending campaigns and building messages are not part of this API (Flexmail serves them through separate SOAP services), the deprecated routes (preferences, interest labels, the old way to start an import) and the API info route are left out, and webhook verification tokens are not returned. Authentication is HTTP Basic with the Flexmail account ID as username and a personal access token (Settings > API > Personal access tokens) as password.
Say what should happen.
The workflow builds itself.
What you can do with Flexmail
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Contact, 5 operations
create_contactCreate contactPOSTCreates a contact. Email, language and the source the contact comes from (from list_sources) are required; first name, name and custom field values keyed by placeholder are optional. Returns the new contact id; an existing email answers 409.get_contactGet contactGETReturns one contact by its numeric id: email, first name, name, language and custom field values keyed by placeholder.list_contactsList contactsGETList (a slice of) the collection of all contacts. The collection can be filtered by an email address to find its corresponding contact, or by a single interest id to only return contacts actively subscribed to that interest.replace_contactReplace contactPUTCompletely replaces a contact's data instead of updating it partially: first_name, name and language are required, custom_fields optional. The email address is not changed.update_contactUpdate contactPATCHUpdates only the fields sent (first_name, name, language, custom_fields), at least one of them. The email address cannot be changed here.
Interest, 5 operations
create_interestCreate interestPOSTCreates an interest (a topic contacts subscribe to) with a unique internal name (no commas, at most 50 characters) and a visibility; label and description are the texts contacts see. Returns the new interest id.delete_interestDelete interestDELETEDeletion of an interest is rejected when contacts are subscribed to it, it is referenced by opt-in forms, or is used to segment contacts.get_interestGet interestGETFetch a single interest by its identifier.list_interestsList interestsGETList (a slice of) the collection of all available interests.update_interestUpdate interestPATCHUpdates an interest's name, visibility, label or description. Only the fields sent change; the others keep their current values.
Webhook, 5 operations
create_webhookCreate webhookPOSTSubscribes an HTTPS target URL to an event from list_webhook_events (at most 10 webhooks per event). Flexmail first POSTs to the URL, which must answer 200 or 204 echoing the Flexmail-Webhook-Token header, else creation fails (400).delete_webhookDelete webhookDELETEDeletes a webhook, which stops its deliveries. A disabled webhook is removed this way and recreated with create_webhook.get_webhookGet webhookGETReturns one webhook: its event name, target URL and whether it is still enabled (Flexmail disables a webhook after a 3xx answer or 10 failed delivery attempts).list_webhooksList webhooksGETLists the account's webhooks, each with its id, event name, target URL and whether it is still enabled.update_webhookUpdate webhookPATCHChanges the target URL of a webhook. Flexmail verifies the new URL as on creation: it must answer 200 or 204 echoing the Flexmail-Webhook-Token header.
Interest subscription, 3 operations
list_contact_interest_subscriptionsList contact interest subscriptionsGETLists the interests a contact is subscribed to, each with the interest's id, name and visibility.subscribe_contact_to_interestSubscribe contact to interestPOSTAdd a contact to an interest. If the contact itself has unsubscribed from this interest then this operation is refused with a `HTTP 403` response.unsubscribe_contact_from_interestUnsubscribe contact from interestDELETERemoves a contact from an interest (ends its subscription to that topic).
Source, 3 operations
get_sourceGet sourceGETReturns one contact source (a label for where contacts came from) by its numeric id: its id and name.list_contact_sourcesList contact sourcesGETLists the sources a contact is linked to (where the contact came from), each with its numeric id and name.list_sourcesList sourcesGETLists the account's contact sources (labels for where contacts came from), each with its numeric id and name. create_contact and bulk import records need a source id from here.
Import, 2 operations
create_contact_importCreate contact importPOSTCreates an empty bulk import of contacts under a new UUID you choose (id). Add records with add_contact_import_records, then start it with start_contact_import; existing contacts are updated and new ones created.get_contact_importGet contact importGETReturns a bulk import's status (idle, queued, processing, completed, rejected or failed) and, once it is completed, its report: contacts added, updated and ignored (blacklisted emails).
Opt in form, 2 operations
get_opt_in_formGet opt in formGETFetch the details of an opt-in form. The language of the form will be used as the communication language for the confirmation mail that is sent when an opt-in is submitted for this form.list_opt_in_formsList opt in formsGETList the collection of all of the account's active opt-in forms.
Translation, 2 operations
get_interest_translationsGet interest translationsGETFetch the label and description translations for an interest. Translations are keyed by the language codes of the account's configured contact languages.replace_interest_translationsReplace interest translationsPUTReplace all label and description translations for an interest. Translations are keyed by the language codes of the account's configured contact languages.
Account contact language, 1 operation
list_account_contact_languagesList account contact languagesGETFetch the configured contact languages for the account. These are the languages in which you will communicate with your contacts and they are configured during the onboarding of the account.
Custom field, 1 operation
list_custom_fieldsList custom fieldsGETList the collection of all available custom fields.
Opt in, 1 operation
submit_opt_inSubmit opt inPOSTInitiate the double opt-in process by submitting an optin for a specified email address. A confirmation mail containing instructions on how to confirm the opt-in will be sent to this address.
Record, 1 operation
add_contact_import_recordsAdd contact import recordsPOSTAdd records of contact data to a bulk import of contacts. After the necessary records are added, the bulk import can be started. We advise to keep the number of contact records in 1 request below 100.000 records.
Segment, 1 operation
list_segmentsList segmentsGETList the collection of all of the account's valid and active segments.
Start, 1 operation
start_contact_importStart contact importPOSTStarts a bulk import that holds records. Only one import may run at a time (409 otherwise). Processing can take a while: follow it with get_contact_import (Flexmail also emails when it is done).
Unsubscribe, 1 operation
unsubscribe_contactUnsubscribe contactPOSTUnsubscribe a contact from your communication. If a contact is unsubscribed, it can only be resubscribed via opt-in.
Webhook event, 1 operation
list_webhook_eventsList webhook eventsGETLists the event names a webhook can subscribe to on this account (such as contact.created, contact.updated, contact.unsubscribed, opt_in.confirmed); the set depends on the account plan.
Use Flexmail from Claude Code, Cursor or Codex
Connect Flexmail in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Flexmail operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Flexmail
- Create your workspace
Sign up free. Nothing to install.
- Connect Flexmail once
Add your Flexmail connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Flexmail integration FAQ
What can you do with the Flexmail integration?
LiveContext exposes 35 operations on Flexmail, covering contact, interest, webhook and interest subscription.
