# Brevo MCP MCP Server > **Brevo MCP MCP Server** is a hosted, multitenant Model Context Protocol (MCP) server run by **MewCP** (https://mewcp.com), giving AI agents managed access to Brevo MCP . > > MewCP takes care of all MCP infrastructure for you — credential storage, OAuth flows, > token refresh, and production-grade auto-scaling — so your AI agents can connect to > third-party services and run freely without you managing any MCP server yourself. > > Server page: https://mewcp.com/mcp/brevo-mcp > MewCP docs: https://docs.mewcp.com > Full catalog: https://mewcp.com/llms.txt --- ## About Brevo's marketing and CRM platform. Manage contacts, lists and segments, build and send email, SMS and WhatsApp campaigns, read campaign performance, and work CRM deals, companies, tasks and pipelines. Also covers senders, domains, templates and sub-account administration. --- ## Details - Server ID: `brevo-mcp` - Version: 2.14.7 - Tools: 282 - Authentication: API key, held by MewCP - Transport: http --- ## Access The gateway URL below serves your **entire MewCP toolset**, not this server on its own. Pasting a config snippet is not enough — Brevo MCP has to be in the toolset first. In order: 1. Add Brevo MCP to your toolset at https://mewcp.com/mcp/brevo-mcp 2. Connect your Brevo MCP account (API key); MewCP stores the credential and attaches it to each call 3. Copy your MewCP API key from the dashboard (Developer) 4. Configure your client with the snippet for it below Once connected, an agent does **not** see this server's tools as top-level tools. It sees four meta-tools and reaches everything through them: - `search(query)` — find tools by keyword across the toolset - `get_schema(tools)` — full description and arguments for the tools you picked - `list_accounts(provider)` — only when one app has several connected accounts - `call_tool(server_maskedId, tool_name, args)` — execute So the list below is what `search` can return for this server, not a set of callable tool names on their own. --- ## Tools (282) Descriptions are truncated to 160 characters; call `get_schema` for the full text and the argument schema. Where a tool is annotated, its type is shown — treat `destructive` as irreversible. - `accounts_get_account` _(read)_ — Retrieves details of your Brevo account. **Use this to:** - Get account information (email, name, company, address) - Check plan details (type, credits,… - `accounts_get_corporate_invited_users_list` _(read)_ — This endpoint allows you to list all Admin users of your Admin account. You can filter users by type (active or pending) and paginate results using offset and… - `accounts_get_corporate_ip` _(read)_ — Retrieves the list of all active dedicated IPs available on the corporate admin account. Each IP entry includes the IP address, associated domain, and whether… - `accounts_get_corporate_master_account` _(read)_ — Retrieves comprehensive details of the corporate master account, including company information, billing details, current plan configuration with feature… - `accounts_post_corporate_sso_token` _(write)_ — Generates a Single Sign-On (SSO) token that allows authentication to the corporate admin account without requiring a separate login. The generated token is… - `accounts_get_corporate_sub_account` _(read)_ — Retrieves a paginated list of all sub-accounts under the corporate master account. Each sub-account entry includes company name, creation date, active status,… - `accounts_post_corporate_sub_account` _(write)_ — Creates a new sub-account under the corporate master account. The sub-account will be provisioned with the specified company name and email address.… - `accounts_post_corporate_sub_account_ip_associate` _(write)_ — Associates a dedicated IP address with one or more sub-account organizations. This allows the specified sub-accounts to use the dedicated IP for sending… - `accounts_put_corporate_sub_account_ip_dissociate` _(write)_ — Removes the association of a dedicated IP address from one or more sub-account organizations. After dissociation, the specified sub-accounts will no longer be… - `accounts_post_corporate_sub_account_key` _(write)_ — Generates a new API v3 key for a specific sub-account organization. Both the sub-account ID and a name for the API key are required. The generated key is… - `accounts_post_corporate_sub_account_sso_token` _(write)_ — Generates a Single Sign-On (SSO) token that allows the master account to authenticate directly into a sub-account without requiring separate login credentials.… - `accounts_delete_corporate_sub_account_by_id` _(destructive)_ — Permanently deletes a sub-account from the corporate master account. Once deleted, all data associated with the sub-account organization is removed and cannot… - `accounts_get_corporate_sub_account_by_id` _(read)_ — Retrieves detailed information about a specific sub-account including company name, contact email, group memberships, and comprehensive plan details with… - `accounts_put_corporate_sub_account_applications_toggle` _(write)_ — Enables or disables specific applications for a sub-account organization. Each application can be toggled independently using boolean values. Available… - `accounts_put_corporate_sub_account_plan` _(write)_ — Updates the plan configuration for a specific sub-account, including credit allocations (email, SMS, WhatsApp, push) and feature quotas (users, landing pages,… - `accounts_put_corporate_sub_accounts_plan` _(write)_ — Updates the plan configuration for multiple sub-accounts at once with the same credit allocations and feature quotas. This is useful for applying consistent… - `accounts_invite_admin_user` _(write)_ — Invites a new member to manage the Admin (master) account by sending an invitation email. The invitation specifies which features and permission levels the… - `accounts_put_corporate_user_invitation_by_email` _(write)_ — Allows you to resend or cancel a pending invitation for an admin user. Use the `resend` action to send a new invitation email to the recipient, or the `cancel`… - `accounts_delete_corporate_user_revoke_by_email` _(destructive)_ — Revokes access for an invited admin user on the corporate master account. Once revoked, the user will no longer be able to access the admin account or manage… - `accounts_get_corporate_user_permission` _(read)_ — Retrieves the granular feature-level permissions assigned to a specific admin user, identified by their email address. The response includes the user's current… - `accounts_put_corporate_user_permissions` _(write)_ — Updates the feature-level permissions for an existing admin user of your master account, identified by their email address. If `all_features_access` is set to… - `accounts_get_account_activity` _(read)_ — Retrieves user activity logs from your organization for security monitoring and audit compliance. Use this to: - Monitor user login activities and access… - `attributes_get_attributes` _(read)_ — Retrieve all contact attributes defined in your Brevo account, grouped by category (normal, transactional, category, calculated, global). Each attribute… - `attributes_delete_attribute` _(destructive)_ — Permanently delete an existing contact attribute by its category and name. The attribute must exist in the specified category (normal, transactional, category,… - `attributes_create_attribute` _(write)_ — Create a new contact attribute under the specified category and name. The required body properties depend on the category: use "type" for normal,… - `attributes_update_attribute` _(write)_ — Update an existing contact attribute identified by its category and name. For category-type attributes, you can update the enumeration values; for calculated… - `attributes_delete_multi_attribute_options` _(destructive)_ — Delete a specific option from an existing multiple-choice contact attribute. The attribute type must be "multiple-choice", and both the attribute name and the… - `attributes_post_crm_attributes` _(write)_ — Create a new custom attribute for companies or deals. The attribute label must be unique within the object type, cannot exceed 50 characters, and cannot use… - `attributes_delete_crm_attributes_by_id` _(destructive)_ — Delete an existing custom attribute by its identifier. This permanently removes the attribute definition and cleans up all references to it across companies or… - `attributes_patch_crm_attributes_by_id` _(write)_ — Update an existing custom attribute's label or options. You can rename the attribute label or modify the available options for `single-select` and… - `attributes_get_crm_attributes_companies` _(read)_ — Retrieve the list of all attributes defined for companies, including both system-default and custom attributes. Each attribute includes its label, internal… - `attributes_get_crm_attributes_deals` _(read)_ — Retrieve the list of all attributes defined for deals, including both system-default and custom attributes. Each attribute includes its label, internal name,… - `campaign_analytics_get_ab_test_campaign_result` _(read)_ — Retrieve the results of an A/B test email campaign, including the winning version, open and click rates, and per-version statistics. The campaign must have A/B… - `campaign_analytics_get_aggregated_smtp_report` _(read)_ — Retrieve aggregated transactional email statistics (requests, delivered, opens, clicks, bounces, spam reports, blocked, invalid, unsubscribed) for a specified… - `campaign_analytics_get_email_event_report` _(read)_ — Retrieve a paginated list of individual transactional email event records (unaggregated), including event type, recipient email, sender, message ID, subject,… - `campaign_analytics_get_smtp_report` _(read)_ — Retrieve a day-by-day breakdown of transactional email statistics (requests, delivered, opens, unique opens, clicks, unique clicks, hard bounces, soft bounces,… - `categories_get_categories` _(read)_ — Retrieve a paginated list of all ecommerce categories stored in your Brevo account. Results are sorted by creation date in descending order by default, and can… - `categories_create_update_category` _(write)_ — Create a new ecommerce category or update an existing one, identified by the mandatory `id` field. When `updateEnabled` is set to `false` (the default), the… - `categories_create_update_batch_category` _(write)_ — Create or update multiple ecommerce categories in a single request. The `categories` array accepts up to 100 category objects, each requiring a unique `id`.… - `categories_get_category_info` _(read)_ — Retrieve the full details of a single ecommerce category by its unique ID. The response includes the category name, URL, creation and modification timestamps,… - `companies_get_companies` _(read)_ — Retrieve a paginated list of companies with optional filtering, sorting, and search capabilities. Results are sorted by creation date in descending order by… - `companies_post_companies` _(write)_ — Create a new CRM company with the specified name, attributes, and optional associations to contacts and deals. The company name is required, and you can… - `companies_post_import` _(write)_ — Import companies in bulk from a CSV file with configurable mapping options. The CSV file must have the first row as column headers matching attribute internal… - `companies_patch_link_unlink_by_id` _(write)_ — Link or unlink contacts and deals with a specific company in a single request. You can simultaneously link new contacts/deals and unlink existing ones by… - `companies_delete_by_id` _(destructive)_ — Permanently delete a company by its identifier. The requesting user must be the company owner or have manage permission on companies; otherwise, a 403… - `companies_get_by_id` _(read)_ — Retrieve the full details of a single company by its identifier, including its attributes, linked contacts, and linked deals. Returns a 404 error if the… - `companies_patch_by_id` _(write)_ — Update an existing company's attributes, name, linked contacts, or linked deals. Note that passing `linkedContactsIds` or `linkedDealsIds` replaces the entire… - `contact_import_export_update_batch_contacts` _(write)_ — Update multiple contacts in a single API call by passing an array of contact objects, with a maximum of 100 contacts per request. Each contact in the array… - `contact_import_export_create_doi_contact` _(write)_ — Create a contact using the Double Opt-In (DOI) flow. A confirmation email is sent to the provided email address using the specified DOI template. The contact… - `contact_import_export_request_contact_export` _(write)_ — Export contacts from your Brevo account based on custom filters. You must provide a customContactFilter with at least one action type (actionForContacts,… - `contact_import_export_import_contacts` _(write)_ — Import contacts into your Brevo account from a CSV file body, a JSON body, or a remote file URL. Exactly one of fileBody, jsonBody, or fileUrl must be… - `contact_import_export_get_contacts_from_list` _(read)_ — Retrieve all contacts belonging to a specific list, identified by its list ID. Results are paginated with a default of 50 contacts per page (maximum 500) and… - `contacts_get_contacts` _(read)_ — Retrieve all contacts from your Brevo account with support for pagination, filtering, and sorting. Results default to 50 contacts per page (maximum 1000)… - `contacts_create_contact` _(write)_ — Follow this format when passing a "SMS" phone number as an attribute. Accepted Number Formats 91xxxxxxxxxx +91xxxxxxxxxx 0091xxxxxxxxxx Creates… - `contacts_delete_contact` _(destructive)_ — Permanently delete a contact identified by their email address, numeric ID, or other identifier. Without the identifierType query parameter, the API only… - `contacts_get_contact_info` _(read)_ — Follow this format when passing a "SMS" phone number as an attribute. Accepted Number Formats 91xxxxxxxxxx +91xxxxxxxxxx 0091xxxxxxxxxx There are… - `contacts_update_contact` _(write)_ — Update an existing contact identified by their email address, numeric ID, or other identifier. Without the identifierType query parameter, only email addresses… - `contacts_get_contact_stats` _(read)_ — Retrieve email campaign statistics for a specific contact identified by email address or numeric ID. Statistics include messages sent, opens, clicks, hard/soft… - `conversations_post_agent_online_ping` _(write)_ — Sets the agent's status to online for 2-3 minutes. We recommend pinging this endpoint every minute for as long as the agent has to be considered online. You… - `conversations_post_messages` _(write)_ — Send a message as an agent to an existing visitor's conversation. You must provide either `agentId` alone, or all three of `agentEmail` + `agentName` +… - `conversations_delete_messages_by_id` _(destructive)_ — Delete a message sent by an agent. Only non-pushed, non-triggered agent messages from the chat widget can be deleted. Messages originating from external… - `conversations_get_messages_by_id` _(read)_ — Retrieve a single message by its ID. Both agent and visitor messages can be retrieved, but service messages (such as join/leave notifications) are excluded. - `conversations_put_messages_by_id` _(write)_ — Update the text of a message sent by an agent. Only non-pushed, non-triggered agent messages from the chat widget can be edited. Messages originating from… - `conversations_post_pushed_messages` _(write)_ — Send an automated (pushed) message to one or more visitors on behalf of an agent. Example use cases include order status updates, announcing new features, or… - `conversations_delete_pushed_messages_by_id` _(destructive)_ — Delete an automated (pushed) message by its ID. Only messages that were originally sent via the pushed messages endpoint can be deleted using this endpoint.… - `conversations_get_pushed_messages_by_id` _(read)_ — Retrieve a single automated (pushed) message by its ID. Only messages that were originally sent via the pushed messages endpoint can be retrieved using this… - `conversations_put_pushed_messages_by_id` _(write)_ — Update the text of an automated (pushed) message. Only messages that were originally sent via the pushed messages endpoint can be updated using this endpoint.… - `coupons_get_coupon_collections` _(read)_ — Retrieve a paginated list of all coupon collections in your Brevo account. Results can be sorted by creation date, remaining coupons count, or expiration date,… - `coupons_create_coupon_collection` _(write)_ — Create a new coupon collection with a name and a default coupon value. You can optionally set an expiration date in RFC3339 format and configure alert… - `coupons_get_coupon_collection` _(read)_ — Retrieve the details of a single coupon collection by its UUID. The response includes the collection name, default coupon value, total and remaining coupon… - `coupons_update_coupon_collection` _(write)_ — Update an existing coupon collection by its UUID. You can modify the default coupon value, set or remove the expiration date (pass `null` to remove), and… - `coupons_create_coupons` _(write)_ — Add coupons to an existing coupon collection. The `coupons` array must contain between 1 and 10,000 unique coupon code strings, all associated with the… - `deals_get_crm_deals` _(read)_ — Retrieve a paginated list of deals with optional filtering, sorting, and search capabilities. Results can be filtered by attributes such as deal name or owner,… - `deals_post_crm_deals` _(write)_ — Create a new deal in the CRM with the specified name, attributes, and optional associations to contacts and companies. You can assign the deal to a specific… - `deals_post_crm_deals_import` _(write)_ — Import deals in bulk from a CSV file with configurable mapping options. The CSV file must have the first row as column headers matching attribute internal… - `deals_patch_crm_deals_link_unlink_by_id` _(write)_ — Link or unlink contacts and companies with a specific deal in a single request. You can simultaneously link new contacts/companies and unlink existing ones by… - `deals_delete_crm_deals_by_id` _(destructive)_ — Permanently delete a deal by its identifier. The requesting user must be the deal owner or have manage permission on deals; otherwise, a 403 Forbidden error is… - `deals_get_crm_deals_by_id` _(read)_ — Retrieve the full details of a single deal by its identifier, including its attributes, pipeline stage, linked contacts, and linked companies. Returns a 404… - `deals_patch_crm_deals_by_id` _(write)_ — Update an existing deal's name or attributes. To move a deal to a different pipeline or stage, provide both the `pipeline` and `deal_stage` attribute IDs. To… - `domains_get_domains` _(read)_ — Retrieves all domains associated with the account. Use this to: - List all domains - Verify domain existence - Check domain authentication and verification… - `domains_create_domain` _(write)_ — Creates a new domain in Brevo. Use this to: - Add new domains for sending emails - Set up domain authentication for better deliverability - Configure DNS… - `domains_delete_domain` _(destructive)_ — Deletes a domain from Brevo. Use this to: - Remove existing domains - Clean up unused domain configurations - Remove test domains Key information returned: -… - `domains_get_domain_configuration` _(read)_ — Retrieves configuration of a specific domain, to know if the domain is valid or not. Use this to: - Check domain configuration - Validate a domain… - `domains_authenticate_domain` _(write)_ — Authenticates a specific domain. Use this to: - Authenticate a domain - Verify DNS record configuration - Complete domain setup for sending - Enable domain for… - `ecommerce_post_activate` _(write)_ — Activate the Brevo eCommerce application for your account. This is a prerequisite for using other ecommerce endpoints such as products, categories, and orders.… - `ecommerce_get_attribution_metrics` _(read)_ — Retrieve aggregated ecommerce attribution metrics for one or more Brevo email campaigns, SMS campaigns, or automation workflows. You can optionally filter by a… - `ecommerce_get_attribution_metrics_by_conversion_source_id` _(read)_ — Retrieve detailed attribution metrics for a single Brevo campaign or automation workflow, identified by its conversion source type and ID. The response… - `ecommerce_get_attribution_products_by_conversion_source_id` _(read)_ — Retrieve the list of products whose sales have been attributed to a specific Brevo campaign or automation workflow. Each product entry includes its ID, name,… - `ecommerce_get_config_display_currency` _(read)_ — Retrieve the ISO 4217 display currency code currently configured for your Brevo ecommerce account. This currency is used to display monetary values across the… - `ecommerce_set_config_display_currency` _(write)_ — Set or update the ISO 4217 display currency code for your Brevo ecommerce account. This currency determines how monetary values are displayed in the ecommerce… - `ecommerce_get_orders` _(read)_ — Retrieve a paginated list of all ecommerce orders stored in your Brevo account. Results are sorted by creation date in descending order by default, and can be… - `ecommerce_create_order` _(write)_ — Create a new ecommerce order or update the status of an existing order. The order is identified by its unique `id` and requires a status, amount, creation and… - `ecommerce_create_batch_order` _(write)_ — Create or update multiple ecommerce orders in a single asynchronous batch request. The `orders` array contains order objects (same schema as the single order… - `email_campaign_management_get_email_campaigns` _(read)_ — Retrieve a paginated list of email campaigns. You can filter by campaign type (classic or trigger), status (e.g. sent, draft, queued), and a creation date… - `email_campaign_management_create_email_campaign` _(write)_ — Create a new email campaign. The campaign requires at minimum a name and sender details, and is created in draft status by default. You must provide email… - `email_campaign_management_upload_image_to_gallery` _(write)_ — Upload an image to your account's image gallery by providing an absolute URL to the image. The maximum allowed image size is 2MB and supported formats are… - `email_campaign_management_delete_email_campaign` _(destructive)_ — Delete an email campaign by its campaign ID. Only campaigns that have not been scheduled can be deleted; attempting to delete a campaign that has already been… - `email_campaign_management_get_email_campaign` _(read)_ — Retrieve detailed information about a specific email campaign by its ID, including recipients, statistics, and HTML content. Use the statistics query parameter… - `email_campaign_management_update_email_campaign` _(write)_ — Update an existing email campaign's properties such as name, subject, content, sender, recipients, schedule, and A/B testing configuration. The campaign must… - `email_campaign_management_email_export_recipients` _(write)_ — Export the recipients of a sent email campaign as an asynchronous process, filtered by recipient type (e.g. openers, clickers, hardBounces). The recipientsType… - `email_campaign_management_send_email_campaign_now` _(write)_ — Send an existing email campaign immediately by scheduling it for the current time. The campaign must have valid recipients and content configured before… - `email_campaign_management_send_report` _(write)_ — Send a PDF report of an email campaign to the specified email addresses. The report includes campaign statistics such as deliveries, opens, clicks, bounces,… - `email_campaign_management_send_test_email` _(write)_ — Send a test version of an email campaign to specified email addresses or your entire test list. If the emailTo array is left empty, the test mail will be sent… - `email_campaign_management_get_shared_template_url` _(read)_ — Get a unique URL to share and import an email template from one Brevo account to another. Only classic email campaigns and templates are supported; attempting… - `email_campaign_management_update_campaign_status` _(write)_ — Update the status of an email campaign, such as suspending, archiving, or replicating it. Available status values are: suspended, archive, darchive, sent,… - `events_get_events` _(read)_ — Retrieve a paginated list of events filtered by contact ID, event name, object type, and/or date range. When no date range is provided, the API returns events… - `events_create_event` _(write)_ — Create a single event to record a contact's interaction. The event is processed asynchronously and can be used for segmentation, automation triggers, and… - `external_feeds_get_all_external_feeds` _(read)_ — Retrieves all external feeds from your Brevo account with filtering and pagination. **Use this to:** - Get an overview of all external data feeds - Find feeds… - `external_feeds_create_external_feed` _(write)_ — Creates a new external feed for dynamic content in email campaigns. **Use this to:** - Set up external data sources for dynamic content - Configure… - `external_feeds_delete_external_feed` _(destructive)_ — Deletes an external feed from your Brevo account. **Use this to:** - Remove external feeds that are no longer needed - Clean up unused data sources - Remove… - `external_feeds_get_external_feed_by_uuid` _(read)_ — Retrieves details of a specific external feed by its UUID. **Use this to:** - Get complete configuration of an external feed - Check feed authentication… - `external_feeds_update_external_feed` _(write)_ — Updates configuration of an existing external feed. **Use this to:** - Update feed URLs when data sources change - Modify authentication credentials - Change… - `files_get_crm_files` _(read)_ — Retrieve a paginated list of CRM files with optional filtering by entity type, entity IDs, and date range. Results are sorted by creation date in descending… - `files_post_crm_files` _(write)_ — Upload a file and associate it with a contact, company, or deal. The file must be sent as multipart form data with a maximum size of 10 MB. You can optionally… - `files_delete_crm_files_by_id` _(destructive)_ — Permanently delete a CRM file by its identifier. This removes the file from storage and unlinks it from any associated contacts, companies, or deals. - `files_get_crm_files_by_id` _(read)_ — Get a temporary download URL for a CRM file by its identifier. The returned URL is valid for 5 minutes only and provides direct access to the file content. - `files_get_crm_files_data` _(read)_ — Retrieve the metadata and details of a specific CRM file by its identifier. This returns information such as the file name, size, author, creation date, and… - `folders_get_folders` _(read)_ — Retrieve all contact folders from your Brevo account with support for pagination and sorting. Results default to 10 folders per page (maximum 50) sorted in… - `folders_create_folder` _(write)_ — Create a new folder to organize your contact lists. Folders serve as containers for grouping related lists together. The folder name is required and must be… - `folders_delete_folder` _(destructive)_ — Permanently delete a folder identified by its ID. Deleting a folder will also delete all the contact lists contained within it. This action cannot be undone. - `folders_get_folder` _(read)_ — Retrieve the details of a specific folder by its ID, including its name, subscriber counts, and blacklisted contacts count. Note: the totalSubscribers and… - `folders_update_folder` _(write)_ — Update the name of an existing folder identified by its ID. The new folder name must be provided in the request body. Returns a 404 error if the folder ID does… - `folders_get_folder_lists` _(read)_ — Retrieve all contact lists contained in a specific folder, identified by its folder ID. Results are paginated with a default of 10 lists per page (maximum 50)… - `groups_post_corporate_group` _(write)_ — Creates a new group to organize sub-accounts under the corporate master account. Groups allow you to manage and apply settings to multiple sub-accounts at… - `groups_put_corporate_group_unlink_sub_accounts` _(write)_ — Removes one or more sub-organizations from a specific group. The sub-organizations themselves are not deleted; they are simply unlinked from the group. All… - `groups_delete_corporate_group_by_id` _(destructive)_ — Deletes a group of sub-organizations. When a group is deleted, the sub-organizations are no longer part of this group, but the sub-organizations themselves are… - `groups_get_corporate_group_by_id` _(read)_ — Retrieves detailed information about a specific group of sub-organizations, including the group metadata, list of sub-organizations belonging to the group, and… - `groups_put_corporate_group_by_id` _(write)_ — Updates the details of an existing group of sub-accounts, including the group name and the list of sub-accounts assigned to it. When sub-account IDs are… - `groups_get_sub_account_groups` _(read)_ — Retrieves all groups created on the corporate admin account. Each group entry includes the group name and its unique identifier. Groups are used to organize… - `inbound_get_email_events` _(read)_ — Retrieve a paginated list of inbound email events. When no date range is provided, the API returns events from the last 30 days by default. Both `startDate`… - `inbound_get_email_events_by_uuid` _(read)_ — Retrieve the detailed event history for a specific received email identified by its UUID. The response includes sender and recipient information, the email… - `inbound_get_email_attachment` _(read)_ — Download an inbound email attachment using its download token. The download token is obtained from the attachments list in the response of the `GET… - `ips_get_ips` _(read)_ — Retrieves all dedicated IPs associated with your Brevo account. Use this to: - List all your dedicated IPs - Check the status of your dedicated IPs… - `ips_get_from_sender` _(read)_ — Retrieves the dedicated IPs associated with a specific sender. Use this to: - Check IP configuration for a sender - Verify dedicated IP associations - Get IP… - `lists_get_lists` _(read)_ — Retrieve all contact lists from your Brevo account with support for pagination and sorting. Results default to 10 lists per page (maximum 50) sorted in… - `lists_create_list` _(write)_ — Create a new contact list inside a specified folder. Both the list name and the parent folder ID are required. The newly created list will be empty and ready… - `lists_delete_list` _(destructive)_ — Permanently delete a contact list identified by its ID. The contacts in the list are not deleted; they are only removed from this list. Returns a 404 error if… - `lists_get_list` _(read)_ — Retrieve the details of a specific contact list by its ID, including its name, folder ID, creation date, subscriber counts, and campaign statistics. You can… - `lists_update_list` _(write)_ — Update an existing contact list identified by its ID. You can update the list name, move it to a different folder by providing a new folderId, or both. Only… - `lists_add_contact_to_list` _(write)_ — Add existing contacts to a specific list by providing their email addresses, numeric IDs, or EXT_ID attributes. Only one type of identifier can be used per… - `lists_remove_contact_from_list` _(write)_ — Remove contacts from a specific list by providing their email addresses, numeric IDs, EXT_ID attributes, or by setting "all" to true to remove all contacts… - `loyalty_get_balance_programs_active_balance` _(read)_ — Retrieves a paginated list of active (non-expired, non-consumed) balance entries for a specific contact and balance definition within a loyalty program. Both… - `loyalty_get_balance_definition_list` _(read)_ — Retrieves a paginated list of balance definitions configured for a loyalty program. Balance definitions specify the currency or point unit, expiration rules,… - `loyalty_post_balance_programs_balance_definitions` _(write)_ — Creates a new balance definition within a loyalty program. A balance definition specifies the unit of measurement (points or currency), expiration rules,… - `loyalty_delete_balance_definition` _(destructive)_ — Permanently deletes a balance definition from a loyalty program. Once deleted, the balance definition cannot be recovered. Any balances tied to this definition… - `loyalty_get_balance_definition` _(read)_ — Retrieves a single balance definition by its ID within a loyalty program. Use the `version` query parameter to fetch either the currently active or the draft… - `loyalty_update_balance_definition` _(write)_ — Replaces an existing balance definition with the provided data. This is a full replacement (PUT), not a partial update; all fields in the payload are applied.… - `loyalty_create_balance_limit` _(write)_ — Creates a new limit on a balance definition to restrict transaction frequency or amount within a time window. Limits can constrain either the total transaction… - `loyalty_delete_balance_limit` _(destructive)_ — Permanently deletes a balance limit from a balance definition. Once deleted, the limit constraint is no longer enforced on transactions. - `loyalty_get_balance_limit` _(read)_ — Retrieves a single balance limit by its ID for a given balance definition. Use the `version` query parameter to fetch either the currently active or the draft… - `loyalty_update_balance_limit` _(write)_ — Replaces an existing balance limit with the provided data. This is a full replacement (PUT); all fields in the payload are applied. The `durationValue` and… - `loyalty_get_contact_balances` _(read)_ — Retrieves a paginated list of contact balances for a specific balance definition across all subscriptions in a loyalty program. The `balanceDefinitionId` query… - `loyalty_create_balance_order` _(write)_ — Creates a new balance order linked to a specific balance definition and contact. An order represents a pending balance adjustment that will be processed at the… - `loyalty_get_subscription_balances` _(read)_ — Retrieves the aggregate balances for a contact's subscription within a loyalty program. Returns the total balance value per balance definition. Use the… - `loyalty_post_balance_programs_subscriptions_balances` _(write)_ — Creates a new balance entry for a contact's subscription, linked to a specific balance definition. The contact must have an active subscription in the loyalty… - `loyalty_get_balance_programs_transaction_history` _(read)_ — Retrieves a paginated transaction history for a specific contact and balance definition within a loyalty program. Both `contactId` and `balanceDefinitionId`… - `loyalty_begin_transaction` _(write)_ — Creates a new balance transaction (credit or debit) within a loyalty program. A positive amount creates a credit transaction and a negative amount creates a… - `loyalty_cancel_transaction` _(write)_ — Cancels a pending transaction, reverting any tentative balance changes. Only transactions in a pending state can be cancelled. Once cancelled, the transaction… - `loyalty_complete_transaction` _(write)_ — Completes a pending transaction, finalizing the balance change. Only transactions in a pending state can be completed. Once completed, the transaction amount… - `loyalty_get_lp_list` _(read)_ — Retrieves a paginated list of loyalty programs for the organization. Results can be sorted by name, creation date, or last update date. Use `limit` and… - `loyalty_create_new_lp` _(write)_ — Creates a new loyalty program for the organization. The `name` field is required and must be unique (max 128 characters). An optional `description` (max 256… - `loyalty_delete_program` _(destructive)_ — Permanently deletes a loyalty program and all its associated data. This action cannot be undone. All subscriptions, balances, tiers, and rewards linked to the… - `loyalty_get_program_info` _(read)_ — Retrieves the full details of a single loyalty program by its ID, including its current state, metadata, subscription pool configuration, and timestamps. - `loyalty_partially_update_loyalty_program` _(write)_ — Partially updates a loyalty program. Only the fields provided in the request body are modified; omitted fields remain unchanged. Supports updating the name… - `loyalty_update_loyalty_program` _(write)_ — Replaces a loyalty program with the provided data. This is a full replacement (PUT); all fields in the payload are applied. The `name` field is required (max… - `loyalty_get_parameter_subscription_info` _(read)_ — Retrieves comprehensive subscription data for a contact, including balances, tier assignments, attributed rewards, and subscription members. At least one of… - `loyalty_delete_contact_subscription` _(destructive)_ — Removes a contact's subscription from a loyalty program. This deletes the subscription and disassociates the contact from the program. The operation cannot be… - `loyalty_publish_loyalty_program` _(write)_ — Publishes the current draft version of a loyalty program, making all pending changes (balance definitions, tiers, tier groups, rewards) live. After… - `loyalty_delete_contact_members` _(destructive)_ — Removes one or more members from a subscription. Provide a comma-separated list of member contact IDs via the `memberContactIds` query parameter. At least one… - `loyalty_subscribe_member_to_a_subscription` _(write)_ — Adds one or more members to an existing subscription. Either `contactId` or `loyaltySubscriptionId` must be provided to identify the target subscription. The… - `loyalty_subscribe_to_loyalty_program` _(write)_ — Creates a new subscription for a contact in a loyalty program. The `contactId` field is required and must be greater than zero. An optional… - `loyalty_get_code_count` _(read)_ — Retrieves the number of available codes in a specific code pool. Code pools are used by rewards to generate unique voucher codes for attribution. - `loyalty_get_offer_programs_offers` _(read)_ — Retrieves a paginated list of rewards (offers) configured for a loyalty program. Results can be filtered by state and version (draft or active). The default… - `loyalty_create_reward` _(write)_ — Creates a new reward (offer) in a loyalty program. The `name` field is required (max 128 characters). Optional fields include a public-facing name, description… - `loyalty_create_voucher` _(write)_ — Creates a voucher and attributes it to a specific membership. Either `contactId` or `loyaltySubscriptionId` must be provided to identify the target… - `loyalty_redeem_voucher` _(write)_ — Creates a redemption request for a voucher. The voucher can be identified either by `code` or by `attributedRewardId`. A `contactId` or `loyaltySubscriptionId`… - `loyalty_complete_redeem_transaction` _(write)_ — Completes a pending voucher redemption request. Only redemptions in a pending state can be completed. Once completed, the voucher is marked as consumed and any… - `loyalty_revoke_vouchers` _(destructive)_ — Revokes one or more attributed vouchers by their IDs. Provide a comma-separated list of attributed reward IDs via the `attributedRewardIds` query parameter.… - `loyalty_validate_reward` _(write)_ — Validates whether a reward can be redeemed for a given contact or subscription. The voucher can be identified either by `code` or by `attributedRewardId`.… - `loyalty_get_offer_programs_rewards_by_rid` _(read)_ — Retrieves the full details of a reward by its ID, including configuration, rules, code generation settings, limits, products, and attribution/redemption… - `loyalty_get_offer_programs_vouchers` _(read)_ — Retrieves a paginated list of vouchers attributed to a specific contact within a loyalty program. The `contactId` query parameter is required (must be >= 1).… - `loyalty_add_subscription_to_tier` _(write)_ — Manually assigns a tier to a contact's subscription in a loyalty program. The contact must have an active subscription. An optional request body can include… - `loyalty_get_list_of_tier_groups` _(read)_ — Retrieves all tier groups configured for a loyalty program. Each tier group defines an independent hierarchy of tiers with its own upgrade and downgrade… - `loyalty_create_tier_group` _(write)_ — Creates a new tier group in a loyalty program. A tier group defines an independent hierarchy of tiers with its own upgrade and downgrade strategies. The `name`… - `loyalty_delete_tier_group` _(destructive)_ — Deletes a tier group from a loyalty program. All tiers within the group are also removed. The changes take effect with the next publication of the loyalty… - `loyalty_get_tier_group` _(read)_ — Retrieves the full details of a tier group by its ID, including name, upgrade and downgrade strategies, tier ordering, and schedule configurations. Use the… - `loyalty_update_tier_group` _(write)_ — Replaces a tier group's configuration with the provided data. This is a full replacement (PUT); all required fields must be provided. The changes take effect… - `loyalty_create_tier_for_tier_group` _(write)_ — Creates a new tier within a tier group. The `name` (max 128 characters) and `accessConditions` (at least one required) fields are mandatory. Access conditions… - `loyalty_get_program_tier` _(read)_ — Retrieves all tiers configured for a loyalty program across all tier groups. Use the `version` parameter to fetch either the currently active tiers or the… - `loyalty_delete_tier` _(destructive)_ — Deletes a tier from a loyalty program. Contacts currently assigned to the deleted tier will need to be reassigned. The changes take effect with the next… - `loyalty_update_tier` _(write)_ — Replaces an existing tier's configuration with the provided data. This is a full replacement (PUT); the `name`, `accessConditions`, and `tierRewards` fields… - `notes_get_crm_notes` _(read)_ — Retrieve a paginated list of CRM notes with optional filtering by entity type, entity IDs, and date range. Results are sorted by creation date in descending… - `notes_post_crm_notes` _(write)_ — Create a new CRM note and associate it with at least one contact, company, or deal. The note text content is required and cannot be empty. The text supports… - `notes_delete_crm_notes_by_id` _(destructive)_ — Permanently delete a CRM note by its identifier. This removes the note and unlinks it from any associated contacts, companies, or deals. The authenticated user… - `notes_get_crm_notes_by_id` _(read)_ — Retrieve the full details of a single CRM note by its identifier. The response includes the note's text content, creation and update timestamps, author… - `notes_patch_crm_notes_by_id` _(write)_ — Update an existing CRM note's text content and its associations with contacts, companies, or deals. You can modify the note text, update the linked entities,… - `objects_upsertrecords` _(write)_ — Custom objects are only available to Enterprise plans. This feature is in beta. These are subject to change. This… - `objects_getrecords` _(read)_ — Custom objects are only available to Enterprise plans. This feature is in beta. These are subject to change. This… - `objects_batch_delete_object_records` _(write)_ — Use this endpoint to delete multiple object records of the same object-type in one request. The request is accepted and processed asynchronously. You can track… - `payments_create_payment_request` _(write)_ — Create a new payment request for a Brevo contact. The request requires a reference (displayed on the payment page), a contact ID, and a cart with currency and… - `payments_delete_payment_request` _(destructive)_ — Delete a payment request by its UUID. Once deleted, the payment request can no longer be accessed or paid. Returns a `404` error if no payment request matches… - `payments_get_payment_request` _(read)_ — Retrieve the details of a specific payment request by its ID. The response includes the reference, status (created, sent, reminderSent, or paid), cart details,… - `pipelines_get_crm_pipeline_details` _(read)_ — This endpoint is deprecated. Use `/crm/pipeline/details/{pipelineID}` or `/crm/pipeline/details/all` instead to retrieve pipeline stages for a specific… - `pipelines_get_crm_pipeline_details_all` _(read)_ — Retrieve the list of all deal pipelines configured for your account, including each pipeline's stages. Each stage includes its name, ID, and win probability.… - `pipelines_get_crm_pipeline_details_by_pipeline_id` _(read)_ — Retrieve the details of a specific deal pipeline by its identifier, including its stages and their win probabilities. Use this endpoint to obtain the pipeline… - `processes_get_processes` _(read)_ — Retrieves a list of background processes from your Brevo account with filtering and pagination. **Use this to:** - Monitor background process activity and… - `processes_get_process` _(read)_ — Retrieves detailed information about a specific background process. **Use this to:** - Get detailed status of a specific process - Monitor process progress and… - `products_get_products` _(read)_ — Retrieve a paginated list of all ecommerce products stored in your Brevo account. Results are sorted by creation date in descending order by default, and can… - `products_create_update_product` _(write)_ — Create a new ecommerce product or update an existing one, identified by the mandatory `id` field. When `updateEnabled` is `false` (the default), the endpoint… - `products_create_update_batch_products` _(write)_ — Create or update multiple ecommerce products in a single request. The `products` array accepts up to 100 product objects for creation (or up to 1000 when… - `products_get_product_info` _(read)_ — Retrieve the full details of a single ecommerce product by its unique ID. The response includes the product name, price, SKU, URL, image URLs (original and… - `products_create_product_alert` _(write)_ — Register a contact to receive an alert for a specific product event, such as `back_in_stock`. At least one contact identifier (`ext_id`, `email`, or `sms`)… - `segments_get_segments` _(read)_ — Retrieve all contact segments defined in your Brevo account with support for pagination and sorting. Results default to 10 segments per page (maximum 50)… - `senders_get_senders` _(read)_ — Retrieves a list of all email senders from your Brevo account with optional filtering. **Use this to:** - Get all available senders for email campaign setup -… - `senders_create_sender` _(write)_ — Creates a new email sender in your Brevo account. Both `name` and `email` are required fields. **Use this to:** - Add new senders for email campaigns -… - `senders_delete_sender` _(destructive)_ — Deletes an email sender from your Brevo account. The sender ID must be a valid positive integer. Use this to: - Remove senders that are no longer needed -… - `senders_update_sender` _(write)_ — Updates an existing email sender's configuration. At least one field (name, email, or ips) must be provided. Use this to: - Modify sender display name or email… - `senders_validate_sender_by_otp` _(write)_ — Validates a sender using the OTP (One-Time Password) received via email. Use this to: - Complete sender verification process - Activate a newly created sender… - `sms_campaigns_get_sms_campaigns` _(read)_ — Retrieve a paginated list of all your SMS campaigns with their statistics and recipient information. Results can be filtered by status and date range, with a… - `sms_campaigns_create_sms_campaign` _(write)_ — Create a new SMS campaign with the required name, sender, and content fields. The sender name is limited to 11 alphanumeric characters or 15 numeric… - `sms_campaigns_delete_sms_campaign` _(destructive)_ — Delete an SMS campaign by its campaign ID. Only campaigns that have not been scheduled or sent can be deleted; attempting to delete a campaign that is queued,… - `sms_campaigns_get_sms_campaign` _(read)_ — Retrieve detailed information about a specific SMS campaign by its ID, including campaign content, sender, recipients with list names, statistics (delivered,… - `sms_campaigns_update_sms_campaign` _(write)_ — Update an existing SMS campaign's properties such as name, sender, content, recipients, scheduled date, organisation prefix, and unsubscribe instructions. The… - `sms_campaigns_request_sms_recipient_export` _(write)_ — Export the recipients of a sent SMS campaign as an asynchronous process, filtered by recipient type (e.g. delivered, answered, hardBounces). The recipientsType… - `sms_campaigns_send_sms_campaign_now` _(write)_ — Send an existing SMS campaign immediately by scheduling it for the current time. The system verifies your account's SMS credit balance before dispatching; if… - `sms_campaigns_send_sms_report` _(write)_ — Send a PDF report of an SMS campaign to the specified email addresses. The report includes campaign statistics such as deliveries, bounces, answered, and… - `sms_campaigns_send_test_sms` _(write)_ — Send a test SMS to a specified phone number to preview the campaign before sending it to all recipients. The phone number must belong to one of your existing… - `sms_campaigns_update_sms_campaign_status` _(write)_ — Update the status of an SMS campaign, such as suspending, archiving, or replicating it. Available status values are: suspended, archive, darchive, sent,… - `tasks_get_crm_tasks` _(read)_ — Retrieve a paginated list of CRM tasks with optional filtering by task type, status, date range, assignee, and linked entities (contacts, deals, companies).… - `tasks_post_crm_tasks` _(write)_ — Create a new CRM task with the specified name, type, due date, and optional associations to contacts, companies, or deals. A task requires a name, task type… - `tasks_delete_crm_tasks_by_id` _(destructive)_ — Permanently delete a CRM task by its identifier. This removes the task and cancels any associated reminders. The requesting user must be the task assignee or… - `tasks_get_crm_tasks_by_id` _(read)_ — Retrieve the full details of a single CRM task by its identifier. The response includes the task's name, type, status, due date, duration, notes, assignee,… - `tasks_patch_crm_tasks_by_id` _(write)_ — Update an existing CRM task's properties such as name, type, due date, status, duration, notes, assignee, reminder, or linked entities. Only the fields… - `tasks_get_crm_tasktypes` _(read)_ — Retrieve the list of all available task types for your account. The default task types are Email, Call, Todo, Meeting, Lunch, Deadline, and LinkedIn. If no… - `templates_post_preview_smtp_email_templates` _(write)_ — Generate a fully rendered preview of a transactional email template by resolving dynamic variables. Provide either an `email` address (to populate variables… - `templates_get_smtp_templates` _(read)_ — Retrieve a paginated list of all transactional email templates (including automation templates) with their details such as name, subject, sender, status, HTML… - `templates_create_smtp_template` _(write)_ — Create a new transactional email template with the specified sender, subject, and content. The `sender`, `subject`, and `templateName` fields are required.… - `templates_delete_smtp_template` _(destructive)_ — Permanently delete a transactional email template by its numeric ID. Only inactive templates can be deleted; attempting to delete an active template returns a… - `templates_get_smtp_template` _(read)_ — Retrieve the full details of a specific transactional email template by its numeric ID or custom template identifier string. The response includes the template… - `templates_update_smtp_template` _(write)_ — Update an existing transactional email template by its numeric ID or custom template identifier string. All fields in the request body are optional; only the… - `templates_send_test_template` _(write)_ — Send a test email of the specified transactional template to one or more recipients. Provide an array of email addresses in the `emailTo` field; if left empty,… - `transac_templates_get_transac_blocked_contacts` _(read)_ — Retrieve a paginated list of transactional contacts that have been blocked or unsubscribed, along with the reason for blocking (e.g. hard bounce, admin… - `transac_templates_delete_smtp_blocked_contacts_by_email` _(destructive)_ — Unblock or resubscribe a transactional contact by removing their email address from the blocklist. The email address must be URL-encoded in the path parameter… - `transac_templates_get_blocked_domains` _(read)_ — Retrieve the complete list of domains that have been blocked for transactional email sending. Blocked domains prevent any transactional email from being sent… - `transac_templates_block_new_domain` _(write)_ — Block a new domain to prevent transactional emails from being sent to any recipient at that domain. The `domain` field is required and must be a valid domain… - `transac_templates_delete_blocked_domain` _(destructive)_ — Remove a domain from the blocked domains list, allowing transactional emails to be sent to recipients at that domain again. The domain name must be a valid… - `transac_templates_delete_hardbounces` _(write)_ — Delete hard bounce records from the blocklist, to be used carefully (e.g. in case of temporary ISP failures). You can filter by `contactEmail` (a specific… - `transac_templates_send_transac_email` _(write)_ — Send a transactional email to one or more recipients, either using inline HTML content or a pre-built template via `templateId`. You can schedule emails for… - `transac_templates_delete_scheduled_email_by_id` _(destructive)_ — Delete scheduled transactional emails, either a batch by its UUIDv4 `batchId` or a single email by its `messageId` (enclosed in angle brackets with an @ sign).… - `transac_templates_get_scheduled_email_by_id` _(read)_ — Fetch the status of scheduled transactional emails, either a batch by its UUIDv4 `batchId` or a single email by its `messageId` (enclosed in angle brackets… - `transac_templates_get_transac_emails_list` _(read)_ — Retrieve a paginated list of sent transactional emails. At least one filter is required: `email`, `templateId`, or `messageId`. Without date filters, the API… - `transac_templates_get_transac_email_content` _(read)_ — Retrieve the full content and event history of a specific sent transactional email by its unique ID (uuid). The response includes the recipient email, subject,… - `transac_templates_delete_smtp_log_by_identifier` _(destructive)_ — Delete SMTP transactional log entries identified by a message ID (enclosed in angle brackets with an @ sign, e.g. ``) or a valid email… - `transac_templates_send_async_transactional_sms` _(write)_ — Send a transactional SMS message asynchronously to a single mobile number. This endpoint has the same request body as `POST /transactionalSMS/sms` but returns… - `transac_templates_send_transac_sms` _(write)_ — Send a transactional SMS message to a single mobile number. The `sender`, `recipient`, and either `content` or `templateId` fields are required. The sender… - `transac_templates_get_transac_aggregated_sms_report` _(read)_ — Retrieve an aggregated report of your transactional SMS activity over a specified time period, including counts for requests, delivered, hard bounces, soft… - `transac_templates_get_sms_events` _(read)_ — Retrieve a paginated list of individual SMS event records (unaggregated), including event type, phone number, message ID, timestamp, tag, and reason or reply… - `transac_templates_get_transac_sms_report` _(read)_ — Retrieve a day-by-day breakdown of your transactional SMS activity, with each entry containing the date and counts for requests, delivered, hard bounces, soft… - `transac_templates_get_sms_templates` _(read)_ — Retrieve a paginated list of all your SMS templates with their content, compliance settings, and media attachments. Results are paginated with a default limit… - `users_get_invited_users_list` _(read)_ — Retrieves the list of all users associated with your organization, including both active and pending invited users. Each user entry includes their email… - `users_put_revoke_user_permission` _(write)_ — Revokes all permissions for an invited user in the organization, effectively removing their access to the platform. If the user's plan change generated credit… - `users_inviteuser` _(write)_ — Invites a new user to the organization by sending an invitation email with specified feature permissions. Each feature represents a specific functionality… - `users_putresendcancelinvitation` _(write)_ — Resends or cancels a pending invitation for a user in the organization, depending on the action path parameter. Use `resend` to send a new invitation email to… - `users_edit_user_permission` _(write)_ — Updates the feature-level permissions for an existing user in the organization. The privileges array follows the same structure as the send invitation… - `users_get_user_permission` _(read)_ — Retrieves the granular feature-level permissions assigned to a specific user in the organization, identified by their email address. The response includes the… - `webhooks_management_get_webhooks` _(read)_ — Retrieves all webhooks from your Brevo account with filtering and sorting options. If no `type` filter is specified, transactional webhooks are returned by… - `webhooks_management_create_webhook` _(write)_ — Creates a new webhook to receive real-time notifications for specified events. You can create up to 40 active webhooks per account (excluding inbound type… - `webhooks_management_export_webhooks_history` _(write)_ — This is an enterprise feature. To have it activated please send us a request and we will activate it for your account. Exports webhook event… - `webhooks_management_delete_webhook` _(destructive)_ — Permanently deletes a webhook and stops all event notifications. Use this to: - Remove unused or obsolete webhook configurations - Clean up webhook endpoints… - `webhooks_management_get_webhook` _(read)_ — Retrieves detailed information about a specific webhook configuration. Use this to: - Get complete webhook configuration and settings - Check webhook event… - `webhooks_management_update_webhook` _(write)_ — Updates an existing webhook configuration and event subscriptions. The webhook type (marketing, transactional, or inbound) cannot be changed after creation --… - `whatsapp_campaigns_get_whats_app_campaigns` _(read)_ — Retrieve a paginated list of all your WhatsApp campaigns with their statistics and metadata. Results can be filtered by creation date range using startDate and… - `whatsapp_campaigns_create_whats_app_campaign` _(write)_ — Create a new WhatsApp campaign and schedule it for sending. The campaign requires a name, an approved WhatsApp template ID, a scheduled sending time, and… - `whatsapp_campaigns_get_whats_app_config` _(read)_ — Retrieve the configuration and status of your WhatsApp Business API account, including verification status, phone number name status, phone number quality… - `whatsapp_campaigns_get_whats_app_templates` _(read)_ — Retrieve a paginated list of all your WhatsApp templates with their status, category, language, and metadata. Results can be filtered by creation date range… - `whatsapp_campaigns_send_whats_app_template_approval` _(write)_ — Submit a WhatsApp template for approval by Meta. The template must exist and be in a state that allows submission (e.g. draft or rejected). Once approved, the… - `whatsapp_campaigns_delete_whats_app_campaign` _(destructive)_ — Delete a WhatsApp campaign by its campaign ID. The campaign must exist; if the campaign ID is not found, a 404 error is returned. This action is permanent and… - `whatsapp_campaigns_get_whats_app_campaign` _(read)_ — Retrieve detailed information about a specific WhatsApp campaign by its ID, including campaign status, recipients, sender number, template details, and… - `whatsapp_campaigns_update_whats_app_campaign` _(write)_ — Update an existing WhatsApp campaign's name, status, recipients, or scheduled sending time. The campaign must exist and be in a modifiable state (draft or… - `whatsapp_management_create_whats_app_template` _(write)_ — Create a new WhatsApp message template with the specified name, language, category, and body text. Templates can optionally include a text header (max 45… - `whatsapp_management_send_whatsapp_message` _(write)_ — Send a WhatsApp message to one or more contacts. You must have your WhatsApp account set up on the Brevo platform before using this endpoint. The first message… - `whatsapp_management_get_whatsapp_event_report` _(read)_ — Retrieve a paginated list of individual WhatsApp event records (unaggregated), including event type, contact number, sender number, message ID, timestamp, and… --- ## Connect Gateway URL: https://gateway.mewcp.com/personal/mcp Every request carries one header: Authorization: Bearer Replace `API_KEY` with your own key from the dashboard (Developer). ## Apps ### Claude Desktop Mac & Windows app - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` - Windows: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "mewcp": { "command": "npx", "args": [ "-y", "mcp-remote@latest", "https://gateway.mewcp.com/personal/mcp", "--header", "Authorization: Bearer API_KEY" ] } } } ``` Already have an "mcpServers" section in your config? Just add the server entry inside it. 1. Open Claude Desktop → Settings → Developer → "Edit Config" 2. Paste the snippet inside the outer { } of the config file (merge with your existing "mcpServers" section if you have one) 3. Save the file and restart Claude Desktop 4. Start a new conversation — your tool will be available ### VS Code Copilot / Cline - Command Palette → "MCP: Open User Configuration" (opens mcp.json). For one project only, use .vscode/mcp.json instead. ```json { "mcp.servers": { "mewcp": { "type": "http", "url": "https://gateway.mewcp.com/personal/mcp", "headers": { "Authorization": "Bearer API_KEY" } } } } ``` Already have a "servers" section in your mcp.json? Just add the server entry inside it. 1. Open VS Code → Command Palette (Cmd+Shift+P / Ctrl+Shift+P) 2. Run "MCP: Open User Configuration" to open your mcp.json 3. Paste the snippet and save 4. Start the server when prompted (or from the MCP servers view) and use it in Copilot Chat ### Cursor AI-first editor - macOS: `~/.cursor/mcp.json` - Windows: `%USERPROFILE%\.cursor\mcp.json` ```json { "mcpServers": { "mewcp": { "url": "https://gateway.mewcp.com/personal/mcp", "headers": { "Authorization": "Bearer API_KEY" } } } } ``` Already have an "mcpServers" section in your mcp.json? Just add the server entry inside it. 1. Open Cursor → Settings → Cursor Settings → MCP 2. Click "Add new global MCP server" 3. Paste the snippet and save 4. Restart Cursor ### Codex OpenAI's CLI agent - Add the snippet to your Codex MCP config or your standard MCP config file for the CLI tool you use. ```json { "mcpServers": { "mewcp": { "type": "http", "url": "https://gateway.mewcp.com/personal/mcp", "headers": { "Authorization": "Bearer API_KEY" } } } } ``` Codex generally reads a standard MCP server block, so you can add this alongside your other configured servers. 1. Open your Codex MCP config or project-level config file 2. Paste the MewCP server block inside the config JSON/TOML structure your tool expects 3. Save the file and restart Codex 4. Verify the tool is available inside a fresh session ### Claude Code Anthropic's CLI agent - ~/.claude.json (user scope) or .mcp.json in your project root — create it if it doesn't exist. Or skip the file and use the CLI command below. ```json { "mcpServers": { "mewcp": { "type": "http", "url": "https://gateway.mewcp.com/personal/mcp", "headers": { "Authorization": "Bearer API_KEY" } } } } ``` Already have an "mcpServers" section in your config? Just add the server entry inside it. 1. Open ~/.claude.json (or .mcp.json in your project root) in a text editor 2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one) 3. Save the file and start (or restart) Claude Code 4. Or skip the file entirely and run the CLI command below instead ### OpenCode Open-source terminal agent - ~/.config/opencode/opencode.json (global) or opencode.json in your project root — create it if it doesn't exist. ```json { "$schema": "https://opencode.ai/config.json", "mcp": { "mewcp": { "type": "remote", "url": "https://gateway.mewcp.com/personal/mcp", "enabled": true, "headers": { "Authorization": "Bearer API_KEY" } } } } ``` Already have an "mcp" section in your opencode.json? Just add the server entry inside it. 1. Open ~/.config/opencode/opencode.json (or opencode.json in your project root) in a text editor 2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one) 3. Save the file and start (or restart) OpenCode ### OpenClaw Self-hosted agent gateway - ~/.openclaw/openclaw.json — create it if it doesn't exist. ```json { "mcp": { "servers": { "mewcp": { "transport": "streamable-http", "url": "https://gateway.mewcp.com/personal/mcp", "enabled": true, "headers": { "Authorization": "Bearer API_KEY" } } } } } ``` Already have an "mcp" section in your openclaw.json? Just add the server entry inside "servers". 1. Open ~/.openclaw/openclaw.json in a text editor 2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one) 3. Save the file and restart OpenClaw ### Antigravity Google's agentic IDE - ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (workspace-local) — create it if it doesn't exist. ```json { "mcpServers": { "mewcp": { "serverUrl": "https://gateway.mewcp.com/personal/mcp", "headers": { "Authorization": "Bearer API_KEY" } } } } ``` Already have an "mcpServers" section in your config? Just add the server entry inside it. Remote servers must use the "serverUrl" field — the legacy "url"/"httpUrl" fields aren't supported. 1. In the editor's agent side panel, click "…" → "MCP Servers" → "Manage MCP Servers" → "View raw config" (Antigravity CLI: type /mcp instead to open the Interactive MCP Manager) 2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one) 3. Save the file — the server connects automatically ### Hermes Nous Research's CLI agent - config.yaml in your Hermes config directory (~/.hermes) — add this under a top-level "mcp_servers:" key. ```yaml mcp_servers: mewcp: url: "https://gateway.mewcp.com/personal/mcp" headers: Authorization: "Bearer API_KEY" ``` Already have an "mcp_servers" section in your config.yaml? Just add the server entry inside it. 1. Open config.yaml in your Hermes config directory 2. Paste the snippet under the top-level "mcp_servers:" key (merge with existing entries if you have any) 3. Save the file, then run /reload-mcp in Hermes (or start a fresh session) 4. Ask Hermes "Tell me which MCP-backed tools are available right now" to confirm it connected ### DeepSeek Harness DeepSeek's agent harness - cordis.yml in your DSH project — or the patch file you mount plugins from. ```yaml - id: mcp-mewcp name: '@deepseek-ai/dsh-mcp-client' config: serverName: mewcp transport: streamable-http url: https://gateway.mewcp.com/personal/mcp headers: Authorization: "Bearer API_KEY" ``` One plugin instance = one MCP server. Add this entry to your plugin list; don't nest it inside another entry. 1. Open cordis.yml (or your patch file) in your DSH project 2. Paste the entry into your plugin list, keeping the leading dash and indentation 3. Restart DSH (or let HMR reload) — tools register as mcp__mewcp__ 4. Verify with: dsh web --dump-config | grep -A3 mcp ## SDKs ### Python fastmcp client ```python import asyncio from fastmcp import Client from fastmcp.client.transports import StreamableHttpTransport SERVER_URL = "https://gateway.mewcp.com/personal/mcp" API_KEY = "API_KEY" transport = StreamableHttpTransport( url=SERVER_URL, headers={ "Authorization": f"Bearer {API_KEY}", } ) async def main(): client = Client(transport) async with client: tools = await client.list_tools() print(tools) asyncio.run(main()) ``` 1. Install fastmcp: pip install fastmcp 2. Copy the snippet into your project 3. Replace API_KEY with your key from the dashboard 4. Run your script ### TypeScript MCP SDK ```typescript import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; const SERVER_URL = "https://gateway.mewcp.com/personal/mcp"; const API_KEY = "API_KEY"; const transport = new StreamableHTTPClientTransport(new URL(SERVER_URL), { requestInit: { headers: { Authorization: `Bearer ${API_KEY}`, }, }, }); const client = new Client({ name: "mewcp-client", version: "1.0.0" }); await client.connect(transport); const tools = await client.listTools(); console.log(tools.tools.map((t) => t.name)); ``` 1. Install: npm install @modelcontextprotocol/sdk 2. Copy the snippet into your project 3. Replace API_KEY with your key from the dashboard 4. Run with Node 18+ as an ES module (e.g. npx tsx script.ts)