{"openapi":"3.1.0","info":{"title":"Brevo Setup (BYOK) API","version":"0.1.0","description":"Brevo Setup (BYOK) lets an AI assistant read your own Brevo Setup data through the Brevo Setup API with a key you supply (API key). Read-only: 8 tools (list_sender_domains, get_sender_domain, list_dedicated_ips, list_webhooks, list_contact_attributes, list_contact_folders, list_folder_lists, list_consent_groups). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-brevo-setup.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-brevo-setup/docs"},"termsOfService":"https://connectorbay.com/byok-brevo-setup/terms"},"servers":[{"url":"https://byok-brevo-setup.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-brevo-setup/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/list_sender_domains":{"post":{"operationId":"list_sender_domains","summary":"List the sending domains of the account with verified and authenticated flags, DNS provider and dedicated IP, if any. Us","description":"List the sending domains of the account with verified and authenticated flags, DNS provider and dedicated IP, if any. Use for \"Which of my Brevo sending domains are authenticated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_sender_domainsArguments","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_sender_domain":{"post":{"operationId":"get_sender_domain","summary":"Check one sending domain's configuration: verified and authenticated flags and the status of its Brevo code, DKIM and DM","description":"Check one sending domain's configuration: verified and authenticated flags and the status of its Brevo code, DKIM and DMARC DNS records. Use for \"Are the DKIM and DMARC records of example.com correct in Brevo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_name":{"description":"The sending domain, for example 'example.com'.","maxLength":253,"title":"Domain Name","type":"string"}},"required":["domain_name"],"title":"get_sender_domainArguments","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_dedicated_ips":{"post":{"operationId":"list_dedicated_ips","summary":"List the dedicated IP addresses of the account with id, domain and active flag. Use for \"Which dedicated IPs does my Bre","description":"List the dedicated IP addresses of the account with id, domain and active flag. Use for \"Which dedicated IPs does my Brevo account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_dedicated_ipsArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List configured webhooks with target URL, description, subscribed events, type (marketing, transactional or inbound) and","description":"List configured webhooks with target URL, description, subscribed events, type (marketing, transactional or inbound) and dates. Header and auth settings are not returned. Use for \"Which Brevo webhooks are set up and what events do they listen to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["marketing","transactional","inbound"],"type":"string"},{"type":"null"}],"default":null,"description":"Only webhooks of this type: marketing, transactional or inbound (default transactional).","title":"Type"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by creation: desc (the default) or asc.","title":"Sort"}},"title":"list_webhooksArguments","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_attributes":{"post":{"operationId":"list_contact_attributes","summary":"List the contact attribute definitions (custom fields): name, category (normal, transactional, category, calculated, glo","description":"List the contact attribute definitions (custom fields): name, category (normal, transactional, category, calculated, global) and type. No contact values are returned. Use for \"What custom contact attributes are defined in Brevo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_contact_attributesArguments","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_folders":{"post":{"operationId":"list_contact_folders","summary":"List contact folders with subscriber, unique subscriber and blacklisted counts. Use for \"How many contacts are in each B","description":"List contact folders with subscriber, unique subscriber and blacklisted counts. Use for \"How many contacts are in each Brevo folder\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"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 by creation: desc (the default) or asc.","title":"Sort"}},"title":"list_contact_foldersArguments","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_folder_lists":{"post":{"operationId":"list_folder_lists","summary":"List the contact lists inside one folder with subscriber counts. Use for \"Which lists are in Brevo folder 1\".","description":"List the contact lists inside one folder with subscriber counts. Use for \"Which lists are in Brevo folder 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"folder_id":{"description":"The folder id from list_contact_folders.","minimum":1,"title":"Folder Id","type":"integer"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"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 by creation: desc (the default) or asc.","title":"Sort"}},"required":["folder_id"],"title":"list_folder_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_consent_groups":{"post":{"operationId":"list_consent_groups","summary":"List consent groups with signup mode (manual or automatic), contact count, default flag and dates. Use for \"What consent","description":"List consent groups with signup mode (manual or automatic), contact count, default flag and dates. Use for \"What consent groups 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"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive partial name filter.","title":"Name"},"signup_mode":{"anyOf":[{"enum":["manual","automatic"],"type":"string"},{"type":"null"}],"default":null,"description":"Only groups with this signup mode: manual or automatic.","title":"Signup Mode"}},"title":"list_consent_groupsArguments","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}}}}