{"openapi":"3.1.0","info":{"title":"MailerSend (BYOK) API","version":"0.1.0","description":"MailerSend (BYOK) lets an AI assistant read your own MailerSend data through the MailerSend API with a key you supply (API token). Read-only: 8 tools (list_domains, get_domain, list_activity, get_activity, get_analytics_by_date, get_opens_by_country, list_templates, get_template). 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-mailersend.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mailersend/docs"},"termsOfService":"https://connectorbay.com/byok-mailersend/terms"},"servers":[{"url":"https://byok-mailersend.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mailersend/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_domains":{"post":{"operationId":"list_domains","summary":"List sending domains with verification, DNS and tracking status and settings. Optional filter on verified domains. Use f","description":"List sending domains with verification, DNS and tracking status and settings. Optional filter on verified domains. Use for \"Which MailerSend domains are verified\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":10,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (10 to 100, default 25).","title":"Limit"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for verified domains only, false for unverified only.","title":"Verified"}},"title":"list_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_domain":{"post":{"operationId":"get_domain","summary":"Get one domain by ID with its verification flags, DNS records status and tracking settings. Use for \"What is the DNS sta","description":"Get one domain by ID with its verification flags, DNS records status and tracking settings. Use for \"What is the DNS status of my MailerSend domain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_id":{"description":"Domain ID from list_domains.","maxLength":200,"title":"Domain Id","type":"string"}},"required":["domain_id"],"title":"get_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_activity":{"post":{"operationId":"list_activity","summary":"List email events (sent, delivered, opened, bounced and so on) of one domain within a UTC time window. Allowed range dep","description":"List email events (sent, delivered, opened, bounced and so on) of one domain within a UTC time window. Allowed range depends on the plan's retention (1 to 30 days). Limited to 10 requests per minute. Use for \"Which emails from my MailerSend domain bounced this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_id":{"description":"Domain ID from list_domains.","maxLength":200,"title":"Domain Id","type":"string"},"date_from":{"description":"Start of the range as a UTC Unix timestamp in seconds (must be before date_to).","minimum":0,"title":"Date From","type":"integer"},"date_to":{"description":"End of the range as a UTC Unix timestamp in seconds (must be after date_from).","minimum":0,"title":"Date To","type":"integer"},"limit":{"anyOf":[{"maximum":100,"minimum":10,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (10 to 100, default 25).","title":"Limit"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["domain_id","date_from","date_to"],"title":"list_activityArguments","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_activity":{"post":{"operationId":"get_activity","summary":"Get one email activity event by ID with its type, subject, sender, status and recipient. Use for \"Show the details of th","description":"Get one email activity event by ID with its type, subject, sender, status and recipient. Use for \"Show the details of this MailerSend activity event\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"activity_id":{"description":"Activity ID from list_activity.","maxLength":200,"title":"Activity Id","type":"string"}},"required":["activity_id"],"title":"get_activityArguments","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_analytics_by_date":{"post":{"operationId":"get_analytics_by_date","summary":"Get counts of email events per day, week, month or year in a UTC time window (data kept up to 6 months). Use for \"How ma","description":"Get counts of email events per day, week, month or year in a UTC time window (data kept up to 6 months). Use for \"How many MailerSend emails were delivered per day last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start of the range as a UTC Unix timestamp in seconds (must be before date_to).","minimum":0,"title":"Date From","type":"integer"},"date_to":{"description":"End of the range as a UTC Unix timestamp in seconds (must be after date_from).","minimum":0,"title":"Date To","type":"integer"},"domain_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only data for this domain ID (from list_domains).","title":"Domain Id"},"group_by":{"anyOf":[{"enum":["days","weeks","months","years"],"type":"string"},{"type":"null"}],"default":"days","description":"Group results by days, weeks, months or years.","title":"Group By"}},"required":["date_from","date_to"],"title":"get_analytics_by_dateArguments","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_opens_by_country":{"post":{"operationId":"get_opens_by_country","summary":"Get email open counts per two-letter country code in a UTC time window. Use for \"In which countries are my MailerSend em","description":"Get email open counts per two-letter country code in a UTC time window. Use for \"In which countries are my MailerSend emails opened\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start of the range as a UTC Unix timestamp in seconds (must be before date_to).","minimum":0,"title":"Date From","type":"integer"},"date_to":{"description":"End of the range as a UTC Unix timestamp in seconds (must be after date_from).","minimum":0,"title":"Date To","type":"integer"},"domain_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only data for this domain ID (from list_domains).","title":"Domain Id"}},"required":["date_from","date_to"],"title":"get_opens_by_countryArguments","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_templates":{"post":{"operationId":"list_templates","summary":"List email templates with name, type, tags and variables, optionally for one domain. Use for \"What email templates do I ","description":"List email templates with name, type, tags and variables, optionally for one domain. Use for \"What email templates do I have in MailerSend\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":10,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (10 to 100, default 25).","title":"Limit"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"domain_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only data for this domain ID (from list_domains).","title":"Domain Id"}},"title":"list_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}},"/v1/tools/get_template":{"post":{"operationId":"get_template","summary":"Get one template by ID with its category, tags and sending statistics. Use for \"How many emails has this MailerSend temp","description":"Get one template by ID with its category, tags and sending statistics. Use for \"How many emails has this MailerSend template sent\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"template_id":{"description":"Template ID from list_templates.","maxLength":200,"title":"Template Id","type":"string"}},"required":["template_id"],"title":"get_templateArguments","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}}}}