{"openapi":"3.1.0","info":{"title":"Brevo (BYOK) API","version":"0.1.0","description":"Brevo (BYOK) lets an AI assistant read your own Brevo data through the Brevo API with a key you supply (API key). Read-only: 8 tools (get_account, list_contacts, list_contact_lists, list_segments, list_email_campaigns, get_email_campaign_report, list_senders, list_email_templates). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-brevo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-brevo/docs"},"termsOfService":"https://connectorbay.com/byok-brevo/terms"},"servers":[{"url":"https://byok-brevo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-brevo/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_account":{"post":{"operationId":"get_account","summary":"Show the Brevo account the key belongs to: organization, company name, login email, plan type and remaining credits. Use","description":"Show the Brevo account the key belongs to: organization, company name, login email, plan type and remaining credits. Use for \"Which Brevo account is my API key connected to and what plan is it on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_accountArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_contacts":{"post":{"operationId":"list_contacts","summary":"List contacts with email, blacklist flags, list memberships, dates and attributes. Newest first; can be filtered by list","description":"List contacts with email, blacklist flags, list memberships, dates and attributes. Newest first; can be filtered by list, segment or change date. Use for \"Show my most recently added Brevo contacts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result, starting at 0, for paging.","title":"Offset"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: desc (the default) or asc.","title":"Sort"},"modified_since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only contacts modified after this UTC time, format YYYY-MM-DDTHH:mm:ss.SSSZ.","title":"Modified Since"},"created_since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only contacts created after this UTC time, format YYYY-MM-DDTHH:mm:ss.SSSZ.","title":"Created Since"},"list_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated list IDs to restrict to (cannot be combined with segment_id).","title":"List Ids"},"segment_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Segment ID to restrict to (cannot be combined with list_ids).","title":"Segment Id"}},"title":"list_contactsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_contact_lists":{"post":{"operationId":"list_contact_lists","summary":"List the contact lists in the account with their IDs, names and subscriber counts. Use for \"What contact lists do I have","description":"List the contact lists in the account with their IDs, names and subscriber counts. Use for \"What contact lists do I have in Brevo and how many subscribers are in each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result, starting at 0, for paging.","title":"Offset"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: desc (the default) or asc.","title":"Sort"}},"title":"list_contact_listsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_segments":{"post":{"operationId":"list_segments","summary":"List the contact segments with their IDs, names, categories and last update time. Use for \"Which segments exist in my Br","description":"List the contact segments with their IDs, names, categories and last update time. Use for \"Which segments exist in my Brevo account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result, starting at 0, for paging.","title":"Offset"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: desc (the default) or asc.","title":"Sort"}},"title":"list_segmentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_email_campaigns":{"post":{"operationId":"list_email_campaigns","summary":"List email campaigns (newest first) with name, status, subject, send date and, for sent ones, the overall delivery, open","description":"List email campaigns (newest first) with name, status, subject, send date and, for sent ones, the overall delivery, open and click statistics. This only reads campaigns; it never sends one. Use for \"How did my latest Brevo email campaigns perform\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["classic","trigger"],"type":"string"},{"type":"null"}],"default":null,"description":"Campaign type: classic or trigger.","title":"Type"},"status":{"anyOf":[{"enum":["suspended","archive","sent","queued","draft","inProcess","inReview","cancelling","cancelled"],"type":"string"},{"type":"null"}],"default":null,"description":"Campaign status filter.","title":"Status"},"statistics":{"anyOf":[{"enum":["globalStats","linksStats","statsByDomain"],"type":"string"},{"type":"null"}],"default":"globalStats","description":"Which statistics to include: globalStats, linksStats or statsByDomain (only events of the last 6 months).","title":"Statistics"},"exclude_html_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to leave out each campaign's HTML body (recommended, keeps answers small).","title":"Exclude Html Content"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result, starting at 0, for paging.","title":"Offset"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: desc (the default) or asc.","title":"Sort"}},"title":"list_email_campaignsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_email_campaign_report":{"post":{"operationId":"get_email_campaign_report","summary":"Get one email campaign's report: status, subject, send date and delivery, open, click, bounce and unsubscribe statistics","description":"Get one email campaign's report: status, subject, send date and delivery, open, click, bounce and unsubscribe statistics, optionally per link, domain, device or browser. Read only. Use for \"Give me the statistics of Brevo email campaign 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign_id":{"description":"Numeric ID of the campaign (from list_email_campaigns).","title":"Campaign Id","type":"integer"},"statistics":{"anyOf":[{"enum":["globalStats","linksStats","statsByDomain","statsByDevice","statsByBrowser"],"type":"string"},{"type":"null"}],"default":"globalStats","description":"Extra breakdown: globalStats, linksStats, statsByDomain, statsByDevice or statsByBrowser.","title":"Statistics"},"exclude_html_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to leave out the HTML body.","title":"Exclude Html Content"}},"required":["campaign_id"],"title":"get_email_campaign_reportArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_senders":{"post":{"operationId":"list_senders","summary":"List the sender identities (from name and email) with their IDs and whether each is active. Can filter by domain. Use fo","description":"List the sender identities (from name and email) with their IDs and whether each is active. Can filter by domain. Use for \"Which sender addresses are set up in my Brevo account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only senders on this domain, for example 'example.com'.","title":"Domain"}},"title":"list_sendersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_email_templates":{"post":{"operationId":"list_email_templates","summary":"List transactional email templates with name, subject, sender, active flag and dates (the HTML body is not returned). Us","description":"List transactional email templates with name, subject, sender, active flag and dates (the HTML body is not returned). Use for \"What email templates do I have in Brevo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"template_status":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active templates only, false for inactive only.","title":"Template Status"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result, starting at 0, for paging.","title":"Offset"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: desc (the default) or asc.","title":"Sort"}},"title":"list_email_templatesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}