{"openapi":"3.1.0","info":{"title":"Chatwoot (BYOK) API","version":"0.1.0","description":"Chatwoot (BYOK) lets an AI assistant read your own Chatwoot data through the Chatwoot API with a key you supply (Chatwoot user access token (Profile Settings)). Read-only: 9 tools (get_account, list_inboxes, list_agents, list_teams, list_labels, list_canned_responses, get_conversation_counts, get_reports_summary, get_agent_summary_report). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-chatwoot.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-chatwoot/docs"},"termsOfService":"https://connectorbay.com/byok-chatwoot/terms"},"servers":[{"url":"https://byok-chatwoot.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-chatwoot/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":{"post":{"operationId":"get_account","summary":"Get the Chatwoot account: name, locale, support email, status and auto-resolve settings. Use for \"What are the settings ","description":"Get the Chatwoot account: name, locale, support email, status and auto-resolve settings. Use for \"What are the settings of my Chatwoot account\".","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":"get_accountArguments","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_inboxes":{"post":{"operationId":"list_inboxes","summary":"List the inboxes (channels such as website chat, email, WhatsApp) with name, channel type, working-hours and auto-assign","description":"List the inboxes (channels such as website chat, email, WhatsApp) with name, channel type, working-hours and auto-assignment flags. Use for \"Which inboxes 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_inboxesArguments","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_agents":{"post":{"operationId":"list_agents","summary":"List the agents of the account with name, role and availability status (email addresses are not returned). Use for \"Whic","description":"List the agents of the account with name, role and availability status (email addresses are not returned). Use for \"Which Chatwoot agents are online\".","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_agentsArguments","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_teams":{"post":{"operationId":"list_teams","summary":"List the teams with name, description and whether auto-assignment is on. Use for \"What teams exist in Chatwoot\".","description":"List the teams with name, description and whether auto-assignment is on. Use for \"What teams 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"}},"required":["account_id"],"title":"list_teamsArguments","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_labels":{"post":{"operationId":"list_labels","summary":"List the conversation labels with title, description and color. Use for \"Which labels do we use in Chatwoot\".","description":"List the conversation labels with title, description and color. Use for \"Which labels do we use 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_labelsArguments","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_canned_responses":{"post":{"operationId":"list_canned_responses","summary":"List the canned (saved) replies with their short code and text. Use for \"What canned responses are saved in Chatwoot\".","description":"List the canned (saved) replies with their short code and text. Use for \"What canned responses are saved 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_canned_responsesArguments","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_conversation_counts":{"post":{"operationId":"get_conversation_counts","summary":"Get counts of conversations (mine, unassigned, assigned, all) for a status, optionally within one inbox or team. Counts ","description":"Get counts of conversations (mine, unassigned, assigned, all) for a status, optionally within one inbox or team. Counts only, no message text. Use for \"How many open Chatwoot conversations are unassigned\".","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"},"status":{"anyOf":[{"enum":["all","open","resolved","pending","snoozed"],"type":"string"},{"type":"null"}],"default":"open","description":"Conversation status.","title":"Status"},"inbox_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only conversations of this inbox id.","title":"Inbox Id"},"team_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only conversations of this team id.","title":"Team Id"}},"required":["account_id"],"title":"get_conversation_countsArguments","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_reports_summary":{"post":{"operationId":"get_reports_summary","summary":"Get a summary for a period: conversations, resolutions, incoming and outgoing messages, average first response and resol","description":"Get a summary for a period: conversations, resolutions, incoming and outgoing messages, average first response and resolution time, with the previous period for comparison. Use for \"How did support perform in Chatwoot last week\".","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"},"type":{"description":"What to summarise: account, agent, inbox, label or team.","enum":["account","agent","inbox","label","team"],"title":"Type","type":"string"},"since":{"description":"Start of the period, Unix timestamp in seconds.","maxLength":200,"title":"Since","type":"string"},"until":{"description":"End of the period, Unix timestamp in seconds.","maxLength":200,"title":"Until","type":"string"},"object_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the agent, inbox, label or team when type is not account.","title":"Object Id"}},"required":["account_id","type","since","until"],"title":"get_reports_summaryArguments","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_agent_summary_report":{"post":{"operationId":"get_agent_summary_report","summary":"Get per-agent conversation statistics for a period: conversations, resolved conversations, average resolution, first res","description":"Get per-agent conversation statistics for a period: conversations, resolved conversations, average resolution, first response and reply times. Use for \"Which Chatwoot agent resolved the most conversations 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":{"description":"Start of the period, Unix timestamp in seconds.","maxLength":200,"title":"Since","type":"string"},"until":{"description":"End of the period, Unix timestamp in seconds.","maxLength":200,"title":"Until","type":"string"},"business_hours":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to count only business hours.","title":"Business Hours"}},"required":["account_id","since","until"],"title":"get_agent_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}}}}