{"openapi":"3.1.0","info":{"title":"Statsig (BYOK) API","version":"0.1.0","description":"Statsig (BYOK) lets an AI assistant read your own Statsig data through the Statsig API with a key you supply (Statsig Console API key (a read-only key is enough)). Read-only: 10 tools (list_gates, get_gate, list_experiments, get_experiment, list_dynamic_configs, list_segments, list_layers, list_tags, list_metrics, list_audit_logs). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-statsig.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-statsig/docs"},"termsOfService":"https://connectorbay.com/byok-statsig/terms"},"servers":[{"url":"https://byok-statsig.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-statsig/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_gates":{"post":{"operationId":"list_gates","summary":"List feature gates with name, description, status (In Progress, Launched, Disabled, Archived), lifecycle type, enabled f","description":"List feature gates with name, description, status (In Progress, Launched, Disabled, Archived), lifecycle type, enabled flag, checks per hour and last change time (UTC milliseconds). Use for \"Which Statsig feature gates do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["TEMPORARY","PERMANENT","STALE","TEMPLATE"],"type":"string"},{"type":"null"}],"default":null,"description":"Only gates of this lifecycle type.","title":"Type"},"include_archived":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":"false","description":"Include archived gates.","title":"Include Archived"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_gatesArguments","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_gate":{"post":{"operationId":"get_gate","summary":"Get one feature gate by id: status, type, enabled flag, checks per hour, tags and console link. Use for \"Show Statsig ga","description":"Get one feature gate by id: status, type, enabled flag, checks per hour, tags and console link. Use for \"Show Statsig gate new_checkout\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Gate id (its name), as in list_gates.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_gateArguments","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_experiments":{"post":{"operationId":"list_experiments","summary":"List experiments with name, hypothesis, status (setup, active, decision_made, experiment_stopped and more), layer, start","description":"List experiments with name, hypothesis, status (setup, active, decision_made, experiment_stopped and more), layer, start and end time and allocation. Filter by status. Use for \"Which Statsig experiments are running\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["setup","active","decision_made","abandoned","archived","experiment_stopped","assignment_stopped"],"type":"string"},{"type":"null"}],"default":null,"description":"Only experiments with this status.","title":"Status"},"stale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only stale experiments.","title":"Stale"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_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 by id: hypothesis, status, layer, start and end time, allocation, tags and console link. Use for \"Sho","description":"Get one experiment by id: hypothesis, status, layer, start and end time, allocation, tags and console link. Use for \"Show Statsig experiment checkout_test\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Experiment id (its name), as in list_experiments.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"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_dynamic_configs":{"post":{"operationId":"list_dynamic_configs","summary":"List dynamic configs with name, description, status (Enabled, Disabled, Archived), lifecycle type, checks per hour and l","description":"List dynamic configs with name, description, status (Enabled, Disabled, Archived), lifecycle type, checks per hour and last change time. Use for \"Which Statsig dynamic configs exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["TEMPORARY","PERMANENT","STALE"],"type":"string"},{"type":"null"}],"default":null,"description":"Only configs of this lifecycle type.","title":"Type"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_dynamic_configsArguments","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_segments":{"post":{"operationId":"list_segments","summary":"List segments with name, description, type (id_list, rule_based, analysis_list), enabled flag, ID count for id lists and","description":"List segments with name, description, type (id_list, rule_based, analysis_list), enabled flag, ID count for id lists and tags. Use for \"Which Statsig segments exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_segmentsArguments","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 experiment layers with name, description, ID type, implicit-layer flag, tags and console link. Use for \"Which Stats","description":"List experiment layers with name, description, ID type, implicit-layer flag, tags and console link. Use for \"Which Statsig layers exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"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/list_tags":{"post":{"operationId":"list_tags","summary":"List tags used to organize gates, experiments, configs and metrics, with name, description and whether the tag is a core","description":"List tags used to organize gates, experiments, configs and metrics, with name, description and whether the tag is a core tag. Use for \"Which tags does my Statsig project use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_tagsArguments","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_metrics":{"post":{"operationId":"list_metrics","summary":"List metric definitions with name, type (ratio, sum, mean, funnel and more), description, desired direction, verified fl","description":"List metric definitions with name, type (ratio, sum, mean, funnel and more), description, desired direction, verified flag and tags. Use for \"Which metrics are defined in Statsig\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filters":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Plain search text to filter metrics by.","title":"Filters"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_metricsArguments","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_audit_logs":{"post":{"operationId":"list_audit_logs","summary":"List recent changes in the Statsig project (audit log): change name, action type, a change summary and date. Defaults to","description":"List recent changes in the Statsig project (audit log): change name, action type, a change summary and date. Defaults to the last 90 days. Use for \"What changed recently in my Statsig project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day to include, YYYY-MM-DD (default: 90 days before end date).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day to include, YYYY-MM-DD (default: today).","title":"End Date"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order by the sort key.","title":"Sort Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_audit_logsArguments","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}}}}