El catálogo/Brevo
Brevo
app.brevo
Send emails, manage contacts, lists, templates, and campaigns in Brevo
Versión2.0.0
Categoríacommunication
AutenticaciónClave de API
Herramientas23
Transportestdio
LicenciaMIT
01
Qué hace
La aplicación, en sus propias palabras.
Brevo email marketing — send transactional emails, manage contacts and lists, create email templates, and browse email campaigns through the Brevo API.
02
Herramientas
23 herramientas que el agente puede llamar.
Todas se declaran con parámetros tipados y devuelven resultados estructurados, así que el anfitrión puede renderizarlas en vez de narrarlas.
- add-contact-to-listAdd contacts to a Brevo list (POST /contacts/lists/{listId}/contacts/add). Identify contacts by emails[] and/or ids[]. Returns { listId, success, failure } (contacts that were / were not added). Params: listId (required, integer), emails? (string[]), ids? (number[]).
- create-contactCreate (or update) a contact in Brevo (POST /contacts). Returns { id, email, listIds, updated }. Set updateEnabled:true to update an existing contact instead of failing on a duplicate. Params: email (required), attributes? (e.g. { FIRSTNAME, LASTNAME, SMS }), listIds? (number[]), updateEnabled? (default false).
- create-email-campaignCreate an email campaign (newsletter) in Brevo (POST /emailCampaigns). Returns { id, name, subject, scheduledAt }. Provide content via EXACTLY ONE of htmlContent (>=10 chars), htmlUrl or templateId. sender is { email } XOR { id }. Add recipients{listIds} to target lists; if scheduledAt (ISO 8601) is set, listIds is required. Without scheduledAt the campaign is a draft you send later with send-email-campaign. Params: name (required), subject (required), sender{email?,id?,name?} (required), htmlContent?, htmlUrl?, templateId?, recipients{listIds?,exclusionListIds?,segmentIds?}?, scheduledAt?, replyTo?, toField?, tag?, previewText?.
- create-email-templateCreate a transactional email template in Brevo (POST /smtp/templates). Returns { id, templateName, subject, isActive }. Templates are INACTIVE by default — set isActive:true to enable. sender takes EITHER {email} (a verified sender) OR {id} (a Brevo sender id), not both. Provide htmlContent (>=10 chars) or htmlUrl. Params: templateName (required), subject (required), sender{email?,id?,name?} (required), htmlContent?, htmlUrl?, isActive?, replyTo?, toField?, tag?, attachmentUrl?.
- create-listCreate a contact list in Brevo (POST /contacts/lists). Returns { id, name, folderId }. Lists live inside a folder — pass a folderId (call list-folders to find one). Params: name (required), folderId (required, integer).
- delete-contactDelete a contact permanently from Brevo (DELETE /contacts/{identifier}). IRREVERSIBLE — the contact and its history are removed. Returns { identifier, deleted }. Params: identifier (required — the contact email or id).
- get-aggregated-smtp-reportGet aggregated transactional email stats from Brevo (GET /smtp/statistics/aggregatedReport): totals over a timeframe. Returns { range, requests, delivered, opens, uniqueOpens, clicks, uniqueClicks, hardBounces, softBounces, blocked, invalid, spamReports, unsubscribed }. Timeframe: pass days (1-90) OR a startDate+endDate range (YYYY-MM-DD), not both; defaults to the last 90 days. Params: startDate?, endDate?, days?, tag? (filter by email tag).
- get-contactGet one contact by email or id from Brevo (GET /contacts/{identifier}). Returns { id, email, emailBlacklisted, smsBlacklisted, listIds, attributes, createdAt, modifiedAt }. Params: identifier (required — the contact email or id).
- get-email-campaignGet one email campaign by id from Brevo (GET /emailCampaigns/{campaignId}). Returns { id, name, subject, type, status, scheduledAt, createdAt, modifiedAt }. Params: campaignId (required, integer).
- get-email-event-reportGet transactional email events from Brevo (GET /smtp/statistics/events): per-message delivery events (delivered, opened, clicks, bounces, spam, unsubscribed...). Returns { events:[{date,email,event,messageId,subject,tag,reason,link,from,templateId}], count, limit, offset }. Timeframe: pass days (1-90) OR a startDate+endDate range (YYYY-MM-DD), not both; defaults to the last 30 days. Params: limit? (1-5000, default 100), offset? (default 0), startDate?, endDate?, days?, email?, event? (bounces|hardBounces|softBounces|delivered|spam|requests|opened|clicks|invalid|deferred|blocked|unsubscribed|error|loadedByProxy), messageId?, templateId?, sort? (asc|desc, default desc).
- import-contactsBulk-import contacts into Brevo lists (POST /contacts/import). Provide EITHER jsonBody[] (inline contacts) OR fileUrl (a .csv/.json/.txt file), never both. Runs asynchronously — returns { processId, listIds, contactCount, source }. Params: jsonBody? ([{ email (required), attributes? }]), fileUrl? (http(s) URL), listIds (required, integer[] — the target lists), updateExistingContacts? (default false — update contacts that already exist instead of skipping them).
- list-attributesList the contact attributes defined in the Brevo account (GET /contacts/attributes). Use it to discover valid attribute keys (e.g. FIRSTNAME, LASTNAME, custom fields) before creating/updating/importing contacts. Returns { attributes:[{name,category,type}], count }. No params.
- list-contactsList contacts from Brevo (GET /contacts). Returns { contacts:[{id,email,emailBlacklisted,smsBlacklisted,listIds,attributes,createdAt,modifiedAt}], count, limit, offset }. Params: limit? (1-1000, default 50), offset? (default 0).
- list-email-campaignsList email campaigns from Brevo (GET /emailCampaigns). Returns { campaigns:[{id,name,subject,type,status,scheduledAt,createdAt,modifiedAt}], count, type, status, limit, offset }. Params: type? (classic|trigger), status? (draft|sent|archive|queued|suspended|inProcess), limit? (1-100, default 50), offset? (default 0).
- list-email-templatesList transactional email templates from Brevo (GET /smtp/templates). Returns { templates:[{id,name,subject,isActive,testSent,sender,replyTo,toField,tag,createdAt,modifiedAt}], count, templateStatus, limit, offset }. Params: templateStatus? (true=active only, false=inactive only, omit for all), limit? (1-1000, default 50), offset? (default 0).
- list-foldersList contact folders from Brevo (GET /contacts/folders). Folders group contact lists; a folderId is required to create a list, so use this to discover one. Returns { folders:[{id,name,totalSubscribers,uniqueSubscribers,totalBlacklisted}], count, limit, offset }. Params: limit? (1-50, default 50), offset? (default 0).
- list-listsList contact lists from Brevo (GET /contacts/lists). Returns { lists:[{id,name,folderId,totalSubscribers,uniqueSubscribers,totalBlacklisted}], count, limit, offset }. Params: limit? (1-50, default 50), offset? (default 0).
- list-segmentsList the contact segments (saved filters) in the Brevo account (GET /contacts/segments). Their ids can be used as recipients.segmentIds in create-email-campaign. Returns { segments:[{id,segmentName,categoryName,updatedAt}], count, limit, offset, sort }. Params: limit? (1-50, default 10), offset? (default 0), sort? (asc | desc — by creation date, default desc).
- remove-contact-from-listRemove contacts from a Brevo list (POST /contacts/lists/{listId}/contacts/remove). Identify contacts by emails[] and/or ids[]. Returns { listId, success, failure } (contacts that were / were not removed). Params: listId (required, integer), emails? (string[]), ids? (number[]).
- send-email-campaignSend an email campaign immediately (POST /emailCampaigns/{campaignId}/sendNow). IRREVERSIBLE — delivers to every recipient with no undo. The campaign must be a draft with recipients set. Returns { campaignId, sent }. Params: campaignId (required, integer).
- send-test-emailSend a test of an email campaign to specific addresses (POST /emailCampaigns/{campaignId}/sendTest). Delivers REAL emails to the given testers. Returns { campaignId, emailTo }. Params: campaignId (required, integer), emailTo (required, array of up to 99 email addresses).
- send-transactional-emailSend a transactional email via Brevo (POST /smtp/email). Returns { messageId, subject, sender, recipients, recipientCount }. The sender email MUST be a verified sender or domain in the Brevo account. Provide htmlContent and/or textContent (at least one). Params: sender{email,name?}, to[{email,name?}] (>=1), subject, htmlContent?, textContent?, cc?, bcc?, replyTo{email,name?}?, params? (template variables), tags?.
- update-contactUpdate a contact in Brevo (PUT /contacts/{identifier}). Returns { identifier, updated, listIds, unlinkListIds }. Attributes must already exist in the account (pass them UPPERCASE). listIds adds the contact to lists, unlinkListIds removes it. Params: identifier (required — email or id), attributes? (e.g. { FIRSTNAME }), emailBlacklisted?, smsBlacklisted?, listIds? (number[]), unlinkListIds? (number[]).
03
Autenticación y permisos
Qué pide.
Declarado en el manifiesto y por adelantado. La aplicación no puede alcanzar nada que no haya pedido aquí.
Secretos de usuario
BREVO_API_KEY
Seguir leyendo
El manifiesto y el código de Brevo están en el monorepo, junto al resto de aplicaciones.