{"openapi":"3.1.0","info":{"title":"Mailjet (BYOK) API","version":"0.1.0","description":"Mailjet (BYOK) lets an AI assistant read your own Mailjet data through the Mailjet API with a key you supply (API key). Read-only: 9 tools (get_my_profile, list_contacts, get_contact, list_contact_lists, list_campaigns, list_campaign_overview, list_messages, list_senders, list_templates). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-mailjet.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mailjet/docs"},"termsOfService":"https://connectorbay.com/byok-mailjet/terms"},"servers":[{"url":"https://byok-mailjet.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mailjet/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_my_profile":{"post":{"operationId":"get_my_profile","summary":"Show the Mailjet account profile: name, company, website and contact details of the account owner. Use for \"Which Mailje","description":"Show the Mailjet account profile: name, company, website and contact details of the account owner. Use for \"Which Mailjet account is my key connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_my_profileArguments","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 of the account with email, name, creation and last activity times, delivered count, spam and exclusion fla","description":"List contacts of the account with email, name, creation and last activity times, delivered count, spam and exclusion flags. Filter by contact list or campaign. Use for \"Which contacts in my Mailjet list 12345 were active recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contacts_list":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only contacts that belong to this contact list id.","title":"Contacts List"},"campaign":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only contacts targeted by this campaign id.","title":"Campaign"},"is_excluded_from_campaigns":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only contacts excluded from marketing emails, false to leave them out.","title":"Is Excluded From Campaigns"},"sort":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Sort property and direction, for example 'LastActivityAt DESC'.","title":"Sort"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return (1 to 1000, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first record to return, for paging (0 for the first page).","title":"Offset"}},"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/get_contact":{"post":{"operationId":"get_contact","summary":"Get one contact by id with creation and last activity times and flags. Use for \"Show the Mailjet contact with id 1000\".","description":"Get one contact by id with creation and last activity times and flags. Use for \"Show the Mailjet contact with id 1000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contact_id":{"description":"Contact id (a number) as returned by list_contacts.","maxLength":200,"title":"Contact Id","type":"string"}},"required":["contact_id"],"title":"get_contactArguments","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 contact lists with name, subscriber count, creation time and deletion flag. Use for \"How many subscribers does each","description":"List contact lists with name, subscriber count, creation time and deletion flag. Use for \"How many subscribers does each of my Mailjet contact lists have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the list with exactly this name.","title":"Name"},"is_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only deleted lists, false for lists that are not deleted.","title":"Is Deleted"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return (1 to 1000, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first record to return, for paging (0 for the first page).","title":"Offset"}},"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_campaigns":{"post":{"operationId":"list_campaigns","summary":"List sent campaigns (each email going through Mailjet counts as one) with subject, sender, send start and end time and t","description":"List sent campaigns (each email going through Mailjet counts as one) with subject, sender, send start and end time and tracking options. Filter by period, list or sender. Use for \"Which Mailjet campaigns were sent this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"period":{"anyOf":[{"enum":["Day","Week","Month","Year"],"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns sent since the start of the current day, week, month or year.","title":"Period"},"contacts_list_id":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only campaigns sent to this contact list id.","title":"Contacts List Id"},"from_email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns sent from this sender email address.","title":"From Email"},"from_type":{"anyOf":[{"maximum":3,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Message type: 1 transactional, 2 marketing, 3 unknown.","title":"From Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return (1 to 1000, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first record to return, for paging (0 for the first page).","title":"Offset"}},"title":"list_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/list_campaign_overview":{"post":{"operationId":"list_campaign_overview","summary":"List campaign drafts, A/B tests and sent campaigns with title, subject, status and delivered, opened and clicked counts.","description":"List campaign drafts, A/B tests and sent campaigns with title, subject, status and delivered, opened and clicked counts. Set at most one of sent, drafts, programmed or starred to true. Use for \"How did my sent Mailjet campaigns perform (opens and clicks)\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sent":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to retrieve only sent campaigns.","title":"Sent"},"drafts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to retrieve only drafts.","title":"Drafts"},"programmed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to retrieve only scheduled drafts.","title":"Programmed"},"starred":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to retrieve only starred items.","title":"Starred"},"subject":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items with this subject.","title":"Subject"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return (1 to 1000, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first record to return, for paging (0 for the first page).","title":"Offset"}},"title":"list_campaign_overviewArguments","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_messages":{"post":{"operationId":"list_messages","summary":"List individual messages with status, subject, arrival time, contact and campaign ids. Filter by campaign, contact, cust","description":"List individual messages with status, subject, arrival time, contact and campaign ids. Filter by campaign, contact, custom id, time or type; set show_subject to include subjects. Use for \"What happened to the emails Mailjet sent in campaign 777\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only messages of this campaign id.","title":"Campaign"},"contact":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only messages sent to this contact id.","title":"Contact"},"custom_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages tagged with this CustomID.","title":"Custom Id"},"from_ts":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages sent after this Unix timestamp or RFC3339 time, for example 2026-01-01T00:00:00.","title":"From Ts"},"to_ts":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages sent before this Unix timestamp or RFC3339 time.","title":"To Ts"},"from_type":{"anyOf":[{"maximum":3,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Message type: 1 transactional, 2 marketing, 3 unknown.","title":"From Type"},"show_subject":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include each message's subject.","title":"Show Subject"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return (1 to 1000, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first record to return, for paging (0 for the first page).","title":"Offset"}},"title":"list_messagesArguments","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 registered sender addresses and domains with status and creation time; filter by email, domain or status. Use for \"","description":"List registered sender addresses and domains with status and creation time; filter by email, domain or status. Use for \"Which sender addresses are active in Mailjet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only senders with this email address.","title":"Email"},"domain":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only senders with this domain.","title":"Domain"},"status":{"anyOf":[{"enum":["Inactive","Active","Deleted"],"type":"string"},{"type":"null"}],"default":null,"description":"Only senders with this status.","title":"Status"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return (1 to 1000, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first record to return, for paging (0 for the first page).","title":"Offset"}},"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_templates":{"post":{"operationId":"list_templates","summary":"List email templates with name, owner type, edit mode, purposes and update time; filter by name, owner type or purposes.","description":"List email templates with name, owner type, edit mode, purposes and update time; filter by name, owner type or purposes. Use for \"Which email templates do I have in Mailjet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates with exactly this name.","title":"Name"},"owner_type":{"anyOf":[{"enum":["apikey","user","global"],"type":"string"},{"type":"null"}],"default":null,"description":"Only templates of this owner type: apikey, user or global.","title":"Owner Type"},"purposes":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated purposes: marketing, transactional, automation.","title":"Purposes"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return (1 to 1000, default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first record to return, for paging (0 for the first page).","title":"Offset"}},"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}}}}