{"openapi":"3.1.0","info":{"title":"Klaviyo Forms (BYOK) API","version":"0.1.0","description":"Klaviyo Forms (BYOK) lets an AI assistant read your own Klaviyo Forms data through the Klaviyo Forms API with a key you supply (private API key (starts with pk_)). Read-only: 7 tools (list_forms, get_form, list_form_versions, get_form_version, list_webhooks, get_webhook, list_webhook_topics). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-klaviyo-forms-webhooks.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-klaviyo-forms-webhooks/docs"},"termsOfService":"https://connectorbay.com/byok-klaviyo-forms-webhooks/terms"},"servers":[{"url":"https://byok-klaviyo-forms-webhooks.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-klaviyo-forms-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_forms":{"post":{"operationId":"list_forms","summary":"List signup forms with name, live or draft status, A/B test flag and dates, at most 100 per page. The form design is not","description":"List signup forms with name, live or draft status, A/B test flag and dates, at most 100 per page. The form design is not returned. Needs the forms:read scope. Use for \"Which signup forms are live in Klaviyo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter. Fields: id (any, equals), name (any, contains, equals), ab_test (equals), status (equals live or draft), created_at and updated_at take greater-than, greater-or-equal, less-than, less-or-equal.","title":"Filter"},"sort":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field; prefix with - for descending. One of: created_at, updated_at.","title":"Sort"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: take the page[cursor] value from the query string of links.next in the previous answer; leave empty for the first page.","title":"Cursor"}},"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 signup form by ID: name, status, A/B test flag and dates (the form design is not returned). Use for \"Is the Klav","description":"Get one signup form by ID: name, status, A/B test flag and dates (the form design is not returned). Use for \"Is the Klaviyo footer signup form live\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"ID of the form.","maxLength":120,"title":"Id","type":"string"}},"required":["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_form_versions":{"post":{"operationId":"list_form_versions","summary":"List the versions of one form (popup, embed, flyout, full page or banner) with variation name, status and dates, at most","description":"List the versions of one form (popup, embed, flyout, full page or banner) with variation name, status and dates, at most 100 per page. Use for \"Which versions does my Klaviyo footer form have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"ID of the form.","maxLength":120,"title":"Id","type":"string"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter. Fields: form_type (any, equals popup, embed, full_page, flyout or banner), status (equals live or draft), created_at and updated_at take greater-than, greater-or-equal, less-than, less-or-equal.","title":"Filter"},"sort":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field; prefix with - for descending. One of: created_at, updated_at.","title":"Sort"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: take the page[cursor] value from the query string of links.next in the previous answer; leave empty for the first page.","title":"Cursor"}},"required":["id"],"title":"list_form_versionsArguments","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_version":{"post":{"operationId":"get_form_version","summary":"Get one form version by ID: type, variation name, status and dates (the design is not returned). Use for \"What type of f","description":"Get one form version by ID: type, variation name, status and dates (the design is not returned). Use for \"What type of form is Klaviyo form version 9876\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"ID of the form version.","maxLength":120,"title":"Id","type":"string"}},"required":["id"],"title":"get_form_versionArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List webhook subscriptions with name, description, enabled flag and dates. The endpoint URL is not returned. Needs the w","description":"List webhook subscriptions with name, description, enabled flag and dates. The endpoint URL is not returned. Needs the webhooks:read scope. Use for \"Which webhooks are enabled in my Klaviyo account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_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_webhook":{"post":{"operationId":"get_webhook","summary":"Get one webhook subscription by ID: name, description, enabled flag and dates (the endpoint URL is not returned). Use fo","description":"Get one webhook subscription by ID: name, description, enabled flag and dates (the endpoint URL is not returned). Use for \"Is Klaviyo webhook W1 enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"ID of the webhook.","maxLength":120,"title":"Id","type":"string"}},"required":["id"],"title":"get_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_webhook_topics":{"post":{"operationId":"list_webhook_topics","summary":"List the event topics a webhook can subscribe to, such as event:klaviyo.sent_sms. Use for \"Which topics can I subscribe ","description":"List the event topics a webhook can subscribe to, such as event:klaviyo.sent_sms. Use for \"Which topics can I subscribe a Klaviyo webhook to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_webhook_topicsArguments","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}}}}