> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Statsig

The Statsig connector lets your AI agent act in each user's Statsig account. Each user connects their own Statsig API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 96 tools.

**Authentication:** API Key
**Categories:** Developer Tools, Analytics
**Tools:** 96: 53 read, 35 write, 8 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=STATSIG)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Statsig connection

   In **AgentKit > Connections**, create a Statsig connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'statsig'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Statsig:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'statsig_audit_overrides',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "statsig"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Statsig:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="statsig_audit_overrides",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Statsig credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'statsig_audit_overrides',
  toolInput: {},
  connector: 'statsig',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="statsig_audit_overrides",
    tool_input={},
    connection_name="statsig",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `statsig_audit_overrides`

Audit Overrides · Read-only

List the gates, experiments and layers that have overrides, optionally narrowed to one unit ID.
Returns each entity with overrides and the overridden IDs and groups.
Use statsig_audit_overrides to find every override affecting a user. Use statsig_get_gate_overrides or statsig_get_experiment_overrides for one entity.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id_type` (`string`, optional): Unit ID type that unit_id refers to, such as userID or stableID. Example: userID.
- `unit_id` (`string`, optional): Unit ID to audit. When set, only entities that override this ID are returned. Example: user_123.

Example input: `{}`

### `statsig_get_alert`

Get Topline Alert · Read-only

Get one topline metric alert by ID.
Returns the alert's name, metric, condition, thresholds, schedule, subscribers and mute status.
Use statsig_get_alert for one known alert. Use statsig_list_alerts to find alert IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `alert_id` (`string`, required): ID of the topline alert, as returned by statsig_list_alerts. Example: 6Yt2cVb8kq1LmNoPqRsTuv.

Example input: `{"alert_id":"<alert_id>"}`

### `statsig_get_dashboard`

Get Dashboard · Read-only

Get one dashboard by ID.
Returns the dashboard's name, description and widget definitions.
Use statsig_get_dashboard for one known dashboard. Use statsig_list_dashboards to find dashboard IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dashboard_id` (`string`, required): ID of the dashboard, as returned by statsig_list_dashboards. Example: 3kLmN8pQrS2tUvWxYz1AbC.

Example input: `{"dashboard_id":"<dashboard_id>"}`

### `statsig_get_dynamic_config`

Get Dynamic Config · Read-only

Get one dynamic config by ID.
Returns the config's name, description, isEnabled, defaultValue, rules with return values, schema, tags and owner.
Use statsig_get_dynamic_config for one known config. Use statsig_list_dynamic_configs to find config IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_get_event`

Get Recent Events by Name · Read-only

List recently logged events for one event name. Covers a limited rolling window, not full history.
Returns recent records for that event with value, metadata, user and timestamp, plus pagination info.
Use statsig_get_event to inspect one event's payloads. Use statsig_list_events for all events.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `event_name` (`string`, required): Name of the logged event. Example: add_to_cart.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{"event_name":"<event_name>"}`

### `statsig_get_experiment`

Get Experiment · Read-only

Get one experiment by ID.
Returns the experiment's full setup: name, hypothesis, status, groups with parameter values, allocation, layer, targeting gate, metrics, statistical settings and dates.
Use statsig_get_experiment for one known experiment. Use statsig_get_experiment_pulse_results for its metric results.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_get_experiment_cumulative_exposures`

Get Experiment Cumulative Exposures · Read-only

Get cumulative exposure counts for an experiment's groups over time.
Returns daily cumulative exposure counts per group.
Use statsig_get_experiment_cumulative_exposures to check enrollment balance. Use statsig_get_experiment_pulse_results for metric impact.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_get_experiment_overrides`

Get Experiment Overrides · Read-only

Get the overrides that force users, gates or segments into specific groups of an experiment.
Returns the gate and segment overrides and the user ID overrides with their target groups.
Use statsig_get_experiment_overrides to see forced assignments. Use statsig_update_experiment_overrides to add them.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_get_experiment_pulse_results`

Get Experiment Pulse Results · Read-only

Get Pulse metric results comparing a test group with a control group (beta endpoint).
Returns per-metric lifts, confidence intervals and statistical significance for the two groups.
Use statsig_get_experiment_pulse_results to read an experiment's outcome. Use statsig_get_experiment_cumulative_exposures for exposure counts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `control_group_id` (`string`, required): ID of the control group, from the experiment's groups. Example: Control.
- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `test_group_id` (`string`, required): ID of the test group to compare, from the experiment's groups. Example: Test.
- `confidence` (`string`, optional): Confidence interval percentage between 0 and 100. Example: 95.
- `cuped` (`string`, optional): Whether to apply CUPED variance reduction. Allowed values: true, false. Example: true.
- `date` (`string`, optional): Date of the results to read, in YYYY-MM-DD format. Defaults to the latest. Example: 2026-10-01.

Example input: `{"control_group_id":"<control_group_id>","experiment_id":"<experiment_id>","test_group_id":"<test_group_id>"}`

### `statsig_get_gate`

Get Feature Gate · Read-only

Get one feature gate by ID.
Returns the gate's full definition: name, description, isEnabled, status, idType, rules with conditions and pass percentages, tags, target apps and owner.
Use statsig_get_gate for one known gate. Use statsig_list_gates to find gate IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_get_gate_checks`

Get Feature Gate Check Activity · Read-only

Check whether a feature gate has been evaluated in production recently.
Returns has_production_checks_in_last_7_days.
Use statsig_get_gate_checks before archiving or deleting a gate to confirm it is no longer checked in code.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_get_gate_overrides`

Get Feature Gate Overrides · Read-only

Get the user and custom ID overrides set on a feature gate.
Returns passingUserIDs, failingUserIDs, passingCustomIDs, failingCustomIDs and per-environment overrides.
Use statsig_get_gate_overrides to see who is forced to pass or fail. Use statsig_add_gate_overrides to add IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_get_gate_rule_pulse_results`

Get Feature Gate Rule Pulse Results · Read-only

Get Pulse metric lift results for one rule of a feature gate.
Returns the metric impact of passing versus failing the rule, with confidence intervals.
Use statsig_get_gate_rule_pulse_results to measure a rollout's impact. Use statsig_get_experiment_pulse_results for experiments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `rule_id` (`string`, required): ID of the rule, as returned by the rules list for this entity. Example: 4XnxkZmGpqbV9lnT3ACJQo.
- `confidence` (`string`, optional): Confidence interval percentage between 0 and 100. Example: 95.
- `cuped` (`string`, optional): Whether to apply CUPED variance reduction. Allowed values: true, false. Example: true.

Example input: `{"gate_id":"<gate_id>","rule_id":"<rule_id>"}`

### `statsig_get_holdout`

Get Holdout · Read-only

Get one holdout by ID.
Returns the holdout's name, description, isEnabled, passPercentage, isGlobal, and the gates, experiments and layers it applies to.
Use statsig_get_holdout for one known holdout. Use statsig_list_holdouts to find holdout IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `holdout_id` (`string`, required): ID of the holdout, as returned by statsig_list_holdouts. Example: global_holdout_q4.

Example input: `{"holdout_id":"<holdout_id>"}`

### `statsig_get_layer`

Get Layer · Read-only

Get one layer by ID.
Returns the layer's name, description, idType, parameters with default values, target apps and experiments.
Use statsig_get_layer for one known layer. Use statsig_list_layer_experiments to list the experiments in it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `layer_id` (`string`, required): ID of the layer, as returned by statsig_list_layers. Example: checkout_layer.

Example input: `{"layer_id":"<layer_id>"}`

### `statsig_get_metric`

Get Metric Definition · Read-only

Get one metric's definition by ID.
Returns the metric's name, type, description, directionality, events or component metrics it is computed from, unit types and tags.
Use statsig_get_metric for how a metric is defined. Use statsig_get_metric_value for its value on a date.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `metric_id` (`string`, required): ID of the metric in the form <metric name>::<metric type>, as returned by statsig_list_metrics. Example: add_to_cart::event_count.

Example input: `{"metric_id":"<metric_id>"}`

### `statsig_get_metric_value`

Get Metric Value · Read-only

Get the value of one metric on one date.
Returns the metric's value records for that date.
Use statsig_get_metric_value for one metric. Use statsig_list_metric_values for every metric on a date.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `date` (`string`, required): Date to read, in YYYY-MM-DD format. Example: 2026-10-01.
- `metric_id` (`string`, required): ID of the metric in the form <metric name>::<metric type>, as returned by statsig_list_metrics. Example: add_to_cart::event_count.

Example input: `{"date":"<date>","metric_id":"<metric_id>"}`

### `statsig_get_param_store`

Get Param Store · Read-only

Get one param store by name.
Returns the store's description and each parameter with its type and the gate, config, experiment or static value it reads from.
Use statsig_get_param_store for one known store. Use statsig_list_param_stores to find store names.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `param_store_name` (`string`, required): Name of the param store, as returned by statsig_list_param_stores. Example: mobile_app_params.

Example input: `{"param_store_name":"<param_store_name>"}`

### `statsig_get_project`

Get Project · Read-only

Get information about the Statsig project the API key belongs to.
Returns the project's id, name and settings summary.
Use statsig_get_project to confirm which project the connection targets. Use statsig_list_environments for its environments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `statsig_get_release_pipeline`

Get Release Pipeline · Read-only

Get one release pipeline by ID.
Returns the pipeline's name, description and phases with their environments, approvals and wait times.
Use statsig_get_release_pipeline for one known pipeline. Use statsig_list_release_pipelines to find pipeline IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `release_pipeline_id` (`string`, required): ID of the release pipeline, as returned by statsig_list_release_pipelines. Example: 7AbCdEfGhIjKlMnOpQrStU.

Example input: `{"release_pipeline_id":"<release_pipeline_id>"}`

### `statsig_get_segment`

Get Segment · Read-only

Get one segment by ID.
Returns the segment's name, description, type, idType, rules (for rule-based segments), ID count (for ID lists) and tags.
Use statsig_get_segment for one known segment. Use statsig_list_segment_ids to read the IDs in an ID-list segment.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `segment_id` (`string`, required): ID of the segment, as returned by statsig_list_segments. Example: beta_testers.

Example input: `{"segment_id":"<segment_id>"}`

### `statsig_get_user`

Get User by Email · Read-only

Get one project member by email address.
Returns the user's email, name and role.
Use statsig_get_user to look up one member. Use statsig_list_users to browse all members.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Email address of the Statsig console user. Example: jane@example.com.

Example input: `{"email":"<email>"}`

### `statsig_list_alerts`

List Topline Alerts · Read-only

List topline metric alerts in the Statsig project.
Returns each alert's id, name, metric, condition, thresholds and mute status, plus pagination info.
Use statsig_list_alerts to browse alerts. Use statsig_get_alert for one alert's configuration.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_audit_logs`

List Audit Logs · Read-only

List audit log entries for changes made in the Statsig project, optionally filtered by entity, action or date range.
Returns each entry's id, entity name, action type, change log, date, time and the user who made the change, plus pagination info.
Use statsig_list_audit_logs for project-wide change history. Use statsig_list_gate_versions or statsig_list_experiment_versions for one entity.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `action_type` (`string`, optional): Only return entries with this action type. Example: gate_update.
- `end_date` (`string`, optional): Only return entries on or before this date (YYYY-MM-DD). Defaults to today. Example: 2026-09-30.
- `entity_id` (`string`, optional): Only return entries for this entity ID (a gate, config, experiment or other entity). Example: new_checkout_flow.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `sort_key` (`string`, optional): Field to sort by. Allowed values: id, name, changeLog, actionType, date, time, updatedBy, updatedByUserID. Example: date. One of: `id`, `name`, `changeLog`, `actionType`, `date`, `time`, `updatedBy`, `updatedByUserID`.
- `sort_order` (`string`, optional): Sort direction. Allowed values: asc, desc. Example: desc. One of: `asc`, `desc`.
- `start_date` (`string`, optional): Only return entries on or after this date (YYYY-MM-DD). Defaults to 90 days before end_date. Example: 2026-09-01.

Example input: `{}`

### `statsig_list_dashboards`

List Dashboards · Read-only

List dashboards in the Statsig project, optionally filtered by a partial name match.
Returns each dashboard's id, name, description and owner, plus pagination info.
Use statsig_list_dashboards to find dashboards. Use statsig_get_dashboard for one dashboard's widgets.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `search` (`string`, optional): Partial dashboard name to match. Example: Checkout.

Example input: `{}`

### `statsig_list_dynamic_config_rules`

List Dynamic Config Rules · Read-only

List the targeting rules of a dynamic config.
Returns each rule's id, name, passPercentage, conditions and returnValue.
Use statsig_list_dynamic_config_rules to get rule IDs before statsig_update_dynamic_config_rule or statsig_delete_dynamic_config_rule.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_list_dynamic_config_versions`

List Dynamic Config Versions · Read-only

List the saved versions of a dynamic config, optionally limited to a date range.
Returns each version's number, modification time, modifier and the config definition at that version.
Use statsig_list_dynamic_config_versions to see how a config changed over time.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.
- `end_date` (`string`, optional): Only include items on or before this date (inclusive), in YYYY-MM-DD format. Example: 2026-09-30.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `start_date` (`string`, optional): Only include items on or after this date, in YYYY-MM-DD format. Example: 2026-09-01.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_list_dynamic_configs`

List Dynamic Configs · Read-only

List dynamic configs in the Statsig project, with optional filters for type, staleness, team, target app, tag and creator.
Returns each config's id, name, description, isEnabled, default value, rules summary and tags, plus pagination info.
Use statsig_list_dynamic_configs to browse configs. Use statsig_get_dynamic_config to read one config's rules and values.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `creator_id` (`string`, optional): Only return entities created by the user with this Statsig user ID. Example: 5rfuqoxLIYTscuSaaCOlB8.
- `creator_name` (`string`, optional): Only return entities created by the user with this name. Example: Jane Doe.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `release_pipeline_id` (`string`, optional): Only return configs using this release pipeline ID. Example: 7AbCdEfGhIjKlMnOpQrStU.
- `tag` (`string`, optional): Only return configs with this tag name. Example: pricing.
- `target_app_id` (`string`, optional): Only return configs scoped to this target app ID. Example: web_app.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.
- `type` (`string`, optional): Only return configs of this lifecycle type. STALE configs are flagged by Statsig's nightly stale detection. Allowed values: TEMPORARY, PERMANENT, STALE. Example: PERMANENT. One of: `TEMPORARY`, `PERMANENT`, `STALE`.
- `type_reason` (`string`, optional): Only return configs with this stale classification reason. Allowed values: NONE, STALE_PROBABLY_DEAD_CHECK, STALE_NO_RULES, STALE_PROBABLY_FORGOTTEN, STALE_PROBABLY_LAUNCHED, STALE_PROBABLY_UNLAUNCHED. One of: `NONE`, `STALE_PROBABLY_DEAD_CHECK`, `STALE_NO_RULES`, `STALE_PROBABLY_FORGOTTEN`, `STALE_PROBABLY_LAUNCHED`, `STALE_PROBABLY_UNLAUNCHED`.

Example input: `{}`

### `statsig_list_environments`

List Environments · Read-only

List the environments defined in the Statsig project.
Returns each environment's name, id, production flag and review requirements.
Use statsig_list_environments to find environment names for rules and overrides.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `statsig_list_event_metrics`

List Metrics for Event · Read-only

List the metrics computed from an event name.
Returns each metric's id, name, type and definition, plus pagination info.
Use statsig_list_event_metrics to see which metrics an event feeds. Use statsig_list_metrics to search all metrics.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `event_name` (`string`, required): Name of the logged event. Example: add_to_cart.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{"event_name":"<event_name>"}`

### `statsig_list_events`

List Recent Events · Read-only

List recently logged events across all event names. Covers a limited rolling window, not full history.
Returns recent event records with event name, value, metadata, user and timestamp, plus pagination info.
Use statsig_list_events to see what is being logged. Use statsig_get_event for one event name.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_experiment_versions`

List Experiment Versions · Read-only

List the saved versions of an experiment, optionally limited to a date range.
Returns each version's number, modification time, modifier and the experiment definition at that version.
Use statsig_list_experiment_versions to see how an experiment's setup changed.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `end_date` (`string`, optional): Only include items on or before this date (inclusive), in YYYY-MM-DD format. Example: 2026-09-30.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `start_date` (`string`, optional): Only include items on or after this date, in YYYY-MM-DD format. Example: 2026-09-01.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_list_experiments`

List Experiments · Read-only

List experiments in the Statsig project, with optional filters for status, layer, unit type, team, creation date, type and tag.
Returns each experiment's id, name, description, status, hypothesis, groups, allocation, layer and metrics, plus pagination info.
Use statsig_list_experiments to browse or filter experiments. Use statsig_get_experiment for one experiment's full setup.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_end_date` (`string`, optional): Only return experiments created on or before this date (YYYY-MM-DD). Example: 2026-09-30.
- `created_start_date` (`string`, optional): Only return experiments created on or after this date (YYYY-MM-DD). Example: 2026-09-01.
- `creator_id` (`string`, optional): Only return entities created by the user with this Statsig user ID. Example: 5rfuqoxLIYTscuSaaCOlB8.
- `creator_name` (`string`, optional): Only return entities created by the user with this name. Example: Jane Doe.
- `experiment_type` (`string`, optional): Only return experiments of this type. Allowed values: BASE, GEO, SWITCHBACK, PROMPT, SIDECAR, GRID_SEARCH. Example: BASE. One of: `BASE`, `GEO`, `SWITCHBACK`, `PROMPT`, `SIDECAR`, `GRID_SEARCH`.
- `fields` (`string`, optional): Comma-separated top-level fields to return, to trim the response. id is always included. Example: id,name,status,groups.
- `id_type` (`string`, optional): Only return experiments randomized on this unit ID type. Example: userID.
- `ids` (`string`, optional): Comma-separated experiment IDs to fetch in one request (max 100). Example: checkout_button_color_test,onboarding_copy_test.
- `layer_id` (`string`, optional): Only return experiments in this layer ID. Example: checkout_layer.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `stale` (`boolean`, optional): Set true to return only stale experiments. Example: true.
- `status` (`string`, optional): Only return experiments with this status. Allowed values: active, setup, decision_made, abandoned, archived, experiment_stopped, assignment_stopped. Example: active. One of: `active`, `setup`, `decision_made`, `abandoned`, `archived`, `experiment_stopped`, `assignment_stopped`.
- `tag` (`string`, optional): Only return experiments with this tag name. Example: checkout.
- `target_app_id` (`string`, optional): Only return experiments scoped to this target app ID. Example: web_app.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.

Example input: `{}`

### `statsig_list_gate_rules`

List Feature Gate Rules · Read-only

List the targeting rules of a feature gate.
Returns each rule's id, name, passPercentage, conditions and environments.
Use statsig_list_gate_rules to get rule IDs before statsig_update_gate_rule or statsig_delete_gate_rule.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_list_gate_versions`

List Feature Gate Versions · Read-only

List the saved versions of a feature gate, newest first, optionally limited to a date range.
Returns each version's number, modification time, modifier and the gate definition at that version.
Use statsig_list_gate_versions to see how a gate changed. Use statsig_list_audit_logs for project-wide change history.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `end_date` (`string`, optional): Only include items on or before this date (inclusive), in YYYY-MM-DD format. Example: 2026-09-30.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `start_date` (`string`, optional): Only include items on or after this date, in YYYY-MM-DD format. Example: 2026-09-01.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_list_gates`

List Feature Gates · Read-only

List feature gates in the Statsig project, with optional filters for type, staleness, team, target app, tag and creator.
Returns each gate's id, name, description, status, type, rules summary, tags and owner, plus pagination info.
Use statsig_list_gates to browse or filter gates. Use statsig_get_gate to read one gate's full definition and rules.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `creator_id` (`string`, optional): Only return entities created by the user with this Statsig user ID. Example: 5rfuqoxLIYTscuSaaCOlB8.
- `creator_name` (`string`, optional): Only return entities created by the user with this name. Example: Jane Doe.
- `id_type` (`string`, optional): Only return gates that evaluate on this unit ID type. Example: userID.
- `include_archived` (`string`, optional): Set to "true" to include archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `tag` (`string`, optional): Only return gates with this tag name. Example: checkout.
- `target_app_id` (`string`, optional): Only return gates scoped to this target app ID. Example: web_app.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.
- `type` (`string`, optional): Only return gates of this lifecycle type. STALE gates are flagged by Statsig's nightly stale detection. Allowed values: TEMPORARY, PERMANENT, STALE, TEMPLATE. Example: TEMPORARY. One of: `TEMPORARY`, `PERMANENT`, `STALE`, `TEMPLATE`.
- `type_reason` (`string`, optional): Only return gates with this stale classification reason. Allowed values: NONE, STALE_PROBABLY_LAUNCHED, STALE_PROBABLY_UNLAUNCHED, STALE_PROBABLY_FORGOTTEN, STALE_NO_RULES, STALE_PROBABLY_DEAD_CHECK, STALE_EMPTY_CHECKS, STALE_ALL_TRUE, STALE_ALL_FALSE. One of: `NONE`, `STALE_PROBABLY_LAUNCHED`, `STALE_PROBABLY_UNLAUNCHED`, `STALE_PROBABLY_FORGOTTEN`, `STALE_NO_RULES`, `STALE_PROBABLY_DEAD_CHECK`, `STALE_EMPTY_CHECKS`, `STALE_ALL_TRUE`, `STALE_ALL_FALSE`.

Example input: `{}`

### `statsig_list_holdouts`

List Holdouts · Read-only

List holdouts (groups of users kept out of new features to measure cumulative impact).
Returns each holdout's id, name, description, passPercentage, attached gates, experiments and layers, plus pagination info.
Use statsig_list_holdouts to browse holdouts. Use statsig_get_holdout for one holdout.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `creator_id` (`string`, optional): Only return entities created by the user with this Statsig user ID. Example: 5rfuqoxLIYTscuSaaCOlB8.
- `creator_name` (`string`, optional): Only return entities created by the user with this name. Example: Jane Doe.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `tag` (`string`, optional): Only return holdouts with this tag name. Example: q4.

Example input: `{}`

### `statsig_list_layer_experiments`

List Layer Experiments · Read-only

List the experiments that belong to a layer.
Returns each experiment's id, name, status, allocation and groups, plus pagination info.
Use statsig_list_layer_experiments to see what shares a layer. Use statsig_list_experiments to search all experiments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `layer_id` (`string`, required): ID of the layer, as returned by statsig_list_layers. Example: checkout_layer.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{"layer_id":"<layer_id>"}`

### `statsig_list_layers`

List Layers · Read-only

List layers in the Statsig project.
Returns each layer's id, name, description, idType, parameters and experiments, plus pagination info.
Use statsig_list_layers to browse layers. Use statsig_get_layer for one layer's parameters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_metric_experiments`

List Experiments Using Metric · Read-only

List the experiments that use a given metric.
Returns each experiment's id, name, status and setup, plus pagination info.
Use statsig_list_metric_experiments to see where a metric is measured. Use statsig_list_experiments to search all experiments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `metric_id` (`string`, required): ID of the metric in the form <metric name>::<metric type>, as returned by statsig_list_metrics. Example: add_to_cart::event_count.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `status` (`string`, optional): Only return experiments with this status. Allowed values: active, setup, decision_made, abandoned, archived, experiment_stopped, assignment_stopped. Example: active. One of: `active`, `setup`, `decision_made`, `abandoned`, `archived`, `experiment_stopped`, `assignment_stopped`.

Example input: `{"metric_id":"<metric_id>"}`

### `statsig_list_metric_sources`

List Metric Sources · Read-only

List metric sources (warehouse tables or queries that metrics are computed from).
Returns each source's name, description, SQL or table, ID type mappings and owner, plus pagination info.
Use statsig_list_metric_sources to see where metric data comes from. Use statsig_list_metrics for the metrics themselves.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_metric_values`

List Metric Values · Read-only

List metric values for one date, optionally filtered to a metric name or type.
Returns each metric's name, type and value for the date, plus pagination info.
Use statsig_list_metric_values for a daily snapshot of many metrics. Use statsig_get_metric_value for one known metric.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `date` (`string`, required): Date to read, in YYYY-MM-DD format. Example: 2026-10-01.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `metric_name` (`string`, optional): Only return values for this metric name. Example: add_to_cart.
- `metric_type` (`string`, optional): Only return values for this metric type. Example: event_count.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{"date":"<date>"}`

### `statsig_list_metrics`

List Metrics · Read-only

List metric definitions in the Statsig project, optionally filtered by tag or search text.
Returns each metric's id (name::type), name, type, description, directionality, unit types, tags and verification status, plus pagination info.
Use statsig_list_metrics to find metric IDs and names. Use statsig_get_metric for one metric's definition, or statsig_list_metric_values for daily values.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `filters` (`string`, optional): Plain search text to match metrics against. Example: checkout.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `show_hidden_metrics` (`string`, optional): Set to "true" to include hidden metrics. Allowed values: true, false. Example: false. One of: `true`, `false`.
- `tag` (`string`, optional): Only return metrics with this tag ID (see statsig_list_tags). Example: revenue.

Example input: `{}`

### `statsig_list_param_stores`

List Param Stores · Read-only

List param stores, which group parameters whose values come from gates, configs, experiments or static values.
Returns each param store's name, description and parameters, plus pagination info.
Use statsig_list_param_stores to browse param stores. Use statsig_get_param_store for one store's parameters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_release_pipeline_triggers`

List Release Pipeline Triggers · Read-only

List release pipeline runs (triggers), optionally filtered by pipeline, gate, dynamic config, status or creation date.
Returns each trigger's id, pipeline, entity, status, current phase and timestamps, plus pagination info.
Use statsig_list_release_pipeline_triggers to track rollouts in progress. Use statsig_list_release_pipelines for pipeline definitions.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, optional): Only return triggers for this dynamic config ID. Example: pricing_page_config.
- `end_date` (`string`, optional): Only return triggers created on or before this date (YYYY-MM-DD, UTC). Example: 2026-09-30.
- `gate_id` (`string`, optional): Only return triggers for this feature gate ID. Example: new_checkout_flow.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.
- `release_pipeline_id` (`string`, optional): Only return triggers of this release pipeline ID. Example: 7AbCdEfGhIjKlMnOpQrStU.
- `start_date` (`string`, optional): Only return triggers created on or after this date (YYYY-MM-DD, UTC). Example: 2026-09-01.
- `status` (`string`, optional): Only return triggers with this status. Allowed values: IN_PROGRESS, PAUSED, ABORTED, COMPLETED. Example: IN_PROGRESS. One of: `IN_PROGRESS`, `PAUSED`, `ABORTED`, `COMPLETED`.

Example input: `{}`

### `statsig_list_release_pipelines`

List Release Pipelines · Read-only

List release pipelines, which roll gate and config changes through environments in phases.
Returns each pipeline's id, name, description and phases, plus pagination info.
Use statsig_list_release_pipelines to browse pipelines. Use statsig_list_release_pipeline_triggers to see runs in progress.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_segment_ids`

List Segment IDs · Read-only

List the IDs in an ID-list segment. Statsig rate-limits this endpoint.
Returns the list name, ID count and a page of IDs, plus pagination info.
Use statsig_list_segment_ids to read members of an ID-list segment. Use statsig_get_segment for the segment's settings.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `segment_id` (`string`, required): ID of the segment, as returned by statsig_list_segments. Example: beta_testers.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{"segment_id":"<segment_id>"}`

### `statsig_list_segments`

List Segments · Read-only

List segments (reusable user groups) in the Statsig project.
Returns each segment's id, name, description, type, idType, rules or ID count, and tags, plus pagination info.
Use statsig_list_segments to browse segments. Use statsig_get_segment for one segment's rules.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_tags`

List Tags · Read-only

List tags defined in the Statsig project.
Returns each tag's id, name, description and isCore flag, plus pagination info.
Use statsig_list_tags to find tag names for filters and for tagging gates, configs and experiments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_target_apps`

List Target Apps · Read-only

List target apps, which scope which SDK keys can evaluate a gate, config or experiment.
Returns each target app's id, name, description and attached entities, plus pagination info.
Use statsig_list_target_apps to find names for the target_apps fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_teams`

List Teams · Read-only

List teams in the Statsig project (Enterprise).
Returns each team's id, name, description, members and admins, plus pagination info.
Use statsig_list_teams to find team IDs for the team_id filters and fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_unit_id_types`

List Unit ID Types · Read-only

List the unit ID types (such as userID, stableID and custom IDs) defined in the project.
Returns each unit type's name and description, plus pagination info.
Use statsig_list_unit_id_types to find valid values for id_type fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_list_users`

List Users · Read-only

List members of the Statsig project.
Returns each user's email, first and last name and role, plus pagination info.
Use statsig_list_users to browse members. Use statsig_get_user to look up one member by email.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_stale_members` (`boolean`, optional): Set true to also return stale membership records. Defaults to false (current members only). Example: false.
- `limit` (`integer`, optional): Number of results to return per page. Example: 20.
- `page` (`integer`, optional): Page number to return, starting at 1. Use with limit to page through results. Example: 2.

Example input: `{}`

### `statsig_abandon_experiment`

Abandon Experiment · Write

Abandon an experiment, stopping it without shipping any group.
Returns a confirmation message.
Use statsig_abandon_experiment to stop a failed or invalid test. Use statsig_ship_experiment to launch a winning group.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `decision_reason` (`string`, required): Reason for abandoning, recorded on the experiment. Example: Logging bug invalidated the results.
- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.

Example input: `{"decision_reason":"<decision_reason>","experiment_id":"<experiment_id>"}`

### `statsig_add_gate_overrides`

Add Feature Gate Overrides · Write

Add IDs that are forced to pass or fail a feature gate, regardless of its rules. Existing overrides are kept.
Returns the gate's full override lists after the change.
Use statsig_add_gate_overrides to force specific users in or out. Use statsig_get_gate_overrides to read current overrides.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `environment_overrides` (`array`, optional): Alternative to the ID lists: per-environment overrides as a JSON array. Each entry names an environment (or null for all), a unitID type, and passingIDs and failingIDs arrays. Example: [{"environment": "staging", "unitID": "userID", "passingIDs": ["user_123"], "failingIDs": []}]
- `failing_custom_ids` (`array`, optional): Custom unit IDs forced to fail the gate, as a JSON array. Example: ["company_99"].
- `failing_user_ids` (`array`, optional): User IDs forced to fail the gate, as a JSON array. Send together with passing_user_ids (use [] for none). Example: ["user_456"].
- `passing_custom_ids` (`array`, optional): Custom unit IDs forced to pass the gate, as a JSON array. Example: ["company_42"].
- `passing_user_ids` (`array`, optional): User IDs forced to pass the gate, as a JSON array. Send together with failing_user_ids (use [] for none). Example: ["user_123"].

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_add_gate_rule`

Add Feature Gate Rule · Write

Add one targeting rule to a feature gate, keeping its existing rules.
Returns the updated gate definition with all rules.
Use statsig_add_gate_rule to append a rule. Use statsig_update_gate_rule to change an existing rule.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conditions` (`array`, required): Conditions a user must meet, as a JSON array. Each condition has a type (for example public, user_id, email, country, custom_field, passes_gate) and, for most types, an operator (any, none, str_contains_any, gt, version_gt, and so on) and a targetValue. Use [{"type": "public"}] to match everyone. Example: [{"type": "country", "operator": "any", "targetValue": ["US", "CA"]}]
- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `name` (`string`, required): Name of the new rule. Example: Internal users.
- `pass_percentage` (`number`, required): Percentage (0-100) of users matching the conditions who pass the gate. Example: 100.
- `environments` (`array`, optional): Environments this rule applies in, as a JSON array of environment names. Omit to apply in all environments. Example: ["production"].
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.

Example input: `{"conditions":[],"gate_id":"<gate_id>","name":"<name>","pass_percentage":100}`

### `statsig_add_segment_ids`

Add IDs to Segment · Write

Add IDs to an ID-list segment. Statsig rate-limits this endpoint (about 12 requests per 10 seconds).
Returns a confirmation message.
Use statsig_add_segment_ids to grow an ID list. Use statsig_remove_segment_ids to take IDs out.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `ids` (`array`, required): IDs to add, as a JSON array of strings. Example: ["user_123", "user_456"].
- `segment_id` (`string`, required): ID of the segment, as returned by statsig_list_segments. Example: beta_testers.

Example input: `{"ids":["user_123","user_456"],"segment_id":"<segment_id>"}`

### `statsig_archive_dynamic_config`

Archive Dynamic Config · Write

Archive a dynamic config, retiring it while keeping its history.
Returns the archived dynamic config.
Use statsig_archive_dynamic_config to retire a config. Use statsig_delete_dynamic_config to remove it permanently.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.
- `archive_reason` (`string`, optional): Reason for archiving, shown in the audit history. Example: Feature fully launched and code removed.
- `force_archive` (`boolean`, optional): Set true to archive even when other entities still reference this one. Example: false.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_archive_experiment`

Archive Experiment · Write

Archive an experiment, retiring it while keeping its results.
Returns a confirmation message.
Use statsig_archive_experiment to retire a finished experiment. Use statsig_delete_experiment to remove it permanently.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `archive_reason` (`string`, optional): Reason for archiving the experiment. Example: Decision shipped and code cleaned up.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_archive_gate`

Archive Feature Gate · Write

Archive a feature gate, retiring it while keeping its history.
Returns the archived gate definition.
Use statsig_archive_gate to retire a gate. Use statsig_unarchive_gate to restore it, or statsig_delete_gate to remove it permanently.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `archive_reason` (`string`, optional): Reason for archiving, shown in the audit history. Example: Feature fully launched and code removed.
- `force_archive` (`boolean`, optional): Set true to archive even when other entities still reference this one. Example: false.
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_archive_segment`

Archive Segment · Write

Archive a segment, retiring it while keeping its history.
Returns the archived segment.
Use statsig_archive_segment to retire a segment. Use statsig_delete_segment to remove it permanently.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `segment_id` (`string`, required): ID of the segment, as returned by statsig_list_segments. Example: beta_testers.

Example input: `{"segment_id":"<segment_id>"}`

### `statsig_conclude_experiment`

Conclude Experiment and Defer Decision · Write

Stop an experiment's assignment and analysis while deferring the ship decision.
Returns a confirmation message.
Use statsig_conclude_experiment to end data collection now and decide later. Use statsig_ship_experiment when a group is ready to ship.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `stop_reason` (`string`, optional): Optional reason for concluding the experiment. Example: Reached planned duration; reviewing results with the team.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_create_dynamic_config`

Create Dynamic Config · Write

Create a new dynamic config that serves JSON values to users, optionally with targeting rules.
Returns the created dynamic config, including its generated id.
Use statsig_create_dynamic_config for a new config. Use statsig_update_dynamic_config to change an existing one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Display name of the dynamic config. Statsig derives the ID from it in snake_case. Example: Pricing Page Config.
- `default_value` (`object`, optional): JSON object served when no rule matches. Example: {"currency": "USD", "show_banner": false}.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `id_type` (`string`, optional): Unit ID type the entity evaluates on, such as userID, stableID, or a custom unit ID type from statsig_list_unit_id_types. Example: userID.
- `is_enabled` (`boolean`, optional): Whether the config is enabled. A disabled config serves its default value to everyone. Example: true.
- `rules` (`array`, optional): Targeting rules as a JSON array. Each rule needs a name, a conditions array (same shape as gate conditions) and a returnValue JSON object served to users who match. passPercentage (0-100) is optional. Example: [{"name": "EU users", "passPercentage": 100, "conditions": [{"type": "country", "operator": "any", "targetValue": ["DE", "FR"]}], "returnValue": {"currency": "EUR"}}]
- `schema` (`string`, optional): Optional JSON Schema (Draft 2020-12), as a string, that every return value must satisfy. Example: {"type": "object", "properties": {"currency": {"type": "string"}}}.
- `tags` (`array`, optional): Tag names to attach, as a JSON array of strings. Tags must already exist (see statsig_list_tags). Example: ["checkout", "web"].
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].
- `team` (`string`, optional): Name of the owning team (Enterprise only). Example: Growth.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.

Example input: `{"name":"<name>"}`

### `statsig_create_experiment`

Create Experiment · Write

Create a new experiment in setup status, with groups, metrics and statistical settings.
Returns the created experiment, including its generated id and groups.
Use statsig_create_experiment to set up a test, then statsig_start_experiment to begin it. Use statsig_update_experiment to change an existing one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Display name of the experiment. Statsig derives the ID from it in snake_case. Example: Checkout Button Color Test.
- `allocation` (`number`, optional): Percentage (0-100) of the layer's traffic allocated to this experiment. Example: 100.
- `analytics_type` (`string`, optional): Statistical analysis mode. Allowed values: frequentist, bayesian, sprt. Example: frequentist. One of: `frequentist`, `bayesian`, `sprt`.
- `bonferroni_correction` (`boolean`, optional): Whether to apply a Bonferroni correction per variant. Example: false.
- `control_group_id` (`string`, optional): ID of the group to treat as control. Defaults to the first group. Example: Control.
- `default_confidence_interval` (`string`, optional): Default confidence interval for results. Allowed values: 80, 90, 95, 98, 99. Example: 95. One of: `80`, `90`, `95`, `98`, `99`.
- `description` (`string`, optional): Summary of what the experiment tests. Example: Tests a green checkout button against the current blue one.
- `duration` (`integer`, optional): Planned length of the experiment in days. Example: 14.
- `groups` (`array`, optional): Test groups as a JSON array. Each group needs a name, a size (percentage; sizes add up to 100) and parameterValues, a JSON object of the parameter values that group serves. Example: [{"name": "Control", "size": 50, "parameterValues": {"button_color": "blue"}}, {"name": "Test", "size": 50, "parameterValues": {"button_color": "green"}}]
- `hypothesis` (`string`, optional): Statement the experiment tests. Example: A green button increases checkout completion.
- `id_type` (`string`, optional): Unit ID type users are randomized on, such as userID or stableID. Example: userID.
- `layer_id` (`string`, optional): Layer to place the experiment in, so it shares traffic with other experiments in that layer. Example: checkout_layer.
- `primary_metric_tags` (`array`, optional): Metric tag names whose metrics are treated as primary, as a JSON array. Example: ["revenue"].
- `primary_metrics` (`array`, optional): Main metrics used to judge the hypothesis, as a JSON array of objects with the metric name and type (from statsig_list_metrics). Example: [{"name": "purchase", "type": "event_count"}]
- `secondary_metric_tags` (`array`, optional): Metric tag names whose metrics are treated as secondary, as a JSON array. Example: ["engagement"].
- `secondary_metrics` (`array`, optional): Additional metrics to monitor, as a JSON array of objects with name and type. Example: [{"name": "add_to_cart", "type": "event_count"}]
- `sequential_testing` (`boolean`, optional): Whether to apply sequential testing so results can be read early. Example: true.
- `tags` (`array`, optional): Tag names to attach, as a JSON array of strings. Tags must already exist (see statsig_list_tags). Example: ["checkout", "web"].
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].
- `targeting_gate_id` (`string`, optional): ID of a feature gate users must pass to enter the experiment. Example: new_checkout_flow.
- `team` (`string`, optional): Name of the owning team (Enterprise only). Example: Growth.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.

Example input: `{"name":"<name>"}`

### `statsig_create_gate`

Create Feature Gate · Write

Create a new feature gate, optionally with targeting rules.
Returns the created gate, including its generated id, rules and status.
Use statsig_create_gate for a new gate. Use statsig_update_gate to change an existing gate, or statsig_add_gate_rule to add one rule.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Display name of the gate. Statsig derives the gate ID from it in snake_case. Example: New Checkout Flow.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `id_type` (`string`, optional): Unit ID type the entity evaluates on, such as userID, stableID, or a custom unit ID type from statsig_list_unit_id_types. Example: userID.
- `is_enabled` (`boolean`, optional): Whether the gate is enabled. A disabled gate returns false for everyone. Example: true.
- `rules` (`array`, optional): Targeting rules, evaluated in order, as a JSON array. Each rule needs a name, a passPercentage (0-100), and a conditions array. Each condition has a type (for example public, user_id, email, country, custom_field, passes_gate, environment_tier), and most types also take an operator (any, none, str_contains_any, gt, lt, version_gt, and so on) and a targetValue. custom_field conditions also take a field name. Optionally limit a rule to specific environments. Example: [{"name": "Internal users", "passPercentage": 100, "conditions": [{"type": "email", "operator": "str_contains_any", "targetValue": ["@example.com"]}]}]
- `tags` (`array`, optional): Tag names to attach, as a JSON array of strings. Tags must already exist (see statsig_list_tags). Example: ["checkout", "web"].
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].
- `team` (`string`, optional): Name of the owning team (Enterprise only). Example: Growth.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.
- `type` (`string`, optional): Lifecycle type: TEMPORARY for a rollout you plan to remove, PERMANENT for a long-lived gate. Allowed values: PERMANENT, TEMPORARY. Example: TEMPORARY. One of: `PERMANENT`, `TEMPORARY`.

Example input: `{"name":"<name>"}`

### `statsig_create_holdout`

Create Holdout · Write

Create a holdout.
Returns the created holdout, including its id.
Use statsig_create_holdout to start one, then statsig_update_holdout to set its percentage and attach gates, experiments or layers.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the holdout. Example: Q4 Global Holdout.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `id_type` (`string`, optional): Unit ID type the entity evaluates on, such as userID, stableID, or a custom unit ID type from statsig_list_unit_id_types. Example: userID.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.

Example input: `{"name":"<name>"}`

### `statsig_create_layer`

Create Layer · Write

Create a layer, a container that lets experiments share parameters and split traffic without overlapping.
Returns the created layer, including its id.
Use statsig_create_layer before creating experiments that must be mutually exclusive. Use statsig_update_layer to add parameters.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id_type` (`string`, required): Unit ID type the entity evaluates on, such as userID, stableID, or a custom unit ID type from statsig_list_unit_id_types. Example: userID.
- `name` (`string`, required): Name of the layer, formatted as an ID ("Checkout Layer" becomes "checkout_layer"). Example: checkout_layer.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].
- `team` (`string`, optional): Name of the team responsible for the layer. Example: Growth.

Example input: `{"id_type":"<id_type>","name":"<name>"}`

### `statsig_create_segment`

Create Segment · Write

Create a segment, either rule-based (users matching conditions) or an ID list.
Returns the created segment.
Use statsig_create_segment for a new reusable user group. Then use statsig_add_segment_ids to fill an ID list, or statsig_update_segment_rules to set rules.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the segment. Example: Beta Testers.
- `type` (`string`, required): Kind of segment: rule_based (defined by conditions), id_list (an uploaded list of IDs), user_store_id_list or analysis_list. Allowed values: id_list, rule_based, analysis_list, user_store_id_list. Example: id_list. One of: `id_list`, `rule_based`, `analysis_list`, `user_store_id_list`.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `id_type` (`string`, optional): Unit ID type the entity evaluates on, such as userID, stableID, or a custom unit ID type from statsig_list_unit_id_types. Example: userID.
- `rules` (`array`, optional): Rules for a rule_based segment as a JSON array. Each rule needs a name, a passPercentage (0-100), and a conditions array. Each condition has a type (for example public, user_id, email, country, custom_field, passes_gate, environment_tier), and most types also take an operator (any, none, str_contains_any, gt, lt, version_gt, and so on) and a targetValue. custom_field conditions also take a field name. Optionally limit a rule to specific environments. Example: [{"name": "Internal users", "passPercentage": 100, "conditions": [{"type": "email", "operator": "str_contains_any", "targetValue": ["@example.com"]}]}]
- `segment_id` (`string`, optional): Optional ID for the segment. Defaults to the name. Example: beta_testers.
- `tags` (`array`, optional): Tag names to attach, as a JSON array of strings. Tags must already exist (see statsig_list_tags). Example: ["checkout", "web"].
- `team` (`string`, optional): Name of the owning team (Enterprise only). Example: Growth.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.

Example input: `{"name":"<name>","type":"id_list"}`

### `statsig_create_tag`

Create Tag · Write

Create a tag for organizing gates, configs, experiments and metrics.
Returns the created tag with its id.
Use statsig_create_tag before attaching a new tag name. Use statsig_update_tag to rename one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `description` (`string`, required): What the tag is used for. Example: Everything related to the checkout funnel.
- `name` (`string`, required): Name of the tag. Example: checkout.
- `is_core` (`boolean`, optional): Whether this is a core tag, highlighted across the console. Example: false.

Example input: `{"description":"<description>","name":"<name>"}`

### `statsig_disable_dynamic_config`

Disable Dynamic Config · Write

Disable a dynamic config so it serves its default value to everyone.
Returns the updated dynamic config.
Use statsig_disable_dynamic_config to stop targeting. Use statsig_enable_dynamic_config to turn it back on.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_disable_gate`

Disable Feature Gate · Write

Disable a feature gate so it returns false for every user.
Returns the updated gate definition.
Use statsig_disable_gate as a kill switch. Use statsig_enable_gate to turn it back on.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_enable_dynamic_config`

Enable Dynamic Config · Write

Enable a dynamic config so its rules are evaluated again.
Returns the updated dynamic config.
Use statsig_enable_dynamic_config to turn a config back on. Use statsig_disable_dynamic_config to turn it off.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_enable_gate`

Enable Feature Gate · Write

Enable a feature gate so its rules are evaluated again.
Returns the updated gate definition.
Use statsig_enable_gate to turn a gate back on. Use statsig_disable_gate to turn it off, or statsig_launch_gate to pass it for everyone.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_launch_gate`

Launch Feature Gate · Write

Launch a feature gate so it passes for everyone, marking the rollout as complete.
Returns the updated gate definition.
Use statsig_launch_gate when a rollout is finished. Use statsig_update_gate to change percentages instead.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_schedule_experiment_start`

Schedule Experiment Start · Write

Schedule an experiment to start at a future time.
Returns a confirmation message.
Use statsig_schedule_experiment_start for a delayed start. Use statsig_start_experiment to start immediately.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `scheduled_time` (`number`, required): Start time as a Unix timestamp in milliseconds. Example: 1767225600000.

Example input: `{"experiment_id":"<experiment_id>","scheduled_time":1767225600000}`

### `statsig_ship_experiment`

Ship Experiment Group · Write

Finish an experiment by shipping one group to everyone.
Returns a confirmation message.
Use statsig_ship_experiment to launch the winning group. Use statsig_abandon_experiment to stop without shipping, or statsig_conclude_experiment to stop and decide later.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `decision_reason` (`string`, required): Reason for the decision, recorded on the experiment. Example: Test group raised checkout conversion by 3%.
- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `group_id` (`string`, required): ID of the group to ship, from the experiment's groups. Example: Test.
- `holdout` (`integer`, optional): Integer percentage of users to hold back on the old experience after shipping. Example: 5.
- `remove_targeting` (`boolean`, optional): Whether to remove the targeting gate when shipping. Example: false.

Example input: `{"decision_reason":"<decision_reason>","experiment_id":"<experiment_id>","group_id":"<group_id>"}`

### `statsig_start_experiment`

Start Experiment · Write

Start an experiment so users begin being assigned to its groups.
Returns a confirmation message.
Use statsig_start_experiment to start now. Use statsig_schedule_experiment_start to start at a future time.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `analysis_end_time` (`string`, optional): Warehouse Native analysis-only experiments: end time of the analysis window (ISO 8601). Example: 2026-09-15T00:00:00Z.
- `analysis_start_time` (`string`, optional): Warehouse Native analysis-only experiments: start time of the analysis window (ISO 8601). Example: 2026-09-01T00:00:00Z.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_unarchive_gate`

Unarchive Feature Gate · Write

Restore an archived feature gate.
Returns the restored gate definition.
Use statsig_unarchive_gate to bring back a gate archived with statsig_archive_gate.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.
- `unarchive_reason` (`string`, optional): Reason for unarchiving, shown in the audit history. Example: Restoring for a follow-up test.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_update_dynamic_config`

Update Dynamic Config · Write

Partially update a dynamic config. Only the fields you send change; sending rules replaces the whole rule list.
Returns the updated dynamic config.
Use statsig_update_dynamic_config to change the default value, settings or all rules. Use statsig_update_dynamic_config_rule to change a single rule.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.
- `default_value` (`object`, optional): New JSON object served when no rule matches. Example: {"currency": "USD", "show_banner": true}.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `dry_run` (`boolean`, optional): Set true to validate the update without saving it. Example: false.
- `is_enabled` (`boolean`, optional): Whether the config is enabled. Example: true.
- `name` (`string`, optional): New display name. Example: Pricing Page Config v2.
- `rules` (`array`, optional): Full replacement list of rules as a JSON array; omitted rules are removed. Each rule needs a name, a conditions array (same shape as gate conditions) and a returnValue JSON object served to users who match. passPercentage (0-100) is optional. Example: [{"name": "EU users", "passPercentage": 100, "conditions": [{"type": "country", "operator": "any", "targetValue": ["DE", "FR"]}], "returnValue": {"currency": "EUR"}}]
- `tags` (`array`, optional): Tag names to attach, as a JSON array of strings. Tags must already exist (see statsig_list_tags). Example: ["checkout", "web"].
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].
- `team` (`string`, optional): Name of the owning team (Enterprise only). Example: Growth.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.
- `type` (`string`, optional): Lifecycle type: PERMANENT to mark the config long-lived, TEMPORARY to unmark it. Allowed values: PERMANENT, TEMPORARY. Example: PERMANENT. One of: `PERMANENT`, `TEMPORARY`.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_update_dynamic_config_rule`

Update Dynamic Config Rule · Write

Update one rule of a dynamic config. Only the fields you send change.
Returns the updated dynamic config.
Use statsig_update_dynamic_config_rule to change one rule's conditions or return value. Use statsig_update_dynamic_config to replace all rules.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.
- `rule_id` (`string`, required): ID of the rule, as returned by the rules list for this entity. Example: 4XnxkZmGpqbV9lnT3ACJQo.
- `conditions` (`array`, optional): Replacement conditions as a JSON array. Each condition has a type and, for most types, an operator and a targetValue. Example: [{"type": "country", "operator": "any", "targetValue": ["US", "CA"]}]
- `dry_run` (`boolean`, optional): Set true to validate the update without saving it. Example: false.
- `environments` (`array`, optional): Environments this rule applies in, as a JSON array of environment names. Example: ["production"].
- `name` (`string`, optional): New name for the rule. Example: EU users.
- `pass_percentage` (`number`, optional): Percentage (0-100) of matching users who get this rule's return value. Example: 100.
- `return_value` (`object`, optional): JSON object served to users who match this rule. Example: {"currency": "EUR"}.

Example input: `{"dynamic_config_id":"<dynamic_config_id>","rule_id":"<rule_id>"}`

### `statsig_update_experiment`

Update Experiment · Write

Partially update an experiment's setup. Only the fields you send change.
Returns the updated experiment.
Use statsig_update_experiment to edit groups, metrics or settings. Use statsig_start_experiment, statsig_ship_experiment or statsig_abandon_experiment to change its status.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `allocation` (`number`, optional): Percentage (0-100) of the layer's traffic allocated to this experiment. Example: 100.
- `analytics_type` (`string`, optional): Statistical analysis mode. Allowed values: frequentist, bayesian, sprt. Example: frequentist. One of: `frequentist`, `bayesian`, `sprt`.
- `bonferroni_correction` (`boolean`, optional): Whether to apply a Bonferroni correction per variant. Example: false.
- `control_group_id` (`string`, optional): ID of the group to treat as control. Defaults to the first group. Example: Control.
- `default_confidence_interval` (`string`, optional): Default confidence interval for results. Allowed values: 80, 90, 95, 98, 99. Example: 95. One of: `80`, `90`, `95`, `98`, `99`.
- `description` (`string`, optional): Summary of what the experiment tests. Example: Tests a green checkout button against the current blue one.
- `duration` (`integer`, optional): Planned length of the experiment in days. Example: 14.
- `groups` (`array`, optional): Test groups as a JSON array. Each group needs a name, a size (percentage; sizes add up to 100) and parameterValues, a JSON object of the parameter values that group serves. Example: [{"name": "Control", "size": 50, "parameterValues": {"button_color": "blue"}}, {"name": "Test", "size": 50, "parameterValues": {"button_color": "green"}}]
- `hypothesis` (`string`, optional): Statement the experiment tests. Example: A green button increases checkout completion.
- `id_type` (`string`, optional): Unit ID type users are randomized on, such as userID or stableID. Example: userID.
- `name` (`string`, optional): New display name. Example: Checkout Button Color Test v2.
- `primary_metric_tags` (`array`, optional): Metric tag names whose metrics are treated as primary, as a JSON array. Example: ["revenue"].
- `primary_metrics` (`array`, optional): Main metrics used to judge the hypothesis, as a JSON array of objects with the metric name and type (from statsig_list_metrics). Example: [{"name": "purchase", "type": "event_count"}]
- `secondary_metric_tags` (`array`, optional): Metric tag names whose metrics are treated as secondary, as a JSON array. Example: ["engagement"].
- `secondary_metrics` (`array`, optional): Additional metrics to monitor, as a JSON array of objects with name and type. Example: [{"name": "add_to_cart", "type": "event_count"}]
- `sequential_testing` (`boolean`, optional): Whether to apply sequential testing so results can be read early. Example: true.
- `tags` (`array`, optional): Tag names to attach, as a JSON array of strings. Tags must already exist (see statsig_list_tags). Example: ["checkout", "web"].
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].
- `targeting_gate_id` (`string`, optional): ID of a feature gate users must pass to enter the experiment. Example: new_checkout_flow.
- `team` (`string`, optional): Name of the owning team (Enterprise only). Example: Growth.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_update_experiment_overrides`

Update Experiment Overrides · Write

Add overrides that force users, or members of a gate or segment, into specific experiment groups.
Returns the experiment's overrides after the change.
Use statsig_update_experiment_overrides for QA or forced assignment. Use statsig_get_experiment_overrides to read current overrides.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.
- `overrides` (`array`, required): Gate or segment overrides as a JSON array (use [] for none). Each entry has a type (gate or segment), the gate or segment id, and the groupID its members are forced into. Example: [{"type": "segment", "id": "beta_testers", "groupID": "Test"}]
- `user_id_overrides` (`array`, required): User ID overrides as a JSON array (use [] for none). Each entry has a groupID and an ids array of user IDs forced into that group; optionally an environment and unitType. Example: [{"groupID": "Test", "ids": ["user_123"]}]

Example input: `{"experiment_id":"<experiment_id>","overrides":[{"type":"segment","id":"beta_testers","groupID":"Test"}],"user_id_overrides":[]}`

### `statsig_update_gate`

Update Feature Gate · Write

Partially update a feature gate. Only the fields you send change; sending rules replaces the whole rule list.
Returns the updated gate definition.
Use statsig_update_gate to edit settings or replace all rules. Use statsig_update_gate_rule to change a single rule, or statsig_enable_gate and statsig_disable_gate to toggle it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `is_enabled` (`boolean`, optional): Whether the gate is enabled. A disabled gate returns false for everyone. Example: true.
- `name` (`string`, optional): New display name for the gate. Example: New Checkout Flow v2.
- `rules` (`array`, optional): Full replacement list of targeting rules as a JSON array; omitted rules are removed. Each rule needs a name, a passPercentage (0-100), and a conditions array. Each condition has a type (for example public, user_id, email, country, custom_field, passes_gate, environment_tier), and most types also take an operator (any, none, str_contains_any, gt, lt, version_gt, and so on) and a targetValue. custom_field conditions also take a field name. Optionally limit a rule to specific environments. Example: [{"name": "Internal users", "passPercentage": 100, "conditions": [{"type": "email", "operator": "str_contains_any", "targetValue": ["@example.com"]}]}]
- `tags` (`array`, optional): Tag names to attach, as a JSON array of strings. Tags must already exist (see statsig_list_tags). Example: ["checkout", "web"].
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].
- `team` (`string`, optional): Name of the owning team (Enterprise only). Example: Growth.
- `team_id` (`string`, optional): ID of the owning team (Enterprise only), as returned by statsig_list_teams. Example: 2bC4dE6fG8hI0jK2lM4nO6.
- `type` (`string`, optional): Lifecycle type: TEMPORARY or PERMANENT. Allowed values: PERMANENT, TEMPORARY. Example: PERMANENT. One of: `PERMANENT`, `TEMPORARY`.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_update_gate_rule`

Update Feature Gate Rule · Write

Update one targeting rule of a feature gate. Only the fields you send change.
Returns the updated gate definition with all rules.
Use statsig_update_gate_rule to change one rule's percentage or conditions. Use statsig_update_gate to replace every rule at once.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `rule_id` (`string`, required): ID of the rule, as returned by the rules list for this entity. Example: 4XnxkZmGpqbV9lnT3ACJQo.
- `conditions` (`array`, optional): Replacement conditions as a JSON array. Each condition has a type and, for most types, an operator and a targetValue. Example: [{"type": "country", "operator": "any", "targetValue": ["US", "CA"]}]
- `environments` (`array`, optional): Environments this rule applies in, as a JSON array of environment names. Example: ["production", "staging"].
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.
- `name` (`string`, optional): New name for the rule. Example: Internal users.
- `pass_percentage` (`number`, optional): Percentage (0-100) of users matching the conditions who pass. Example: 50.

Example input: `{"gate_id":"<gate_id>","rule_id":"<rule_id>"}`

### `statsig_update_holdout`

Update Holdout · Write

Partially update a holdout. Only the fields you send change.
Returns the updated holdout.
Use statsig_update_holdout to change its percentage or attach gates, experiments and layers.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `holdout_id` (`string`, required): ID of the holdout, as returned by statsig_list_holdouts. Example: global_holdout_q4.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `experiment_ids` (`array`, optional): Experiment IDs the holdout applies to, as a JSON array. Example: ["checkout_button_color_test"].
- `gate_ids` (`array`, optional): Feature gate IDs the holdout applies to, as a JSON array. Example: ["new_checkout_flow"].
- `is_enabled` (`boolean`, optional): Whether the holdout is active. Example: true.
- `is_global` (`boolean`, optional): Whether the holdout applies to all new gates automatically. Example: false.
- `layer_ids` (`array`, optional): Layer IDs the holdout applies to, as a JSON array. Example: ["checkout_layer"].
- `pass_percentage` (`number`, optional): Percentage of users (0-10) held out. Example: 5.
- `targeting_gate_id` (`string`, optional): ID of a gate that limits who can be held out. Send an empty string to clear it. Example: us_users_only.

Example input: `{"holdout_id":"<holdout_id>"}`

### `statsig_update_layer`

Update Layer · Write

Partially update a layer's description, parameters or target apps.
Returns the updated layer.
Use statsig_update_layer to add or change layer parameters. Use statsig_get_layer to read current parameters first.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `layer_id` (`string`, required): ID of the layer, as returned by statsig_list_layers. Example: checkout_layer.
- `description` (`string`, optional): Short summary of what this is used for. Example: Rolls out the redesigned checkout to web users.
- `parameters` (`array`, optional): Layer parameters as a JSON array. Each parameter has a name, a type (string, number, boolean, object or array), a defaultValue of that type and an optional description. Example: [{"name": "button_color", "type": "string", "defaultValue": "blue"}]
- `target_apps` (`array`, optional): Target app names to scope evaluation to, as a JSON array of strings (see statsig_list_target_apps). Example: ["web_app"].

Example input: `{"layer_id":"<layer_id>"}`

### `statsig_update_segment_rules`

Update Segment Rules · Write

Replace the rules of a rule-based segment.
Returns the updated segment.
Use statsig_update_segment_rules to change who matches a rule-based segment. Use statsig_add_segment_ids for ID-list segments.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `rules` (`array`, required): Full replacement list of rules as a JSON array. Each rule needs a name, a passPercentage (0-100), and a conditions array. Each condition has a type (for example public, user_id, email, country, custom_field, passes_gate, environment_tier), and most types also take an operator (any, none, str_contains_any, gt, lt, version_gt, and so on) and a targetValue. custom_field conditions also take a field name. Optionally limit a rule to specific environments. Example: [{"name": "Internal users", "passPercentage": 100, "conditions": [{"type": "email", "operator": "str_contains_any", "targetValue": ["@example.com"]}]}]
- `segment_id` (`string`, required): ID of the segment, as returned by statsig_list_segments. Example: beta_testers.

Example input: `{"rules":[],"segment_id":"<segment_id>"}`

### `statsig_update_tag`

Update Tag · Write

Update a tag's name, description or core flag.
Returns the updated tag.
Use statsig_update_tag to rename or describe a tag. Use statsig_list_tags to find tag IDs.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tag_id` (`string`, required): ID of the tag returned when it was created, or the tag name. An exact ID match takes precedence over a name match. Example: checkout.
- `description` (`string`, optional): New description. Example: Checkout funnel gates and experiments.
- `is_core` (`boolean`, optional): Whether this is a core tag. Example: true.
- `name` (`string`, optional): New name for the tag. Example: checkout-funnel.

Example input: `{"tag_id":"<tag_id>"}`

### `statsig_delete_dynamic_config`

Delete Dynamic Config · Destructive

Permanently delete a dynamic config.
Returns a confirmation message.
Use statsig_delete_dynamic_config to remove a config for good. Use statsig_archive_dynamic_config to retire it while keeping history.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.

Example input: `{"dynamic_config_id":"<dynamic_config_id>"}`

### `statsig_delete_dynamic_config_rule`

Delete Dynamic Config Rule · Destructive

Delete one rule from a dynamic config.
Returns the updated dynamic config with the remaining rules.
Use statsig_delete_dynamic_config_rule to remove a single rule. Use statsig_list_dynamic_config_rules to find rule IDs.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `dynamic_config_id` (`string`, required): ID of the dynamic config, as returned by statsig_list_dynamic_configs. Example: pricing_page_config.
- `rule_id` (`string`, required): ID of the rule, as returned by the rules list for this entity. Example: 4XnxkZmGpqbV9lnT3ACJQo.

Example input: `{"dynamic_config_id":"<dynamic_config_id>","rule_id":"<rule_id>"}`

### `statsig_delete_experiment`

Delete Experiment · Destructive

Permanently delete an experiment.
Returns a confirmation message.
Use statsig_delete_experiment to remove an experiment for good. Use statsig_archive_experiment to retire it while keeping results.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `experiment_id` (`string`, required): ID of the experiment, as returned by statsig_list_experiments. Example: checkout_button_color_test.

Example input: `{"experiment_id":"<experiment_id>"}`

### `statsig_delete_gate`

Delete Feature Gate · Destructive

Permanently delete a feature gate.
Returns a confirmation message.
Use statsig_delete_gate to remove a gate for good. Use statsig_archive_gate to retire it while keeping its history.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.

Example input: `{"gate_id":"<gate_id>"}`

### `statsig_delete_gate_rule`

Delete Feature Gate Rule · Destructive

Delete one targeting rule from a feature gate.
Returns the updated gate definition with the remaining rules.
Use statsig_delete_gate_rule to remove a single rule. Use statsig_list_gate_rules to find rule IDs.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `gate_id` (`string`, required): ID of the feature gate, as returned by statsig_list_gates (usually the gate name in snake_case). Example: new_checkout_flow.
- `rule_id` (`string`, required): ID of the rule, as returned by the rules list for this entity. Example: 4XnxkZmGpqbV9lnT3ACJQo.
- `include_archive_metadata` (`string`, optional): Set to "true" to include archivedAt, archivedBy and archiveReason on archived gates. Allowed values: true, false. Example: true. One of: `true`, `false`.

Example input: `{"gate_id":"<gate_id>","rule_id":"<rule_id>"}`

### `statsig_delete_layer`

Delete Layer · Destructive

Permanently delete a layer.
Returns a confirmation message.
Use statsig_delete_layer to remove an unused layer. Use statsig_list_layer_experiments first to check it holds no experiments.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `layer_id` (`string`, required): ID of the layer, as returned by statsig_list_layers. Example: checkout_layer.

Example input: `{"layer_id":"<layer_id>"}`

### `statsig_delete_segment`

Delete Segment · Destructive

Permanently delete a segment.
Returns a confirmation message.
Use statsig_delete_segment to remove a segment for good. Use statsig_archive_segment to retire it while keeping history.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `segment_id` (`string`, required): ID of the segment, as returned by statsig_list_segments. Example: beta_testers.

Example input: `{"segment_id":"<segment_id>"}`

### `statsig_remove_segment_ids`

Remove IDs from Segment · Destructive

Remove IDs from an ID-list segment. Statsig rate-limits this endpoint (about 12 requests per 10 seconds).
Returns a confirmation message.
Use statsig_remove_segment_ids to take IDs out of a list. Use statsig_add_segment_ids to add them.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `ids` (`array`, required): IDs to remove, as a JSON array of strings. Example: ["user_123"].
- `segment_id` (`string`, required): ID of the segment, as returned by statsig_list_segments. Example: beta_testers.

Example input: `{"ids":["user_123"],"segment_id":"<segment_id>"}`

## Related

Other Developer Tools connectors ([all 117](/agentkit/connectors/?category=developer-tools)):

- [GitHub](/agentkit/connectors/github/): Scalekit connector, OAuth, 217 tools
- [Microsoft Entra ID](/agentkit/connectors/microsoftentraid/): Scalekit connector, OAuth, 82 tools
- [Datadog](/agentkit/connectors/datadog/): Scalekit connector, API key, 105 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
