{"openapi":"3.1.0","info":{"title":"Mailchimp Reports (BYOK) API","version":"0.1.0","description":"Mailchimp Reports (BYOK) lets an AI assistant read your own Mailchimp Reports data through the Mailchimp Reports API with a key you supply (API key (its suffix after the hyphen is your server prefix)). Read-only: 8 tools (get_campaign_benchmarks, list_click_details, get_click_detail, list_domain_performance, list_open_locations, list_campaign_advice, list_product_activity, list_sub_reports). The...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-mailchimp-reports.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mailchimp-reports/docs"},"termsOfService":"https://connectorbay.com/byok-mailchimp-reports/terms"},"servers":[{"url":"https://byok-mailchimp-reports.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mailchimp-reports/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_campaign_benchmarks":{"post":{"operationId":"get_campaign_benchmarks","summary":"Get how a sent campaign compares with benchmarks: the account's industry averages and the average rates of the audience ","description":"Get how a sent campaign compares with benchmarks: the account's industry averages and the average rates of the audience it was sent to, plus forwards and delivery status. Use for \"How did my Mailchimp campaign 42694e9e57 compare with industry averages\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"}},"required":["dc","campaign_id"],"title":"get_campaign_benchmarksArguments","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_click_details":{"post":{"operationId":"list_click_details","summary":"List the links in a sent campaign with total and unique clicks, click shares and last click time, optionally sorted by c","description":"List the links in a sent campaign with total and unique clicks, click shares and last click time, optionally sorted by clicks. Aggregate counts only, no subscribers. Use for \"Which links in Mailchimp campaign 42694e9e57 got the most clicks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"},"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 1000; the connector shows at most 50 per answer).","title":"Count"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging. Use the previous offset plus count for the next page.","title":"Offset"},"sort_field":{"anyOf":[{"enum":["total_clicks","unique_clicks"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by total_clicks or unique_clicks.","title":"Sort Field"},"sort_dir":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: ASC or DESC.","title":"Sort Dir"},"filter_bots":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to leave out automated bot clicks so counts match human clicks only.","title":"Filter Bots"}},"required":["dc","campaign_id"],"title":"list_click_detailsArguments","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_click_detail":{"post":{"operationId":"get_click_detail","summary":"Get the click statistics of one link of a sent campaign: URL, total and unique clicks, click shares and last click time.","description":"Get the click statistics of one link of a sent campaign: URL, total and unique clicks, click shares and last click time. Use for \"How many people clicked link 1234 in Mailchimp campaign 42694e9e57\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"},"link_id":{"description":"The link id from list_click_details.","maxLength":40,"title":"Link Id","type":"string"},"filter_bots":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to leave out automated bot clicks so counts match human clicks only.","title":"Filter Bots"}},"required":["dc","campaign_id","link_id"],"title":"get_click_detailArguments","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_domain_performance":{"post":{"operationId":"list_domain_performance","summary":"Get the top five recipient email domains of a sent campaign with sent, delivered, open, click, bounce and unsubscribe co","description":"Get the top five recipient email domains of a sent campaign with sent, delivered, open, click, bounce and unsubscribe counts and percentages. Use for \"Which email domains opened Mailchimp campaign 42694e9e57 the most\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"}},"required":["dc","campaign_id"],"title":"list_domain_performanceArguments","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_open_locations":{"post":{"operationId":"list_open_locations","summary":"List the top locations (country and region) where a sent campaign was opened, with unique open counts. Use for \"In which","description":"List the top locations (country and region) where a sent campaign was opened, with unique open counts. Use for \"In which countries was Mailchimp campaign 42694e9e57 opened\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"},"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 1000; the connector shows at most 50 per answer).","title":"Count"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging. Use the previous offset plus count for the next page.","title":"Offset"}},"required":["dc","campaign_id"],"title":"list_open_locationsArguments","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_advice":{"post":{"operationId":"list_campaign_advice","summary":"List the feedback messages Mailchimp generates from a sent campaign's statistics (opens, clicks, unsubscribes, bounces),","description":"List the feedback messages Mailchimp generates from a sent campaign's statistics (opens, clicks, unsubscribes, bounces), each marked positive, negative or neutral. Use for \"What feedback does Mailchimp give on campaign 42694e9e57\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"}},"required":["dc","campaign_id"],"title":"list_campaign_adviceArguments","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_product_activity":{"post":{"operationId":"list_product_activity","summary":"List products bought after a sent campaign (needs a connected store) with title, SKU, units, revenue and recommendation ","description":"List products bought after a sent campaign (needs a connected store) with title, SKU, units, revenue and recommendation counts, optionally sorted. Use for \"Which products did Mailchimp campaign 42694e9e57 sell\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"},"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 1000; the connector shows at most 50 per answer).","title":"Count"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging. Use the previous offset plus count for the next page.","title":"Offset"},"sort_field":{"anyOf":[{"enum":["title","total_revenue","total_purchased"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by title, total_revenue or total_purchased.","title":"Sort Field"}},"required":["dc","campaign_id"],"title":"list_product_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/list_sub_reports":{"post":{"operationId":"list_sub_reports","summary":"List the reports of the child campaigns of a parent campaign (for example the variants of a multivariate campaign) with ","description":"List the reports of the child campaigns of a parent campaign (for example the variants of a multivariate campaign) with send, open, click and bounce summaries. Use for \"Which variant of Mailchimp campaign 42694e9e57 performed best\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dc":{"description":"Your Mailchimp server prefix (data center): the suffix after the hyphen in your API key, for example 'us6' for a key ending in -us6.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Dc","type":"string"},"campaign_id":{"description":"The campaign id, for example '42694e9e57' (the id of a sent campaign).","maxLength":40,"title":"Campaign Id","type":"string"}},"required":["dc","campaign_id"],"title":"list_sub_reportsArguments","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}}}}