{"openapi":"3.1.0","info":{"title":"Crisp Helpdesk (BYOK) API","version":"0.1.0","description":"Crisp Helpdesk (BYOK) lets an AI assistant read your own Crisp Helpdesk data through the Crisp Helpdesk API with a key you supply (Crisp token identifier). Read-only: 11 tools (get_helpdesk, get_helpdesk_settings, list_helpdesk_locales, get_helpdesk_locale, get_helpdesk_feedback_ratings, list_helpdesk_pages, list_helpdesk_tree, list_helpdesk_redirections, list_teams, list_inboxes,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-crisp-helpdesk.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-crisp-helpdesk/docs"},"termsOfService":"https://connectorbay.com/byok-crisp-helpdesk/terms"},"servers":[{"url":"https://byok-crisp-helpdesk.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-crisp-helpdesk/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_helpdesk":{"post":{"operationId":"get_helpdesk","summary":"Get the helpdesk of a Crisp website: its name and public address. Use for \"What is the public address of my Crisp helpde","description":"Get the helpdesk of a Crisp website: its name and public address. Use for \"What is the public address of my Crisp helpdesk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"}},"required":["website_id"],"title":"get_helpdeskArguments","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_helpdesk_settings":{"post":{"operationId":"get_helpdesk_settings","summary":"Get how the helpdesk looks and behaves: color mode, logos, writing locale, which content sections are shown and behavior","description":"Get how the helpdesk looks and behaves: color mode, logos, writing locale, which content sections are shown and behavior switches. Access passwords and secrets are not returned. Use for \"How is my Crisp helpdesk configured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"}},"required":["website_id"],"title":"get_helpdesk_settingsArguments","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_helpdesk_locales":{"post":{"operationId":"list_helpdesk_locales","summary":"List the helpdesk's locales with public address and number of entries and groups for articles, guides, references and ne","description":"List the helpdesk's locales with public address and number of entries and groups for articles, guides, references and news. Use for \"How many articles does my Crisp helpdesk have per language\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"page_number":{"description":"Page number, starting at 1.","maximum":100000,"minimum":1,"title":"Page Number","type":"integer"}},"required":["website_id","page_number"],"title":"list_helpdesk_localesArguments","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_helpdesk_locale":{"post":{"operationId":"get_helpdesk_locale","summary":"Get one helpdesk locale with its public address and content counts. Use for \"How much French content does my Crisp helpd","description":"Get one helpdesk locale with its public address and content counts. Use for \"How much French content does my Crisp helpdesk have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"locale":{"description":"Helpdesk locale code (ISO 639-1), for example 'en'.","maxLength":10,"title":"Locale","type":"string"}},"required":["website_id","locale"],"title":"get_helpdesk_localeArguments","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_helpdesk_feedback_ratings":{"post":{"operationId":"get_helpdesk_feedback_ratings","summary":"Count how many helpful and unhelpful ratings visitors left for one content type in a locale, optionally within a date ra","description":"Count how many helpful and unhelpful ratings visitors left for one content type in a locale, optionally within a date range. Comments and authors are not returned. Use for \"How many visitors found my Crisp help articles helpful\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"locale":{"description":"Helpdesk locale code (ISO 639-1), for example 'en'.","maxLength":10,"title":"Locale","type":"string"},"content_type":{"description":"Helpdesk content type.","enum":["articles","guides","references","news"],"title":"Content Type","type":"string"},"filter_date_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only feedback created after this ISO 8601 date, for example 2026-01-01T00:00:00Z.","title":"Filter Date Start"},"filter_date_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only feedback created before this ISO 8601 date.","title":"Filter Date End"}},"required":["website_id","locale","content_type"],"title":"get_helpdesk_feedback_ratingsArguments","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_helpdesk_pages":{"post":{"operationId":"list_helpdesk_pages","summary":"List the publicly visible helpdesk pages of one content type and locale with title, tree path and public address. Use fo","description":"List the publicly visible helpdesk pages of one content type and locale with title, tree path and public address. Use for \"Which help articles are published on my Crisp helpdesk in English\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"locale":{"description":"Helpdesk locale code (ISO 639-1), for example 'en'.","maxLength":10,"title":"Locale","type":"string"},"content_type":{"description":"Helpdesk content type.","enum":["articles","guides","references","news"],"title":"Content Type","type":"string"},"page_number":{"description":"Page number, starting at 1.","maximum":100000,"minimum":1,"title":"Page Number","type":"integer"}},"required":["website_id","locale","content_type","page_number"],"title":"list_helpdesk_pagesArguments","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_helpdesk_tree":{"post":{"operationId":"list_helpdesk_tree","summary":"List the entries (files and directories) of a helpdesk content tree with slug, title and state, optionally inside a subd","description":"List the entries (files and directories) of a helpdesk content tree with slug, title and state, optionally inside a subdirectory, by title or by status. Use for \"What is in my Crisp helpdesk article tree\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"locale":{"description":"Helpdesk locale code (ISO 639-1), for example 'en'.","maxLength":10,"title":"Locale","type":"string"},"content_type":{"description":"Helpdesk content type.","enum":["articles","guides","references","news"],"title":"Content Type","type":"string"},"page_number":{"description":"Page number, starting at 1.","maximum":100000,"minimum":1,"title":"Page Number","type":"integer"},"sub_path":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Tree subdirectory to list (default is the root, '/').","title":"Sub Path"},"search_title":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries whose title contains this text.","title":"Search Title"},"search_filter_status":{"anyOf":[{"enum":["visible","hidden","draft","featured"],"type":"string"},{"type":"null"}],"default":null,"description":"Only entries with this status.","title":"Search Filter Status"}},"required":["website_id","locale","content_type","page_number"],"title":"list_helpdesk_treeArguments","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_helpdesk_redirections":{"post":{"operationId":"list_helpdesk_redirections","summary":"List the helpdesk's redirections (source path to target path) with dates. Use for \"Which redirects are set up on my Cris","description":"List the helpdesk's redirections (source path to target path) with dates. Use for \"Which redirects are set up on my Crisp helpdesk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"page_number":{"description":"Page number, starting at 1.","maximum":100000,"minimum":1,"title":"Page Number","type":"integer"}},"required":["website_id","page_number"],"title":"list_helpdesk_redirectionsArguments","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 website's operator teams with name, emoji, member operator ids and dates. Use for \"Which teams exist in my Cris","description":"List the website's operator teams with name, emoji, member operator ids and dates. Use for \"Which teams exist in my Crisp workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"page_number":{"description":"Page number, starting at 1.","maximum":100000,"minimum":1,"title":"Page Number","type":"integer"}},"required":["website_id","page_number"],"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_inboxes":{"post":{"operationId":"list_inboxes","summary":"List the website's inboxes with name, order, member operators and teams. Use for \"Which inboxes does my Crisp workspace ","description":"List the website's inboxes with name, order, member operators and teams. Use for \"Which inboxes does my Crisp workspace have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"page_number":{"description":"Page number, starting at 1.","maximum":100000,"minimum":1,"title":"Page Number","type":"integer"}},"required":["website_id","page_number"],"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_campaign_templates":{"post":{"operationId":"list_campaign_templates","summary":"List campaign templates with name, type, format and dates (template content is not returned). Use for \"Which campaign te","description":"List campaign templates with name, type, format and dates (template content is not returned). Use for \"Which campaign templates does my Crisp workspace have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"website_id":{"description":"Crisp website (workspace) id, a UUID shown in the Crisp app URL and settings.","maxLength":200,"title":"Website Id","type":"string"},"page_number":{"description":"Page number, starting at 1.","maximum":100000,"minimum":1,"title":"Page Number","type":"integer"},"search_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates whose name contains this text.","title":"Search Name"}},"required":["website_id","page_number"],"title":"list_campaign_templatesArguments","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}}}}