{"openapi":"3.1.0","info":{"title":"MailerLite (BYOK) API","version":"0.1.0","description":"MailerLite (BYOK) lets an AI assistant read your own MailerLite data through the MailerLite API with a key you supply (API key). Read-only: 8 tools (list_subscribers, list_groups, list_group_subscribers, list_segments, list_segment_subscribers, list_campaigns, get_campaign, list_fields). 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-mailerlite.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mailerlite/docs"},"termsOfService":"https://connectorbay.com/byok-mailerlite/terms"},"servers":[{"url":"https://byok-mailerlite.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mailerlite/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_subscribers":{"post":{"operationId":"list_subscribers","summary":"List subscribers (all groups) with email, status, source, dates, opens, clicks and standard fields. Filter by status; pa","description":"List subscribers (all groups) with email, status, source, dates, opens, clicks and standard fields. Filter by status; page with a cursor. Use for \"Show my latest active MailerLite subscribers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["active","unsubscribed","unconfirmed","bounced","junk"],"type":"string"},{"type":"null"}],"default":null,"description":"Subscriber status to list: active, unsubscribed, unconfirmed, bounced or junk.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: pass meta.next_cursor from the previous answer to get the next page (leave empty for the first page).","title":"Cursor"}},"title":"list_subscribersArguments","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_groups":{"post":{"operationId":"list_groups","summary":"List subscriber groups with active, sent, unsubscribed and bounced counts and open and click rates. Filter by part of th","description":"List subscriber groups with active, sent, unsubscribed and bounced counts and open and click rates. Filter by part of the name and sort. Use for \"How many active subscribers are in each of my MailerLite groups\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only groups whose name contains this text.","title":"Name"},"sort":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Sort by name, total, open_rate, click_rate or created_at; prefix with - for descending, for example -total.","title":"Sort"}},"title":"list_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}},"/v1/tools/list_group_subscribers":{"post":{"operationId":"list_group_subscribers","summary":"List the subscribers of one group with email, status, dates, opens and clicks. Defaults to active subscribers; page with","description":"List the subscribers of one group with email, status, dates, opens and clicks. Defaults to active subscribers; page with a cursor. Use for \"Who is in my MailerLite group 5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"ID of the group (from list_groups).","maxLength":200,"title":"Group Id","type":"string"},"status":{"anyOf":[{"enum":["active","unsubscribed","unconfirmed","bounced","junk"],"type":"string"},{"type":"null"}],"default":null,"description":"Subscriber status to list: active, unsubscribed, unconfirmed, bounced or junk.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: pass meta.next_cursor from the previous answer to get the next page (leave empty for the first page).","title":"Cursor"}},"required":["group_id"],"title":"list_group_subscribersArguments","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 segments with subscriber totals and open and click rates. Use for \"What segments do I have in MailerLite\".","description":"List segments with subscriber totals and open and click rates. Use for \"What segments do I have in MailerLite\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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_segment_subscribers":{"post":{"operationId":"list_segment_subscribers","summary":"List the subscribers of one segment with email, status, dates, opens and clicks; page with a cursor. Use for \"Who is in ","description":"List the subscribers of one segment with email, status, dates, opens and clicks; page with a cursor. Use for \"Who is in my MailerLite segment 7\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"segment_id":{"description":"ID of the segment (from list_segments).","maxLength":200,"title":"Segment Id","type":"string"},"status":{"anyOf":[{"enum":["active","unsubscribed","unconfirmed","bounced","junk"],"type":"string"},{"type":"null"}],"default":null,"description":"Subscriber status to list: active, unsubscribed, unconfirmed, bounced or junk.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: pass meta.next_cursor from the previous answer to get the next page (leave empty for the first page).","title":"Cursor"}},"required":["segment_id"],"title":"list_segment_subscribersArguments","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 email campaigns of one status (sent by default) with name, type, dates and open, click, unsubscribe and bounce stat","description":"List email campaigns of one status (sent by default) with name, type, dates and open, click, unsubscribe and bounce statistics. Only reads; never sends. Use for \"How did my last MailerLite campaigns perform\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["sent","draft","ready"],"type":"string"},{"type":"null"}],"default":"sent","description":"Campaign status: sent, draft or ready. MailerLite itself returns only 'ready' when no status is given; this connector asks for sent unless told otherwise.","title":"Status"},"type":{"anyOf":[{"enum":["regular","ab","resend","rss"],"type":"string"},{"type":"null"}],"default":null,"description":"Campaign type: regular, ab, resend or rss (default all types).","title":"Type"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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/get_campaign":{"post":{"operationId":"get_campaign","summary":"Get one campaign with its emails (subject, sender) and statistics: sent, opens, clicks, unsubscribes, bounces and rates.","description":"Get one campaign with its emails (subject, sender) and statistics: sent, opens, clicks, unsubscribes, bounces and rates. Use for \"Show the statistics of MailerLite campaign 9\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign_id":{"description":"ID of the campaign (from list_campaigns).","maxLength":200,"title":"Campaign Id","type":"string"}},"required":["campaign_id"],"title":"get_campaignArguments","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_fields":{"post":{"operationId":"list_fields","summary":"List subscriber fields (default and custom) with their key and type. Filter by keyword or type. Use for \"Which custom su","description":"List subscriber fields (default and custom) with their key and type. Filter by keyword or type. Use for \"Which custom subscriber fields exist in MailerLite\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"keyword":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only fields whose name contains this text.","title":"Keyword"},"type":{"anyOf":[{"enum":["text","number","date"],"type":"string"},{"type":"null"}],"default":null,"description":"Only fields of this type: text, number or date.","title":"Type"},"sort":{"anyOf":[{"enum":["name","-name","type","-type"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by name or type; prefix with - for descending, for example -name.","title":"Sort"}},"title":"list_fieldsArguments","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}}}}