Brevo's marketing and CRM platform — manage contacts, lists and segments, send transactional and campaign email, run SMS and WhatsApp campaigns, and track deals and companies
Hermes is Nous Research's command-line agent. MCP servers are declared in its YAML config and reloaded without a restart.
This guide connects Brevo to Hermes through MewCP, so Hermes can use Brevo's 20 tools, like get_account, list_contacts and create_contact, without your Brevo credentials ever reaching the app.
Your Brevo API key is stored encrypted and injected only at call time. Your agent never holds it, so it can never leak it, log it or paste it into a prompt.
More apps
Manage Gmail end to end with tools for sending, reading, replying to and organizing emails. Work with threads, labels, drafts, attachments and inbox workflows while keeping communication and email automation in one place.
Manage your Google Business Profile, business information and customer engagement. Update listings, publish content, monitor reviews and maintain your local presence across Google services.
Microsoft Outlook MCP Server gives AI agents full control over Outlook email and calendar workflows, including reading and sending emails, managing attachments, organizing mail, scheduling and updating meetings, managing contacts, and creating tasks.
Connect Zoho Mail to Claude, ChatGPT and any AI agent. Search, read, send and reply to emails, manage drafts, folders and labels, all through one secure connection.
Other clients
Brevo works the same way in every client below. Pick yours for its own guide.
Free to start.
Scope access to the exact Brevo tools and accounts you allow, work and personal side by side. Anything outside that scope is refused at call time, even when the model asks for it.
Each call is logged: what ran, on which account, and whether it worked. Failures come back structured, so the agent knows whether to retry instead of guessing.
Every app sits behind one secure MCP URL, and there is no server for you to deploy or keep running. Add an integration in the dashboard and it is live on the next call, with no config to change and no new credentials to wire up. Tools load only when a task needs them, so your agent stays fast and focused however many apps you connect.
Edit config.yaml in your Hermes config directory (~/.hermes).
Put this under the top-level "mcp_servers:" key.
Run /reload-mcp in Hermes, or start a fresh session. Sign in when the browser window opens.
Start a new chat and ask: "List the tools you can use from MewCP." You should see your connected apps.
Retrieves details of the authenticated Brevo account — organization and user identifiers, company and address information, enterprise status, marketing automation configuration, plan/credit allocations, and SMTP relay configuration for transactional email. The marketingAutomation key is only present when that feature is enabled on the account.
Lists contacts in the Brevo account with pagination, creation/modification date, ID, list, segment, and attribute-equality filtering. Returns each contact's core fields and attributes plus a total count. Accepts at most 20 IDs in `ids`, and `list_ids`/`segment_id` are mutually exclusive filters.
Creates a new contact in the Brevo account, identified by email, ext_id, or an SMS attribute. Returns the ID of the created (or, with force_merge, surviving merged) contact. Attributes must already exist on the account or their values are silently ignored; without force_merge, an identifier conflict with an existing contact returns a 4xx error instead of merging.
Updates the contact. Only the fields you provide are changed — others keep their current value. NOTE: this overwrites the current field values — the original state is not stored after the call. Brevo's update endpoint itself returns no body, so this tool fetches the contact via get_contact before and after updating it and returns both states so you have a full record of what changed.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes the contact identified by email, numeric ID, or EXT_ID. This action is irreversible — the contact's data, attributes, and list membership cannot be recovered. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user exactly what will be deleted and that it is permanent, and wait for their explicit written confirmation before proceeding.
Retrieves a contact's details — attributes, email/SMS/WhatsApp blacklist status, list membership, consent groups, and campaign statistics — identified by email, numeric ID, SMS, or EXT_ID. start_date and end_date scope the campaign statistics window and must be provided together, in YYYY-MM-DD format, with start_date on or before end_date and neither date in the future.
Lists all contact lists in the account. Returns each list's ID, name, folder ID, and subscriber/blacklist counts, plus the total count of lists. Supports pagination via limit/offset and defaults to descending order of creation when sort is omitted.
Creates a new, empty contact list inside the specified folder. Returns the ID of the newly created list. Add contacts to it afterward with add_contact_to_list.
Creates a new folder to organize contact lists — folders are containers for grouping related lists together. Returns the ID of the newly created folder; pass it as `folder_id` to create_contact_list to place lists inside it.
Adds existing contacts to a specific list by email address, numeric contact ID, or EXT_ID attribute — provide exactly one identifier type per call. Returns which contacts succeeded and which failed. Accepts a maximum of 150 identifiers per request; for bulk additions, use the contacts import endpoint instead.
Removes contacts from a specific list by email address, numeric contact ID, EXT_ID attribute, or by setting all_ to true to remove every contact currently on the list — provide exactly one of these options per call. Returns which contacts succeeded and which failed, or a process ID when removing all. Accepts a maximum of 150 identifiers per request when not using all_.
Lists email campaigns with optional filters on type, status, and statistics, and returns each campaign's core fields plus a total count. `start_date` and `end_date` must be provided together, only apply when `status` is omitted or set to 'sent', must not be in the future, and the range between them cannot exceed 2 years.
Creates a new email campaign and returns its ID. Exactly one of `html_content`, `html_url`, or `template_id` must be provided for the body. `subject` is required unless `ab_testing` is true, in which case `subject_a` and `subject_b` are required instead. Campaigns with embedded inline images (`inline_image_activation`) cannot be sent to more than 5000 contacts.
Sends the email campaign identified by campaign_id to all of its configured recipients immediately, by scheduling it for the current time. This is a real send to real recipients — once triggered, delivery cannot be cancelled or undone, so confirm the campaign's content and recipient list with the user before calling this tool.
Sends a real, irreversible test copy of the campaign identified by campaign_id to the given email addresses, or to the entire test list if email_to is omitted. Actual emails are delivered to those recipients — no more than 50 test emails can be sent per day.
Retrieves the email senders configured in the Brevo account, optionally filtered by dedicated IP or domain. Returns each sender's ID, name, email, active status, and any associated dedicated IPs; the `ip` filter only works for accounts with dedicated IPs.
Creates a new email sender in the Brevo account and returns its ID plus DKIM/SPF configuration status. A verification email is sent to `email`, and the sender must be verified with validate_sender_otp before it can be used in campaigns; for dedicated IP accounts the weights in `ips` must sum to 100.
Lists transactional email templates (including automation templates), optionally filtered by active status or editor type. Returns each template's ID, name, subject, sender, active status, HTML content, and timestamps. Results default to 50 per page (max 1000) and sort descending by creation date unless overridden.
Sends a transactional email immediately to one or more real recipients, either using inline HTML content or a pre-built template via `template_id`. This has a real-world side effect — the message is delivered right away, not a draft or a dry run. Either `template_id`, or `html_content` + `sender` + `subject`, must be provided, and either `to` or `message_versions` must be provided (a batch send via `message_versions` ignores `to`). Returns the sent message's ID (or IDs, for a batch send).
Retrieves a paginated list of sent transactional emails matching the given filters. Returns each email's date, recipient, subject, message ID, and unique ID (uuid). At least one of `email`, `template_id`, or `message_id` must be provided, and `start_date`/`end_date` must be given together, spanning at most one month.