{"openapi":"3.1.0","info":{"title":"ActiveCampaign (BYOK) API","version":"0.1.0","description":"ActiveCampaign (BYOK) lets an AI assistant read your own ActiveCampaign data through the ActiveCampaign API with a key you supply (ActiveCampaign API key). Read-only: 12 tools (get_account_info, list_contacts, list_lists, list_deals, list_pipelines, list_deal_stages, list_deal_tasks, list_campaigns, list_automations, list_segments, list_users, list_accounts). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-activecampaign.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-activecampaign/docs"},"termsOfService":"https://connectorbay.com/byok-activecampaign/terms"},"servers":[{"url":"https://byok-activecampaign.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-activecampaign/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_account_info":{"post":{"operationId":"get_account_info","summary":"Show the hosted account and plan the key belongs to: account name, owner, status, subscriber limit and total, trial flag","description":"Show the hosted account and plan the key belongs to: account name, owner, status, subscriber limit and total, trial flag, timezone and language. Only Admin-group users may call it. Use for \"Which ActiveCampaign account is my key connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"get_account_infoArguments","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 or search contacts, 20 per request by default and at most 100. Filter by email, list, status or free text. Use for ","description":"List or search contacts, 20 per request by default and at most 100. Filter by email, list, status or free text. Use for \"Find ActiveCampaign contacts named Smith\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Number of contacts per request (1 to 100, default 20).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of contacts to skip, for paging.","title":"Offset"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text: a full email matches exactly; anything else matches email, first and last name, phone and account name.","title":"Search"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Exact email address.","title":"Email"},"listid":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only contacts on this list ID.","title":"Listid"},"status":{"anyOf":[{"enum":[-1,0,1,2,3],"type":"integer"},{"type":"null"}],"default":null,"description":"List-membership status: -1 any (default), 0 unconfirmed, 1 active, 2 unsubscribed, 3 bounced. Combine with listid.","title":"Status"}},"required":["account"],"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/list_lists":{"post":{"operationId":"list_lists","summary":"List the account's contact lists with name, sender details and the active and total subscriber counts. Email lists by de","description":"List the account's contact lists with name, sender details and the active and total subscriber counts. Email lists by default. Use for \"Show my ActiveCampaign lists and their subscriber counts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Number of lists per request (1 to 100, default 20).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of lists to skip, for paging.","title":"Offset"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only lists with this exact name.","title":"Name"},"channel":{"anyOf":[{"enum":["email","sms","all"],"type":"string"},{"type":"null"}],"default":null,"description":"Which channel's lists: email (default), sms or all.","title":"Channel"}},"required":["account"],"title":"list_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_deals":{"post":{"operationId":"list_deals","summary":"List deals with title, value, currency, status, pipeline, stage, owner and primary contact. Filter by title, pipeline, s","description":"List deals with title, value, currency, status, pipeline, stage, owner and primary contact. Filter by title, pipeline, stage, owner or status. The API documents no paging parameters for this call, so the answer is capped. Use for \"Show the open deals in my ActiveCampaign pipeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only deals whose title matches.","title":"Title"},"pipeline":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only deals in this pipeline ID.","title":"Pipeline"},"stage":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only deals in this stage ID.","title":"Stage"},"owner":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only deals owned by this user ID.","title":"Owner"},"status":{"anyOf":[{"enum":[0,1,2],"type":"integer"},{"type":"null"}],"default":null,"description":"Deal status: 0 open, 1 won, 2 lost.","title":"Status"}},"required":["account"],"title":"list_dealsArguments","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_pipelines":{"post":{"operationId":"list_pipelines","summary":"List deal pipelines with title, currency, owner assignment and the IDs of their stages. Use for \"What deal pipelines do ","description":"List deal pipelines with title, currency, owner assignment and the IDs of their stages. Use for \"What deal pipelines do I have in ActiveCampaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only pipelines whose title contains this text.","title":"Title"}},"required":["account"],"title":"list_pipelinesArguments","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_deal_stages":{"post":{"operationId":"list_deal_stages","summary":"List deal stages with title, order and the pipeline each belongs to. Use for \"List the stages of my ActiveCampaign pipel","description":"List deal stages with title, order and the pipeline each belongs to. Use for \"List the stages of my ActiveCampaign pipelines\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"pipeline":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only stages of this pipeline ID.","title":"Pipeline"},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only stages whose title contains this text.","title":"Title"}},"required":["account"],"title":"list_deal_stagesArguments","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_deal_tasks":{"post":{"operationId":"list_deal_tasks","summary":"List deal tasks with title, due date, status, type, the deal or contact they relate to and the assignee. Use for \"Show o","description":"List deal tasks with title, due date, status, type, the deal or contact they relate to and the assignee. Use for \"Show open tasks on my ActiveCampaign deals\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"status":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"Task status: 0 incomplete, 1 complete.","title":"Status"},"related_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only tasks related to the deal (or other object) with this ID.","title":"Related Id"},"assignee":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only tasks assigned to this user ID.","title":"Assignee"},"due_after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks due after this date.","title":"Due After"}},"required":["account"],"title":"list_deal_tasksArguments","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 with name, type, status, send date and totals for sends, opens, clicks, bounces and unsubscribes. T","description":"List email campaigns with name, type, status, send date and totals for sends, opens, clicks, bounces and unsubscribes. The API documents no paging parameters for this call, so the answer is capped. Use for \"How did my latest ActiveCampaign campaigns perform\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"automation_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only campaigns of this automation (series) ID.","title":"Automation Id"}},"required":["account"],"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_automations":{"post":{"operationId":"list_automations","summary":"List automations with name, status, creation and modification dates and how many contacts entered and exited. Use for \"W","description":"List automations with name, status, creation and modification dates and how many contacts entered and exited. Use for \"Which automations are running in ActiveCampaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Number of automations per request (1 to 100, default 20).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of automations to skip, for paging.","title":"Offset"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only automations whose name contains this text.","title":"Search"},"status":{"anyOf":[{"enum":[0,1,2,3],"type":"integer"},{"type":"null"}],"default":null,"description":"Automation status: 0 draft, 1 active, 2 inactive, 3 paused.","title":"Status"}},"required":["account"],"title":"list_automationsArguments","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 saved segments (condition sets used to target contacts) with name, logic and creation and update times. It returns ","description":"List saved segments (condition sets used to target contacts) with name, logic and creation and update times. It returns the segment records, not the matching contacts. Use for \"What segments exist in ActiveCampaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Number of segments per request (1 to 100, default 20).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of segments to skip, for paging.","title":"Offset"}},"required":["account"],"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_users":{"post":{"operationId":"list_users","summary":"List the users of the ActiveCampaign account with username, name, email and phone. Use for \"Who are the users on my Acti","description":"List the users of the ActiveCampaign account with username, name, email and phone. Use for \"Who are the users on my ActiveCampaign account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"list_usersArguments","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_accounts":{"post":{"operationId":"list_accounts","summary":"List the CRM accounts (companies) with name, URL and, when counts are requested, contact and deal counts. Use for \"List ","description":"List the CRM accounts (companies) with name, URL and, when counts are requested, contact and deal counts. Use for \"List the company accounts in ActiveCampaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your ActiveCampaign API subdomain: the part before .api-us1.com in the API URL shown under Settings, Developer (for example 'acme' for acme.api-us1.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts whose name matches.","title":"Search"},"count_deals":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to compute contactCount and dealCount; otherwise they show 0.","title":"Count Deals"}},"required":["account"],"title":"list_accountsArguments","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}}}}