{"openapi":"3.1.0","info":{"title":"LaunchDarkly Experiments (BYOK) API","version":"0.1.0","description":"LaunchDarkly Experiments (BYOK) lets an AI assistant read your own LaunchDarkly Experiments data through the LaunchDarkly Experiments API with a key you supply (LaunchDarkly API access token (a Reader role token is enough; commercial site, not EU or federal)). Read-only: 8 tools (list_environment_experiments, list_project_experiments, get_experiment, list_holdouts, get_holdout, list_layers,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-launchdarkly-experiments.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-launchdarkly-experiments/docs"},"termsOfService":"https://connectorbay.com/byok-launchdarkly-experiments/terms"},"servers":[{"url":"https://byok-launchdarkly-experiments.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-launchdarkly-experiments/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_environment_experiments":{"post":{"operationId":"list_environment_experiments","summary":"List the experiments of one environment with methodology, data source, tags and the current iteration status, start and ","description":"List the experiments of one environment with methodology, data source, tags and the current iteration status, start and end time. Times are milliseconds since the Unix epoch. Use for \"Which experiments are running in production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"},"environment_key":{"description":"Key of the environment inside the project, for example 'production'.","maxLength":100,"title":"Environment Key","type":"string"},"lifecycle_state":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"active","description":"Comma-separated archived states to include: active, archived or both.","title":"Lifecycle State"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field:value filters, for example 'status:running'; see LaunchDarkly's experiments API docs for the supported fields.","title":"Filter"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"required":["project_key","environment_key"],"title":"list_environment_experimentsArguments","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_project_experiments":{"post":{"operationId":"list_project_experiments","summary":"List a project's experiments across all environments with methodology, tags and the current iteration status. Use for \"L","description":"List a project's experiments across all environments with methodology, tags and the current iteration status. Use for \"List all experiments in the default LaunchDarkly project, in any environment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"},"lifecycle_state":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"active","description":"Comma-separated archived states to include: active, archived or both.","title":"Lifecycle State"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field:value filters; see LaunchDarkly's experiments API docs for the supported fields.","title":"Filter"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"required":["project_key"],"title":"list_project_experimentsArguments","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_experiment":{"post":{"operationId":"get_experiment","summary":"Get one experiment with its analysis settings and current iteration (hypothesis, status, start and end time, winning tre","description":"Get one experiment with its analysis settings and current iteration (hypothesis, status, start and end time, winning treatment). Use for \"Show the checkout-button-test experiment in production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"},"environment_key":{"description":"Key of the environment inside the project, for example 'production'.","maxLength":100,"title":"Environment Key","type":"string"},"experiment_key":{"description":"Key of the experiment (from list_environment_experiments).","maxLength":100,"title":"Experiment Key","type":"string"}},"required":["project_key","environment_key","experiment_key"],"title":"get_experimentArguments","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_holdouts":{"post":{"operationId":"list_holdouts","summary":"List the holdouts of one environment with status and the experiments attached to each. Use for \"What holdouts exist in p","description":"List the holdouts of one environment with status and the experiments attached to each. Use for \"What holdouts exist in production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"},"environment_key":{"description":"Key of the environment inside the project, for example 'production'.","maxLength":100,"title":"Environment Key","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"required":["project_key","environment_key"],"title":"list_holdoutsArguments","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_holdout":{"post":{"operationId":"get_holdout","summary":"Get one holdout by key with status, holdout percentage and its base and related experiments. Use for \"Show the q4-holdou","description":"Get one holdout by key with status, holdout percentage and its base and related experiments. Use for \"Show the q4-holdout holdout in production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"},"environment_key":{"description":"Key of the environment inside the project, for example 'production'.","maxLength":100,"title":"Environment Key","type":"string"},"holdout_key":{"description":"Key of the holdout (from list_holdouts).","maxLength":100,"title":"Holdout Key","type":"string"}},"required":["project_key","environment_key","holdout_key"],"title":"get_holdoutArguments","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_layers":{"post":{"operationId":"list_layers","summary":"List a project's experiment layers with the randomization unit and the environments each layer applies to. Use for \"Whic","description":"List a project's experiment layers with the randomization unit and the environments each layer applies to. Use for \"Which experiment layers does the default project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only layers containing this experiment, written 'experimentKey:<key>'.","title":"Filter"}},"required":["project_key"],"title":"list_layersArguments","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_experimentation_settings":{"post":{"operationId":"get_experimentation_settings","summary":"Show a project's experimentation settings: the available randomization units and which one is the default. Use for \"What","description":"Show a project's experimentation settings: the available randomization units and which one is the default. Use for \"What randomization units can I use for experiments in the default project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"}},"required":["project_key"],"title":"get_experimentation_settingsArguments","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_metric_groups":{"post":{"operationId":"list_metric_groups","summary":"List a project's metric groups (standard or funnel) with their metrics and how many experiments use each. Use for \"Which","description":"List a project's metric groups (standard or funnel) with their metrics and how many experiments use each. Use for \"Which metric groups exist in the default project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_key":{"description":"Key of the LaunchDarkly project, for example 'default'.","maxLength":100,"title":"Project Key","type":"string"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Filters such as 'kind:funnel' or 'query:checkout'; see LaunchDarkly's metrics API docs.","title":"Filter"},"sort":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Fields to sort by, comma-separated; prefix with - for descending.","title":"Sort"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"required":["project_key"],"title":"list_metric_groupsArguments","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}}}}