{"openapi":"3.1.0","info":{"title":"Kustomer Configuration (BYOK) API","version":"0.1.0","description":"Kustomer Configuration (BYOK) lets an AI assistant read your own Kustomer Configuration data through the Kustomer Configuration API with a key you supply (Kustomer API key (Settings > Security > API Keys)). Read-only: 11 tools (list_klasses, get_klass, list_business_schedules, get_default_business_schedule, list_shortcuts, list_shortcut_categories, list_sub_statuses, list_snippets,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-kustomer-configuration.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-kustomer-configuration/docs"},"termsOfService":"https://connectorbay.com/byok-kustomer-configuration/terms"},"servers":[{"url":"https://byok-kustomer-configuration.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-kustomer-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_klasses":{"post":{"operationId":"list_klasses","summary":"List the object types (klasses) of the workspace, such as customer, company and custom objects, with name, status, mixin","description":"List the object types (klasses) of the workspace, such as customer, company and custom objects, with name, status, mixins and dates. Use for \"Which custom object types exist in our Kustomer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"},"name":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only the klass with this exact name, for example 'order'.","title":"Name"},"status":{"anyOf":[{"enum":["enabled","existing_only","disabled"],"type":"string"},{"type":"null"}],"default":null,"description":"Klass status: enabled, existing_only or disabled (the API default is enabled).","title":"Status"}},"title":"list_klassesArguments","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_klass":{"post":{"operationId":"get_klass","summary":"Get one object type (klass) by id: name, display name, status, mixins and dates. Use for \"Describe Kustomer klass 5e15fa","description":"Get one object type (klass) by id: name, display name, status, mixins and dates. Use for \"Describe Kustomer klass 5e15fa56a07888001927f8e5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"klass_id":{"description":"Id of the klass (a 24-character hex string).","maxLength":200,"title":"Klass Id","type":"string"}},"required":["klass_id"],"title":"get_klassArguments","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_business_schedules":{"post":{"operationId":"list_business_schedules","summary":"List the business schedules (support hours) with weekly hours in minutes, time zone and default flag; optionally include","description":"List the business schedules (support hours) with weekly hours in minutes, time zone and default flag; optionally include holidays. Use for \"What are our Kustomer business hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only enabled schedules.","title":"Enabled"},"include":{"anyOf":[{"const":"holidays","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'holidays' to include schedule holidays.","title":"Include"}},"title":"list_business_schedulesArguments","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_default_business_schedule":{"post":{"operationId":"get_default_business_schedule","summary":"Get the default business schedule with weekly hours, time zone and optionally its holidays. Use for \"What is the default","description":"Get the default business schedule with weekly hours, time zone and optionally its holidays. Use for \"What is the default Kustomer business schedule\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include":{"anyOf":[{"const":"holidays","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'holidays' to include holidays.","title":"Include"}},"title":"get_default_business_scheduleArguments","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_shortcuts":{"post":{"operationId":"list_shortcuts","summary":"List shortcuts (saved reply templates) with name and draft text, filterable by name prefix, tag or deletion state. Use f","description":"List shortcuts (saved reply templates) with name and draft text, filterable by name prefix, tag or deletion state. Use for \"Which Kustomer shortcuts start with 'follow up'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"},"lang":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code to localize the response, for example 'en_us'.","title":"Lang"},"name":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive name prefix, for example 'follow up'.","title":"Name"},"tag_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only shortcuts with this tag id.","title":"Tag Id"},"deleted":{"anyOf":[{"enum":["true","false","all"],"type":"string"},{"type":"null"}],"default":null,"description":"Deletion state: true, false or all (the API default is false).","title":"Deleted"}},"title":"list_shortcutsArguments","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_shortcut_categories":{"post":{"operationId":"list_shortcut_categories","summary":"List the categories that group shortcuts. Use for \"How are Kustomer shortcuts organized into categories\".","description":"List the categories that group shortcuts. Use for \"How are Kustomer shortcuts organized into categories\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"},"lang":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code to localize the response, for example 'en_us'.","title":"Lang"}},"title":"list_shortcut_categoriesArguments","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_statuses":{"post":{"operationId":"list_sub_statuses","summary":"List conversation or object sub-statuses (custom statuses under open, snoozed or done) with label, parent status and def","description":"List conversation or object sub-statuses (custom statuses under open, snoozed or done) with label, parent status and default flag. Use for \"Which conversation sub-statuses does our Kustomer define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"resource":{"description":"Resource type: conversation or kobject.","enum":["conversation","kobject"],"title":"Resource","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"},"parent_name":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only sub-statuses under this parent status name.","title":"Parent Name"}},"required":["resource"],"title":"list_sub_statusesArguments","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_snippets":{"post":{"operationId":"list_snippets","summary":"List snippets (reusable text blocks) with name, key, description and source. Per-language text is not returned. Use for ","description":"List snippets (reusable text blocks) with name, key, description and source. Per-language text is not returned. Use for \"Which snippets are defined in Kustomer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"},"lang":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code to localize the response, for example 'en_us'.","title":"Lang"}},"title":"list_snippetsArguments","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_role_groups":{"post":{"operationId":"list_role_groups","summary":"List role groups (permission bundles) with name, description, whether they are system groups and which roles they contai","description":"List role groups (permission bundles) with name, description, whether they are system groups and which roles they contain. Use for \"Which permission role groups exist in Kustomer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page (1 to 500).","title":"Page Size"}},"title":"list_role_groupsArguments","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_satisfaction_surveys":{"post":{"operationId":"list_satisfaction_surveys","summary":"List customer satisfaction survey definitions with name, form type, channel, whether enabled, delay and rating scale. No","description":"List customer satisfaction survey definitions with name, form type, channel, whether enabled, delay and rating scale. No survey responses. Use for \"Which satisfaction surveys are configured in Kustomer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"}},"title":"list_satisfaction_surveysArguments","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_workflows":{"post":{"operationId":"list_workflows","summary":"List automation workflows with name, description, trigger event name and enabled flag (steps are not requested). Use for","description":"List automation workflows with name, description, trigger event name and enabled flag (steps are not requested). Use for \"Which Kustomer workflows are enabled for new conversations\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Page Size"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only enabled workflows, false for only disabled.","title":"Enabled"},"event_name":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only workflows triggered by this event, for example 'kustomer.conversation.create'.","title":"Event Name"}},"title":"list_workflowsArguments","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}}}}