MCP Abilities - Brevo
Brevo (Sendinblue) integration for WordPress via MCP. Manage contacts, lists, and send emails.
by basicus · github.com/bjornfix/mcp-abilities-brevo · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/bjornfix/mcp-abilities-brevo/releases/download/v1.0.8/mcp-abilities-brevo.zipReadme
MCP Abilities – Brevo
Manage Brevo contacts, lists, forms, localization, and email operations through authenticated WordPress abilities for MCP.
- Tested up to: WordPress 7.0
- Stable tag: 1.0.11
- License: GPLv2 or later
- Tags: mcp, brevo, sendinblue, email, wonderpush
What It Does
Brevo (Sendinblue) abilities for MCP. Manage contacts, lists, WonderPush localization, and send emails via Brevo API.
It gives an MCP-capable agent a focused, authenticated way to work with Brevo inside WordPress.
Example: "Handle this WordPress maintenance task directly." - The agent can inspect the site, call the relevant ability, and return the result without making the human click through wp-admin for every step.
The Real Workflow
In practice, the human should not have to memorize every ability name.
The normal pattern is:
- install the base MCP stack
- install only the add-ons the site actually needs
- let the agent discover the available abilities
- give the agent a clear task with boundaries
- verify the result in WordPress
The human's job is mostly to describe the goal. The agent's job is to figure out the mechanics.
Why This Feels Different
Most WordPress automation still leaves the repetitive part to the human.
This plugin is different because the agent can act inside the site through a narrow, authenticated ability surface:
- inspect current site state before changing anything
- run the specific action needed for the task
- return structured results that are easy to verify
- keep the workflow inside WordPress instead of a separate checklist
That changes the experience from:
Here is what you should do in wp-admin
to:
Tell the agent what needs doing, and let it carry out the work
Before vs After
Before
- ask the AI what to do
- copy the answer into WordPress by hand
- click through wp-admin for the repetitive bits
- postpone maintenance because the task is tedious
After
- tell the agent what needs doing
- let it inspect the relevant WordPress state
- let it run the targeted ability
- verify the result and move on
Who It Is For
This is a good fit for:
- agencies managing WordPress sites with AI-assisted maintenance
- operators who want agents to do real WordPress work instead of producing instructions
- teams already using MCP Expose Abilities
- sites where this WordPress area is updated often enough to deserve automation
It is especially useful when the manual version is repetitive enough that important maintenance gets delayed.
Requirements
- WordPress 6.9 or later and PHP 8.0 or later.
- The WordPress Abilities API and an MCP exposure layer.
- A Brevo account and API key for remote Brevo operations.
- The official Brevo WordPress plugin for abilities that manage its stored signup forms.
Documentation
Start with the plugin page and stable package:
Start Here
If you are new to the stack, use this order:
- Use WordPress 6.9 or newer, where the Abilities API provides the ability registry, schemas, and permission callbacks.
- Install the MCP Adapter to expose registered WordPress abilities through MCP.
- Install MCP Expose Abilities for the Devenia exposure and operating surface.
- Install MCP Abilities - Brevo.
- Install and configure the official Brevo plugin when you need its stored API key or WordPress form operations.
- Confirm the new abilities appear in discovery before changing audience or delivery state.
If you skip base-stack verification and start with add-ons immediately, troubleshooting gets harder than it needs to be.
Dependencies
- WordPress Abilities API — required through WordPress 6.9 or newer; it registers, describes, validates, and permission-checks the abilities exposed by this add-on.
- WordPress MCP Adapter — required for MCP access; it turns registered WordPress abilities into MCP tools that an authenticated client can discover and call.
- Brevo for WordPress — required for the add-on's WordPress form operations and the standard place it reads the Brevo API key used by remote account, audience, delivery, and webhook operations.
Abilities (48)
| Ability | Description |
|---|---|
brevo/api-request |
Call any Brevo v3 endpoint with the configured API key |
brevo/get-account |
Get Brevo account and plan details |
brevo/wonderpush-get-localization |
Read stored WonderPush prompt/widget localization |
brevo/wonderpush-update-localization |
Create or update runtime WonderPush localization for one language |
brevo/wonderpush-audit-localization |
Audit WonderPush localization coverage against known site languages |
brevo/list-contacts |
List contacts with pagination |
brevo/get-contact |
Get a single contact by email or ID |
brevo/create-contact |
Create a contact |
brevo/update-contact |
Update a contact |
brevo/delete-contact |
Delete a contact |
brevo/list-folders |
List contact-list folders |
brevo/get-folder |
Get a contact-list folder |
brevo/create-folder |
Create a contact-list folder |
brevo/update-folder |
Update a contact-list folder |
brevo/delete-folder |
Delete a contact-list folder |
brevo/list-lists |
List contact lists |
brevo/get-list |
Get a list by ID |
brevo/update-list |
Update list metadata |
brevo/delete-list |
Delete a list |
brevo/create-list |
Create a list |
brevo/list-language-audiences |
Audit Brevo language attribute and language-specific lists |
brevo/ensure-language-audiences |
Create missing Brevo language attribute and language-specific lists |
brevo/upsert-language-contact |
Create or update a contact with language attribute and matching list |
brevo/list-wordpress-forms |
List signup forms from the official Brevo WordPress plugin |
brevo/get-wordpress-form |
Get a signup form and shortcode |
brevo/create-wordpress-form |
Create a signup form |
brevo/update-wordpress-form |
Update a signup form |
brevo/delete-wordpress-form |
Delete a signup form |
brevo/ensure-wordpress-form |
Create or update a signup form by title |
brevo/list-attributes |
List contact attributes |
brevo/create-attribute |
Create a custom attribute |
brevo/update-attribute |
Update a custom attribute |
brevo/delete-attribute |
Delete a custom attribute |
brevo/list-senders |
List configured senders |
brevo/list-sender-domains |
List sender domains and authentication status |
brevo/create-sender |
Create a sender identity |
brevo/list-templates |
List email templates |
brevo/get-template |
Get template details |
brevo/list-webhooks |
List webhooks |
brevo/get-webhook |
Get webhook details |
brevo/create-webhook |
Create a webhook |
brevo/update-webhook |
Update a webhook |
brevo/delete-webhook |
Delete a webhook |
brevo/add-to-list |
Add contacts to a list |
brevo/remove-from-list |
Remove contacts from a list |
brevo/send-email |
Send transactional email |
brevo/list-campaigns |
List campaigns |
brevo/send-campaign |
Send a campaign immediately |
Safety and Ownership
- Every registered Brevo ability requires the WordPress
manage_optionscapability. - The generic API ability accepts Brevo v3 relative endpoints and rejects external absolute endpoints.
- Brevo remains the owner of remote contact, audience, campaign, and delivery state.
- The optional
mcp_brevo_site_languagesfilter lets a multilingual integration add its own known languages without a private plugin dependency.
Usage Examples
List all contact lists
{
"ability_name": "brevo/list-lists",
"parameters": { "limit": 50 }
}
Create a contact and add to list
{
"ability_name": "brevo/create-contact",
"parameters": {
"email": "user@example.com",
"listIds": [5],
"attributes": {
"FIRSTNAME": "John",
"LASTNAME": "Doe"
}
}
}
Send transactional email
{
"ability_name": "brevo/send-email",
"parameters": {
"to": [{"email": "recipient@example.com", "name": "Recipient"}],
"sender": {"email": "sender@example.com", "name": "Sender"},
"subject": "Welcome!",
"htmlContent": "<html><body><h1>Hello!</h1></body></html>"
}
}
Create or update a Brevo signup form
{
"ability_name": "brevo/ensure-wordpress-form",
"parameters": {
"title": "Example newsletter",
"listIds": [10],
"includeName": true,
"buttonLabel": "Join the waitlist"
}
}
Ensure language-specific audiences
{
"ability_name": "brevo/ensure-language-audiences",
"parameters": {
"folderId": 12,
"listPrefix": "Example",
"attributeName": "LANGUAGE"
}
}
Upsert a contact into the matching language list
{
"ability_name": "brevo/upsert-language-contact",
"parameters": {
"email": "user@example.com",
"language": "fr",
"listPrefix": "Example"
}
}
Call an endpoint without a typed wrapper
{
"ability_name": "brevo/api-request",
"parameters": {
"method": "GET",
"endpoint": "smtp/statistics/events?limit=50"
}
}
Localize WonderPush subscription UI
{
"ability_name": "brevo/wonderpush-update-localization",
"parameters": {
"language": "fr",
"locale": "fr-FR",
"texts": {
"subscriptionBell": {
"dialogTitle": "Manage notifications",
"subscribeButtonTitle": "Subscribe",
"advancedSettingsDescription": "Your personal notification data:"
},
"subscriptionDialog": {
"positiveButton": "Subscribe",
"negativeButton": "Later"
}
}
}
}
Changelog
1.0.11
- Replaced language-specific public examples and validation guidance with neutral examples.
1.0.10
- Remove a stale campaign-read inventory entry that was not a registered ability.
1.0.9
- Use the current site title instead of a vendor name as the default language-list prefix.
- Let multilingual integrations add site languages through the public
mcp_brevo_site_languagesfilter. - Align public plugin identity and links with the canonical Devenia distribution.
1.0.8
- Fixed: WonderPush localization now also patches Brevo push initialization and audits required subscription-bell text coverage
1.0.7
- Fixed: Language-audience list lookup now respects Brevo contact-list pagination limits
1.0.6
- Added: Language-audience audit for Brevo contact language attributes and per-language lists
- Added: Ability to ensure language-specific Brevo audiences from the site language registry
- Added: Contact upsert ability that stores the normalized language attribute and adds the contact to the matching language list
1.0.5
- Added: Runtime WonderPush localization abilities for prompt/widget text stored in WordPress options
- Added: Frontend WonderPush init-option merge for localized subscription bell, dialog, switch, and opt-in text
- Added: WonderPush localization audit against known site languages
1.0.4
- Added: Generic Brevo v3 API request ability for endpoints not yet wrapped by a typed ability
- Added: Account details ability
- Added: Folder management abilities
- Added: Official Brevo WordPress signup form CRUD and ensure abilities
- Added: Webhook management abilities
- Improved: PATCH and DELETE requests can send JSON bodies when the Brevo endpoint requires them
1.0.3
- Added: Sender, sender domain, template, campaign, list, and attribute operations
1.0.2
- Fixed: Removed hard plugin header dependency on abilities-api to avoid slug-mismatch activation blocking
1.0.1
- Improve API error handling and reuse permission callback
1.0.0
- Initial release with 12 abilities
- Contacts: list, get, create, update, delete
- Lists: list, create, add-to-list, remove-from-list
- Email: send transactional, list campaigns, send campaign
Contributing
PRs welcome. Keep changes focused on the plugin's WordPress ability surface and preserve authenticated, explicit workflows.
License
GPL-2.0+
Author
Links
Star and Share
If this plugin saves you time or makes WordPress maintenance easier to verify, please:
- star the repo
- share it with people running WordPress sites
- point them to the main plugin page so they can see what the ecosystem can actually do
Why do it?
Because agent-friendly open WordPress tooling helps more of the boring but important work get done.
Read the full README on GitHub →