{"openapi":"3.1.0","info":{"title":"Chatwoot Configuration (BYOK) API","version":"0.1.0","description":"Chatwoot Configuration (BYOK) lets an AI assistant read your own Chatwoot Configuration data through the Chatwoot Configuration API with a key you supply (Chatwoot user access token (Profile Settings)). Read-only: 10 tools (list_help_center_portals, get_help_center_portal, list_custom_attribute_definitions, list_automation_rules, list_saved_filters, list_campaigns, list_integration_apps,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-chatwoot-configuration.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-chatwoot-configuration/docs"},"termsOfService":"https://connectorbay.com/byok-chatwoot-configuration/terms"},"servers":[{"url":"https://byok-chatwoot-configuration.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-chatwoot-configuration/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_help_center_portals":{"post":{"operationId":"list_help_center_portals","summary":"List the help center portals of the account with name, slug, custom domain, header text, archived flag and page title. U","description":"List the help center portals of the account with name, slug, custom domain, header text, archived flag and page title. Use for \"Which help center portals do we have in Chatwoot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"}},"required":["account_id"],"title":"list_help_center_portalsArguments","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_help_center_portal":{"post":{"operationId":"get_help_center_portal","summary":"Get one help center portal by slug, including the locales it serves with article and category counts per locale. Use for","description":"Get one help center portal by slug, including the locales it serves with article and category counts per locale. Use for \"How many articles does my Chatwoot help center have per language\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"},"portal_slug":{"description":"Slug of the portal as shown by the portal list, for example 'help-center'.","maxLength":200,"title":"Portal Slug","type":"string"}},"required":["account_id","portal_slug"],"title":"get_help_center_portalArguments","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_custom_attribute_definitions":{"post":{"operationId":"list_custom_attribute_definitions","summary":"List the custom attribute definitions (key, display name, type, allowed values) for conversations or contacts. Use for \"","description":"List the custom attribute definitions (key, display name, type, allowed values) for conversations or contacts. Use for \"Which custom contact attributes are defined in Chatwoot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"},"attribute_model":{"description":"Which model: 0 for conversation attributes, 1 for contact attributes.","enum":["0","1"],"title":"Attribute Model","type":"string"}},"required":["account_id","attribute_model"],"title":"list_custom_attribute_definitionsArguments","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_automation_rules":{"post":{"operationId":"list_automation_rules","summary":"List the account's automation rules (name, event, conditions and actions as stored). Paged. Use for \"What automation rul","description":"List the account's automation rules (name, event, conditions and actions as stored). Paged. Use for \"What automation rules are set up in Chatwoot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["account_id"],"title":"list_automation_rulesArguments","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_saved_filters":{"post":{"operationId":"list_saved_filters","summary":"List saved custom filters (name, type and query) for conversations, contacts or reports. Use for \"Which saved conversati","description":"List saved custom filters (name, type and query) for conversations, contacts or reports. Use for \"Which saved conversation filters exist in Chatwoot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"},"filter_type":{"anyOf":[{"enum":["conversation","contact","report"],"type":"string"},{"type":"null"}],"default":"conversation","description":"Kind of filter: conversation, contact or report.","title":"Filter Type"}},"required":["account_id"],"title":"list_saved_filtersArguments","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 outbound campaigns with title, description and the inbox each belongs to (message text is not requested). Use for \"","description":"List outbound campaigns with title, description and the inbox each belongs to (message text is not requested). Use for \"What campaigns are configured in Chatwoot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"}},"required":["account_id"],"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_integration_apps":{"post":{"operationId":"list_integration_apps","summary":"List the integrations available to the account (for example Slack, Dialogflow) and whether each is enabled. Use for \"Whi","description":"List the integrations available to the account (for example Slack, Dialogflow) and whether each is enabled. Use for \"Which integrations are enabled in Chatwoot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"}},"required":["account_id"],"title":"list_integration_appsArguments","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_inbox_summary_report":{"post":{"operationId":"get_inbox_summary_report","summary":"Get per-inbox totals for a time window: conversations, resolved conversations and average first response, reply and reso","description":"Get per-inbox totals for a time window: conversations, resolved conversations and average first response, reply and resolution times in seconds. Use for \"Which Chatwoot inbox has the slowest first response this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the report window as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the report window as a Unix timestamp in seconds.","title":"Until"},"business_hours":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to count only business hours.","title":"Business Hours"}},"required":["account_id"],"title":"get_inbox_summary_reportArguments","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_team_summary_report":{"post":{"operationId":"get_team_summary_report","summary":"Get per-team totals for a time window: conversations, resolved conversations and average response and resolution times i","description":"Get per-team totals for a time window: conversations, resolved conversations and average response and resolution times in seconds. Use for \"How is each Chatwoot team doing on resolution time\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the report window as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the report window as a Unix timestamp in seconds.","title":"Until"},"business_hours":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to count only business hours.","title":"Business Hours"}},"required":["account_id"],"title":"get_team_summary_reportArguments","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_first_response_time_distribution":{"post":{"operationId":"get_first_response_time_distribution","summary":"Get how first response times spread across buckets for a time window (counts per inbox bucket). Use for \"How quickly do ","description":"Get how first response times spread across buckets for a time window (counts per inbox bucket). Use for \"How quickly do we first respond to Chatwoot conversations\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric id of the Chatwoot account (the number after /accounts/ in the dashboard URL).","maximum":100000000,"minimum":1,"title":"Account Id","type":"integer"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the report window as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the report window as a Unix timestamp in seconds.","title":"Until"}},"required":["account_id"],"title":"get_first_response_time_distributionArguments","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}}}}