{"openapi":"3.1.0","info":{"title":"VWO (BYOK) API","version":"0.1.0","description":"VWO (BYOK) lets an AI assistant read your own VWO data through the VWO API with a key you supply (VWO API token). Read-only: 9 tools (list_feature_flags, get_feature_flag, list_flag_projects_and_environments, list_flag_rules, get_flag_rule, list_websites, get_website, get_campaign, list_campaign_variations). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vwo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vwo/docs"},"termsOfService":"https://connectorbay.com/byok-vwo/terms"},"servers":[{"url":"https://byok-vwo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vwo/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_feature_flags":{"post":{"operationId":"list_feature_flags","summary":"List the feature flags of a workspace. The VWO docs do not describe the answer fields, so the raw answer is returned. Us","description":"List the feature flags of a workspace. The VWO docs do not describe the answer fields, so the raw answer is returned. Use for \"Which VWO feature flags exist in my main workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return.","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"}},"required":["account_id"],"title":"list_feature_flagsArguments","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_feature_flag":{"post":{"operationId":"get_feature_flag","summary":"Get one feature flag by id or key: name, type, variables with defaults, variations, goals and rule count (field list fro","description":"Get one feature flag by id or key: name, type, variables with defaults, variations, goals and rule count (field list from the VWO resource description). Use for \"What variables does the VWO flag new_checkout have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"},"feature_id":{"description":"Feature flag id or feature key.","maxLength":200,"title":"Feature Id","type":"string"}},"required":["account_id","feature_id"],"title":"get_feature_flagArguments","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_flag_projects_and_environments":{"post":{"operationId":"list_flag_projects_and_environments","summary":"List the feature-experimentation projects and their environments of a workspace, to find environment ids for rule lookup","description":"List the feature-experimentation projects and their environments of a workspace, to find environment ids for rule lookups. Use for \"Which VWO projects and environments do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_flag_projects_and_environmentsArguments","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_flag_rules":{"post":{"operationId":"list_flag_rules","summary":"List the targeting rules of one feature flag in one environment. Use for \"What targeting rules does the VWO flag new_che","description":"List the targeting rules of one feature flag in one environment. Use for \"What targeting rules does the VWO flag new_checkout have in production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"},"environment_id":{"description":"Environment id or key (from list_flag_projects_and_environments).","maxLength":200,"title":"Environment Id","type":"string"},"feature_id":{"description":"Feature flag id or feature key.","maxLength":200,"title":"Feature Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return.","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"}},"required":["account_id","environment_id","feature_id"],"title":"list_flag_rulesArguments","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_flag_rule":{"post":{"operationId":"get_flag_rule","summary":"Get one targeting rule of a feature flag in an environment. Use for \"Show rule 1 of the VWO flag new_checkout in product","description":"Get one targeting rule of a feature flag in an environment. Use for \"Show rule 1 of the VWO flag new_checkout in production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"},"environment_id":{"description":"Environment id or key (from list_flag_projects_and_environments).","maxLength":200,"title":"Environment Id","type":"string"},"feature_id":{"description":"Feature flag id or feature key.","maxLength":200,"title":"Feature Id","type":"string"},"rule_id":{"description":"Rule id or key (from list_flag_rules).","maxLength":200,"title":"Rule Id","type":"string"}},"required":["account_id","environment_id","feature_id","rule_id"],"title":"get_flag_ruleArguments","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_websites":{"post":{"operationId":"list_websites","summary":"List the websites (and apps) connected to the workspace with domain, platform, archive state and tracking status. Use fo","description":"List the websites (and apps) connected to the workspace with domain, platform, archive state and tracking status. Use for \"Which websites are set up in VWO and are they sending data\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_websitesArguments","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_website":{"post":{"operationId":"get_website","summary":"Get one website by id: domain, platform, archive and registration state, subdomain tracking and tracking status. Use for","description":"Get one website by id: domain, platform, archive and registration state, subdomain tracking and tracking status. Use for \"What is the tracking status of VWO website 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"},"website_id":{"description":"Website id (from list_websites).","title":"Website Id","type":"integer"}},"required":["account_id","website_id"],"title":"get_websiteArguments","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_campaign":{"post":{"operationId":"get_campaign","summary":"Get one A/B or other test campaign: type, status, traffic share, device, primary URL, thresholds and result statistics. ","description":"Get one A/B or other test campaign: type, status, traffic share, device, primary URL, thresholds and result statistics. Use for \"How is VWO campaign 12 performing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"},"campaign_id":{"description":"Campaign id.","title":"Campaign Id","type":"integer"}},"required":["account_id","campaign_id"],"title":"get_campaignArguments","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_campaign_variations":{"post":{"operationId":"list_campaign_variations","summary":"List the variations of a campaign with control flag, disabled flag and traffic split. Use for \"What variations does VWO ","description":"List the variations of a campaign with control flag, disabled flag and traffic split. Use for \"What variations does VWO campaign 12 have and how is traffic split\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Workspace id as a number, or the word 'current' for the main workspace.","maxLength":200,"title":"Account Id","type":"string"},"campaign_id":{"description":"Campaign id.","title":"Campaign Id","type":"integer"}},"required":["account_id","campaign_id"],"title":"list_campaign_variationsArguments","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}}}}