{"openapi":"3.1.0","info":{"title":"Alchemer (BYOK) API","version":"0.1.0","description":"Alchemer (BYOK) lets an AI assistant read your own Alchemer data through the Alchemer API with a key you supply (Alchemer API key (api_token)). Read-only: 7 tools (list_surveys, get_survey, list_survey_questions, list_survey_statistics, list_survey_responses, list_survey_campaigns, list_account_teams). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-alchemer.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-alchemer/docs"},"termsOfService":"https://connectorbay.com/byok-alchemer/terms"},"servers":[{"url":"https://byok-alchemer.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-alchemer/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 all surveys of the Alchemer account with status, type, owning team, dates, response counts by status and edit and s","description":"List all surveys of the Alchemer account with status, type, owning team, dates, response counts by status and edit and share links. Use for \"Which Alchemer surveys do I have and how many responses has each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"resultsperpage":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 500).","title":"Resultsperpage"}},"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 Alchemer survey: title, status, languages, response counts by status, quota, auto-close time and share links. Us","description":"Get one Alchemer survey: title, status, languages, response counts by status, quota, auto-close time and share links. Use for \"Show details of Alchemer survey 123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"survey_id":{"description":"Alchemer survey ID (a number), from list_surveys.","maxLength":200,"title":"Survey Id","type":"string"}},"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_survey_questions":{"post":{"operationId":"list_survey_questions","summary":"List the questions of one Alchemer survey with type, text per language, shortname and whether each is required. Use for ","description":"List the questions of one Alchemer survey with type, text per language, shortname and whether each is required. Use for \"What questions does Alchemer survey 123456 contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"survey_id":{"description":"Alchemer survey ID (a number), from list_surveys.","maxLength":200,"title":"Survey Id","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["survey_id"],"title":"list_survey_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/list_survey_statistics":{"post":{"operationId":"list_survey_statistics","summary":"Get question-level statistics for an Alchemer survey: response counts, averages, and the share of respondents per answer","description":"Get question-level statistics for an Alchemer survey: response counts, averages, and the share of respondents per answer option for choice questions. Use for \"What is the answer breakdown for each question in Alchemer survey 123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"survey_id":{"description":"Alchemer survey ID (a number), from list_surveys.","maxLength":200,"title":"Survey Id","type":"string"},"surveypage":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only questions on this page ID.","title":"Surveypage"},"surveyquestion":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this question ID.","title":"Surveyquestion"}},"required":["survey_id"],"title":"list_survey_statisticsArguments","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_survey_responses":{"post":{"operationId":"list_survey_responses","summary":"List responses of one Alchemer survey with status, dates, language, time spent and country. Answers, IP addresses, user ","description":"List responses of one Alchemer survey with status, dates, language, time spent and country. Answers, IP addresses, user agents and contact details are left out. Use for \"How many complete responses has Alchemer survey 123456 collected recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"survey_id":{"description":"Alchemer survey ID (a number), from list_surveys.","maxLength":200,"title":"Survey Id","type":"string"},"order_by":{"anyOf":[{"enum":["date_submitted","-date_submitted","date_updated","-date_updated"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by date_submitted, -date_submitted, date_updated or -date_updated (a leading minus means newest first).","title":"Order By"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"resultsperpage":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many responses per page (1 to 500).","title":"Resultsperpage"}},"required":["survey_id"],"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/list_survey_campaigns":{"post":{"operationId":"list_survey_campaigns","summary":"List the share links and email campaigns of one Alchemer survey with status, subtype, public URL, response limit and ope","description":"List the share links and email campaigns of one Alchemer survey with status, subtype, public URL, response limit and open and close dates. Use for \"What share links does Alchemer survey 123456 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"survey_id":{"description":"Alchemer survey ID (a number), from list_surveys.","maxLength":200,"title":"Survey Id","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"resultsperpage":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 500).","title":"Resultsperpage"}},"required":["survey_id"],"title":"list_survey_campaignsArguments","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_account_teams":{"post":{"operationId":"list_account_teams","summary":"List the teams of the Alchemer account with name, description and status. Use for \"Which teams exist in my Alchemer acco","description":"List the teams of the Alchemer account with name, description and status. Use for \"Which teams exist in my Alchemer account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"showdeleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted teams.","title":"Showdeleted"}},"title":"list_account_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}}}}