{"openapi":"3.1.0","info":{"title":"Delighted (BYOK) API","version":"0.1.0","description":"Delighted (BYOK) lets an AI assistant read your own Delighted data through the Delighted API with a key you supply (Delighted API key (one per CX project)). Read-only: 6 tools (list_survey_responses, get_metrics, list_people, list_bounces, list_unsubscribes, list_autopilot_email_members). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-delighted.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-delighted/docs"},"termsOfService":"https://connectorbay.com/byok-delighted/terms"},"servers":[{"url":"https://byok-delighted.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-delighted/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_survey_responses":{"post":{"operationId":"list_survey_responses","summary":"List survey responses oldest first with score, comment, survey type, person id, permalink, tags, notes and answers to ad","description":"List survey responses oldest first with score, comment, survey type, person id, permalink, tags, notes and answers to additional questions, filterable by dates, person and trend. Use for \"What scores and comments did customers give in Delighted this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only responses created on or after this time (Unix timestamp in seconds).","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only responses created on or before this time (Unix timestamp in seconds).","title":"Until"},"updated_since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only responses updated on or after this time (Unix timestamp in seconds).","title":"Updated Since"},"updated_until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only responses updated on or before this time (Unix timestamp in seconds).","title":"Updated Until"},"trend":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses of this trend id (from the trend's page in Delighted).","title":"Trend"},"person_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses of this person id.","title":"Person Id"},"person_email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses of the person with this email.","title":"Person Email"}},"title":"list_survey_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_metrics":{"post":{"operationId":"get_metrics","summary":"Get Net Promoter Score and response counts: NPS, promoter, passive and detractor counts and percentages, and total respo","description":"Get Net Promoter Score and response counts: NPS, promoter, passive and detractor counts and percentages, and total responses, for a time range or trend. Use for \"What is our current NPS in Delighted\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only responses created on or after this time (Unix timestamp in seconds).","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only responses created on or before this time (Unix timestamp in seconds).","title":"Until"},"trend":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only this trend id.","title":"Trend"}},"title":"get_metricsArguments","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_people":{"post":{"operationId":"list_people","summary":"List people (survey recipients) oldest first with name, email, phone, and when they were last sent a survey, last respon","description":"List people (survey recipients) oldest first with name, email, phone, and when they were last sent a survey, last responded and are next scheduled. Up to 100 per call; use since and until to move through time. Contains personal data. Use for \"Who has Delighted surveyed recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only people created on or after this time (Unix timestamp in seconds).","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only people created on or before this time (Unix timestamp in seconds).","title":"Until"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the person with this email (do not combine with phone_number).","title":"Email"},"phone_number":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only the person with this phone number in E.164 form, plus sign and digits only (do not combine with email).","title":"Phone Number"}},"title":"list_peopleArguments","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_bounces":{"post":{"operationId":"list_bounces","summary":"List people whose survey emails bounced, oldest first, with name, email and bounce time. Use for \"Which survey emails bo","description":"List people whose survey emails bounced, oldest first, with name, email and bounce time. Use for \"Which survey emails bounced in Delighted\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only bounces on or after this time (Unix timestamp in seconds).","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only bounces on or before this time (Unix timestamp in seconds).","title":"Until"}},"title":"list_bouncesArguments","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_unsubscribes":{"post":{"operationId":"list_unsubscribes","summary":"List people who unsubscribed from surveys, oldest first, with name, email and unsubscribe time. Use for \"Who unsubscribe","description":"List people who unsubscribed from surveys, oldest first, with name, email and unsubscribe time. Use for \"Who unsubscribed from Delighted surveys\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only unsubscribes on or after this time (Unix timestamp in seconds).","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only unsubscribes on or before this time (Unix timestamp in seconds).","title":"Until"}},"title":"list_unsubscribesArguments","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_autopilot_email_members":{"post":{"operationId":"list_autopilot_email_members","summary":"List people enrolled in Autopilot recurring email surveys with their next scheduled survey request. Use for \"Who is in D","description":"List people enrolled in Autopilot recurring email surveys with their next scheduled survey request. Use for \"Who is in Delighted Autopilot email surveys\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"person_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only this person id.","title":"Person Id"},"person_email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the person with this email.","title":"Person Email"}},"title":"list_autopilot_email_membersArguments","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}}}}