{"openapi":"3.1.0","info":{"title":"Feedbackly (BYOK) API","version":"0.1.0","description":"Feedbackly (BYOK) lets an AI assistant read your own Feedbackly data through the Feedbackly API with a key you supply (Feedbackly API key (Enterprise plan)). Read-only: 6 tools (list_surveys, get_survey, list_questions, get_question, list_touchpoints, get_touchpoint). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-feedbackly.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-feedbackly/docs"},"termsOfService":"https://connectorbay.com/byok-feedbackly/terms"},"servers":[{"url":"https://byok-feedbackly.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-feedbackly/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_surveys":{"post":{"operationId":"list_surveys","summary":"List the surveys the key can see with name, team, languages, archived flag and the questions embedded in each. Paged: th","description":"List the surveys the key can see with name, team, languages, archived flag and the questions embedded in each. Paged: the answer's paging.next is the URL of the next page. Use for \"Which customer feedback surveys do we run in Feedbackly\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip from the start, for paging.","title":"Skip"},"preferred_language":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for titles, for example en; falls back to the first available language.","title":"Preferred Language"}},"title":"list_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/get_survey":{"post":{"operationId":"get_survey","summary":"Get one survey by id: name, team, languages, archived flag and its questions. Use for \"Show Feedbackly survey 589c16e487","description":"Get one survey by id: name, team, languages, archived flag and its questions. Use for \"Show Feedbackly survey 589c16e487ef9860199cab3c\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"survey_id":{"description":"Id of the survey (the _id from list_surveys).","maxLength":40,"title":"Survey Id","type":"string"},"preferred_language":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for titles, for example en; falls back to the first available language.","title":"Preferred Language"}},"required":["survey_id"],"title":"get_surveyArguments","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_questions":{"post":{"operationId":"list_questions","summary":"List the questions of all surveys with title, subtitle, question type (for example NPS or Contact), answer choices and s","description":"List the questions of all surveys with title, subtitle, question type (for example NPS or Contact), answer choices and survey id. Paged like list_surveys. Use for \"What questions do our Feedbackly surveys ask\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip from the start, for paging.","title":"Skip"},"preferred_language":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for titles, for example en; falls back to the first available language.","title":"Preferred Language"}},"title":"list_questionsArguments","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_question":{"post":{"operationId":"get_question","summary":"Get one question by id: title, subtitle, question type, languages, choices and survey id. Use for \"Show Feedbackly quest","description":"Get one question by id: title, subtitle, question type, languages, choices and survey id. Use for \"Show Feedbackly question 58d8d547b8c71e000e3824fc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"question_id":{"description":"Id of the question (the _id from list_questions).","maxLength":40,"title":"Question Id","type":"string"},"preferred_language":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for titles, for example en; falls back to the first available language.","title":"Preferred Language"}},"required":["question_id"],"title":"get_questionArguments","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_touchpoints":{"post":{"operationId":"list_touchpoints","summary":"List the touchpoints (feedback terminals, web widgets, email channels) with team, the survey active on each and the date","description":"List the touchpoints (feedback terminals, web widgets, email channels) with team, the survey active on each and the date of the last response. Use for \"Which Feedbackly touchpoints have collected answers recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip from the start, for paging.","title":"Skip"},"team_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only touchpoints of this team id.","title":"Team Id"}},"title":"list_touchpointsArguments","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_touchpoint":{"post":{"operationId":"get_touchpoint","summary":"Get one touchpoint by id: name, team, active survey and last response date. Use for \"Show Feedbackly touchpoint 5dc57703","description":"Get one touchpoint by id: name, team, active survey and last response date. Use for \"Show Feedbackly touchpoint 5dc57703b7c935069aef31c5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"touchpoint_id":{"description":"Id of the touchpoint (the _id from list_touchpoints).","maxLength":40,"title":"Touchpoint Id","type":"string"}},"required":["touchpoint_id"],"title":"get_touchpointArguments","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}}}}