{"openapi":"3.1.0","info":{"title":"Typeform (BYOK) API","version":"0.1.0","description":"Typeform (BYOK) lets an AI assistant read your own Typeform data through the Typeform API with a key you supply (personal access token). Read-only: 7 tools (list_forms, get_form, list_responses, list_workspaces, get_workspace, list_themes, get_theme). 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 to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-typeform.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-typeform/docs"},"termsOfService":"https://connectorbay.com/byok-typeform/terms"},"servers":[{"url":"https://byok-typeform.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-typeform/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_forms":{"post":{"operationId":"list_forms","summary":"List the forms of your Typeform account with title, public flag, creation and last update time and form link; filter by ","description":"List the forms of your Typeform account with title, public flag, creation and last update time and form link; filter by search text or workspace. Use for \"What Typeform forms do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only forms whose title contains this text.","title":"Search"},"workspace_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only forms in this workspace (id from list_workspaces).","title":"Workspace Id"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only public forms, false for only private ones.","title":"Is Public"},"sort_by":{"anyOf":[{"enum":["created_at","last_updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: created_at or last_updated_at.","title":"Sort By"},"order_by":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Order By"},"page_size":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 200, default 10).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_formsArguments","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_form":{"post":{"operationId":"get_form","summary":"Get one form's definition: title, language, its questions (fields with id, title, type, ref and properties), hidden fiel","description":"Get one form's definition: title, language, its questions (fields with id, title, type, ref and properties), hidden fields, screens, settings and display link. Use for \"Show the questions of my Typeform form u6nXL7\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"form_id":{"description":"Form id: the code at the end of the form link, for example 'u6nXL7' for https://example.typeform.com/to/u6nXL7.","maxLength":200,"title":"Form Id","type":"string"}},"required":["form_id"],"title":"get_formArguments","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_responses":{"post":{"operationId":"list_responses","summary":"List submitted responses to a form, newest first, with submit time, answers keyed by question id, hidden fields and meta","description":"List submitted responses to a form, newest first, with submit time, answers keyed by question id, hidden fields and metadata. Responses from the last 30 minutes may be missing. Page with the before cursor (a response token). Use for \"What are the latest responses to my Typeform form u6nXL7\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"form_id":{"description":"Form id: the code at the end of the form link, for example 'u6nXL7' for https://example.typeform.com/to/u6nXL7.","maxLength":200,"title":"Form Id","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many responses to return (1 to 100, default 25).","title":"Page Size"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses submitted on or after this time (ISO 8601 UTC such as 2026-10-01T00:00:00 or Unix seconds).","title":"Since"},"until":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses submitted on or before this time (same formats as since).","title":"Until"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: only responses after this response token (for paging forward).","title":"After"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: only responses before this response token. Use the token of the last item of the previous page to get the next older page.","title":"Before"},"response_type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated kinds: completed (default), partial or started, for example 'completed,partial'.","title":"Response Type"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses whose answers, hidden fields or variables contain this exact phrase.","title":"Query"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Sort as field,direction, for example 'submitted_at,desc'.","title":"Sort"}},"required":["form_id"],"title":"list_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_workspaces":{"post":{"operationId":"list_workspaces","summary":"List the workspaces of your Typeform account with name, whether shared with a team, and number of forms. Use for \"What T","description":"List the workspaces of your Typeform account with name, whether shared with a team, and number of forms. Use for \"What Typeform workspaces do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only workspaces whose name contains this text.","title":"Search"},"page_size":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 200, default 10).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_workspacesArguments","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_workspace":{"post":{"operationId":"get_workspace","summary":"Get one workspace by id with name, shared flag, number of forms and its members with role (owner or member). Use for \"Wh","description":"Get one workspace by id with name, shared flag, number of forms and its members with role (owner or member). Use for \"Who is in my Typeform workspace ws1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Workspace id from list_workspaces.","maxLength":200,"title":"Workspace Id","type":"string"}},"required":["workspace_id"],"title":"get_workspaceArguments","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_themes":{"post":{"operationId":"list_themes","summary":"List the visual themes of your account with name, visibility (public, premium or private), font and colors. Use for \"Wha","description":"List the visual themes of your account with name, visibility (public, premium or private), font and colors. Use for \"What Typeform themes can I use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 200, default 10).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_themesArguments","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_theme":{"post":{"operationId":"get_theme","summary":"Get one theme by id with colors, font, background settings, visibility and rounded-corner setting. Use for \"Show Typefor","description":"Get one theme by id with colors, font, background settings, visibility and rounded-corner setting. Use for \"Show Typeform theme th1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"theme_id":{"description":"Theme id from list_themes or a form's theme link.","maxLength":200,"title":"Theme Id","type":"string"}},"required":["theme_id"],"title":"get_themeArguments","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}}}}