{"openapi":"3.1.0","info":{"title":"Typeform Assets and Webhooks (BYOK) API","version":"0.1.0","description":"Typeform Assets and Webhooks (BYOK) lets an AI assistant read your own Typeform Assets and Webhooks data through the Typeform Assets and Webhooks API with a key you supply (personal access token). Read-only: 6 tools (list_form_webhooks, get_form_webhook, list_images, get_image, get_form_messages, list_translation_statuses). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-typeform-assets-webhooks.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-typeform-assets-webhooks/docs"},"termsOfService":"https://connectorbay.com/byok-typeform-assets-webhooks/terms"},"servers":[{"url":"https://byok-typeform-assets-webhooks.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-typeform-assets-webhooks/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_form_webhooks":{"post":{"operationId":"list_form_webhooks","summary":"List the webhooks configured on a form: id, tag, enabled flag, SSL verification, subscribed event types and dates. The d","description":"List the webhooks configured on a form: id, tag, enabled flag, SSL verification, subscribed event types and dates. The destination URL and signing secret are not returned by this tool. Use for \"Which webhooks does my typeform u6nXL7 have\".","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":"list_form_webhooksArguments","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_webhook":{"post":{"operationId":"get_form_webhook","summary":"Get one webhook of a form by its tag: id, enabled flag, SSL verification, subscribed event types and dates (destination ","description":"Get one webhook of a form by its tag: id, enabled flag, SSL verification, subscribed event types and dates (destination URL and secret not returned). Use for \"Show the webhook phoenix of my typeform 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"},"tag":{"description":"Webhook tag (its unique name) from list_form_webhooks, for example 'phoenix'.","maxLength":100,"title":"Tag","type":"string"}},"required":["form_id","tag"],"title":"get_form_webhookArguments","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_images":{"post":{"operationId":"list_images","summary":"List the images uploaded to the account (id, file name, source URL and upload source), newest first. Use for \"What image","description":"List the images uploaded to the account (id, file name, source URL and upload source), newest first. Use for \"What images are in my Typeform account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_imagesArguments","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_image":{"post":{"operationId":"get_image","summary":"Get the description of one uploaded image: URL, file name, size in pixels, MIME type, transparency flag and average colo","description":"Get the description of one uploaded image: URL, file name, size in pixels, MIME type, transparency flag and average color. Use for \"Describe the Typeform image XcXx\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"image_id":{"description":"Image id from list_images, for example 'XcXx'.","maxLength":100,"title":"Image Id","type":"string"}},"required":["image_id"],"title":"get_imageArguments","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_messages":{"post":{"operationId":"get_form_messages","summary":"Get the custom interface messages of a form (button hints, error texts, placeholders) in the form's language, as a flat ","description":"Get the custom interface messages of a form (button hints, error texts, placeholders) in the form's language, as a flat map of message keys to text. Use for \"What custom messages does my typeform u6nXL7 show\".","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_form_messagesArguments","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_translation_statuses":{"post":{"operationId":"list_translation_statuses","summary":"List the translation status of a form per language: language code and status (new, update_required or translated). Use f","description":"List the translation status of a form per language: language code and status (new, update_required or translated). Use for \"Which languages is my typeform u6nXL7 translated into\".","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":"list_translation_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}}}}