---
title: Statsig MCP V3 tool reference
description: "Look up the Statsig MCP V3 tools, their actions, and the inputs each one accepts."
product: general
lang: en
token_estimate: 2780
---
# Statsig MCP V3 tool reference

> For AI agents: a documentation index is available at [/llms.txt](/llms.txt). Append `.md` to any page URL for markdown, or send `Accept: text/markdown`.

Statsig MCP V3 exposes 18 default tools. Clients that use expanded tool exposure show 9 more tools. Tool visibility depends on your permissions and the server configuration. Use the live tool schemas for full nested fields and valid values.

## Start with these steps

1. Call `get_context` to check your project and permissions.
2. Use the direct tools for common tasks. Use `discover_tools` for other operations, reviews, and partial updates.
3. Confirm changes before you supply `confirmation`. Project permissions and review policies still apply.

## Request shapes

| Tool type | Request shape |
| --- | --- |
| Grouped read | `action` and `arguments.params` |
| Create | `params["application/json"]` |
| Update and `autotune_create` | `arguments.params` and `confirmation` |
| Discovered operation | `operationHandle` and `arguments`. Add `confirmation` for `api_destructive`. |

A `confirmation` looks like this:

```json
{ "acknowledged": true, "reason": "Describe the intended change" }
```

## Context and search

| Tool | Purpose | Inputs |
| --- | --- | --- |
| `get_context` | Get bounded project, permission, review, and product context. | Optional: `scope`, `fields`, `limit`. `scope` is `session` (default), `project`, or `all`. `fields` selects `organization`, `project`, `environment`, `permissions`, `reviewSettings`, `accessibleProducts`, `environments`, `eventSources`, `metrics`, `defaultTimezone`, or `links`. `limit` is 1-50 (default 20). |
| `search` | Search Statsig resources after you identify a resource type or target. If a request is underspecified, such as "the rollout" with no gate or config name, ask a clarifying question first. | Required: `query` (1-1024 characters). Optional: `limit` (1-100). |
| `fetch` | Fetch a resource you selected from a search result. | Required: `id`, the identifier `search` returned (at least 3 characters). |

## Read tools

Read tools are read-only. Supply `action` and `arguments.params`, and include `params` even when no fields are required.

### gate\_read

List, get, and inspect feature gates and their history.

| Action | Required | Optional |
| --- | --- | --- |
| `get_gate_details_by_id` | `path_id` | None |
| `get_gate_results` | `path_id`, `path_ruleID` | `query_cuped`, `query_confidence` |
| `get_gate_version_history` | `path_id` | `query_limit`, `query_page` |
| `get_list_of_gates` | None | `query_type`, `query_creatorName`, `query_tags`, `query_limit`, `query_page` |

### experiment\_read

List, get, inspect, and retrieve results for experiments.

| Action | Required | Optional |
| --- | --- | --- |
| `get_experiment_details_by_id` | `path_id` | `query_fields` |
| `get_experiment_metric_dimension_results` | `path_id`, `query_control`, `query_test`, `query_metricID` | `query_cuped`, `query_confidence`, `query_date` |
| `get_experiment_overall_results` | `path_id`, `query_control`, `query_test` | `query_cuped`, `query_confidence`, `query_date` |
| `get_experiment_version_history` | `path_id` | `query_limit`, `query_page` |
| `get_list_of_experiments` | None | `query_status`, `query_creatorName`, `query_tags`, `query_stale`, `query_teamID`, `query_createdStartDate`, `query_createdEndDate`, `query_ids`, `query_fields`, `query_limit`, `query_page` |
| `get_experiment_summary_charts` | `path_id` | `query_control`, `query_test` |

Use `query_fields` to return only the fields you need and reduce context consumption.

### dynamic\_config\_read

List, get, and inspect dynamic configs and their history.

| Action | Required | Optional |
| --- | --- | --- |
| `get_dynamic_config_details_by_id` | `path_id` | None |
| `get_dynamic_config_version_history` | `path_id` | `query_limit`, `query_page` |
| `get_list_of_dynamic_configs` | None | `query_creatorName`, `query_tags`, `query_limit`, `query_page` |

### metric\_read

List and inspect metrics and metric sources.

| Action | Required | Optional |
| --- | --- | --- |
| `get_list_of_metric_sources` | None | `query_limit`, `query_page` |
| `get_list_of_metrics` | None | `query_showHiddenMetrics`, `query_tags`, `query_filters`, `query_limit`, `query_page` |
| `get_metric_definition_by_id` | `path_id` | None |

### log\_read

Query Logs Explorer and inspect project audit and change history.

| Action | Required | Optional |
| --- | --- | --- |
| `get_audit_logs` | None | `query_id`, `query_sortKey`, `query_sortOrder`, `query_tags`, `query_actionTypes`, `query_startDate`, `query_endDate`, `query_limit`, `query_page` |
| `query_logs_explorer` | None | `query_query`, `query_source`, `query_columns`, `query_start_ts`, `query_end_ts`, `query_limit`, `query_after` |

### Expanded read tools

These tools appear when your client uses expanded tool exposure.

| Tool | Action | Required | Optional |
| --- | --- | --- | --- |
| `layer_read` | `get_layer_details_by_id` | `path_id` | None |
| `layer_read` | `get_layer_experiments` | `path_id` | `query_limit`, `query_page` |
| `layer_read` | `get_layer_overrides` | `path_id` | None |
| `layer_read` | `get_list_of_layers` | None | `query_limit`, `query_page` |
| `segment_read` | `get_list_of_segments` | None | `query_limit`, `query_page` |
| `segment_read` | `get_segment_by_id` | `path_id` | None |
| `param_store_read` | `get_list_of_param_stores` | None | `query_limit`, `query_page` |
| `param_store_read` | `get_param_store_details_by_id` | `path_id` | None |

## Create tools

Create tools take the body in `params["application/json"]`. The exception is `autotune_create`, which requires `arguments.params` and `confirmation`. The fields in the table describe the body.

| Tool | Availability | Required | Optional |
| --- | --- | --- | --- |
| `gate_create` | Default, write access | None | `name`, `rules`, `tags`, `idType`, `targetApps`, `team`, `id` |
| `experiment_create` | Default, write access | `name` | `description`, `idType`, `secondaryIDType`, `identifierMappingMode`, `allocation`, `layerID`, `targetingGateID`, `hypothesis`, `links`, `groups`, `primaryMetrics`, `secondaryMetrics`, `targetApps`, `tags`, `assignmentSourceName`, `assignmentSourceExperimentName`, `isAnalysisOnly`, `scheduledReloadHour`, `scheduledReloadType`, `scheduledReloadDays`, `turboMode`, `enabledNonProdEnvironments`, `team`, `id` |
| `dynamic_config_create` | Default, write access | `name` | `rules`, `defaultValue`, `idType`, `targetApps`, `team`, `tags`, `id` |
| `layer_create` | Expanded, write access | `name`, `idType` | `description`, `targetApps`, `team` |
| `segment_create` | Expanded, write access | `name`, `type` | `id`, `description`, `idType`, `tags`, `team`, `teamID`, `rules` |
| `param_store_create` | Expanded, write access | `name`, `description`, `displayName` | `targetAppIDs`, `tags`, `team` |
| `autotune_create` | Expanded, confirmation required | `variants`, `successEvent`, `explorationWindow`, `attributionWindow`, `winnerThreshold`, `name` | `description`, `successEventValue`, `attributionWindowUnit`, `explorationWindowRate`, `longtermExplorationAllocation`, `metadataField`, `higherIsBetter`, `isContextual`, `metricSourceID`, `linkedExperimentName`, `goalRichText`, `optimizationParameter`, `valueColumn`, `featureList`, `idType` |

In projects that use Target Apps, `gate_create` requires `targetApps` to contain at least one Target App name, not an internal database record ID.

## Update tools

Update tools require write access, `arguments.params`, and `confirmation`. Supply the resource identifier in `arguments.params.path_id` and the body in `arguments.params["application/json"]`.

Most update tools replace the whole resource. Read the current state first and preserve any field you don't intend to change. For a partial edit, such as adding a tag, use `discover_tools` to find the matching operation.

| Tool | Availability | Required | Optional |
| --- | --- | --- | --- |
| `gate_update` | Default | `isEnabled`, `description`, `rules` | `name`, `tags`, `idType`, `team`, `gradual_rollout_strategy` |
| `experiment_update` | Default | `description`, `idType`, `hypothesis`, `groups`, `allocation`, `targetingGateID`, `bonferroniCorrection`, `defaultConfidenceInterval`, `status` | `name`, `secondaryIDType`, `identifierMappingMode`, `links`, `primaryMetrics`, `secondaryMetrics`, `tags`, `scheduledReloadHour`, `scheduledReloadType`, `scheduledReloadDays`, `turboMode`, `enabledNonProdEnvironments`, `team`, `targetApps`, `duration` |
| `dynamic_config_update` | Default | `isEnabled`, `description`, `rules` | `name`, `defaultValue`, `idType`, `targetApps`, `team`, `tags` |
| `segment_update` | Expanded | `path_id`, `application/json` | `query_operation` |
| `param_store_update` | Expanded | None | `description`, `parameters` |

For `segment_update`, the request body depends on the selected operation and segment type. Read the live schema for the matching body variant. For `param_store_update`, use `path_id` for the Parameter Store identifier. Don't use `path_name`.

## Discover additional operations

`discover_tools` is read-only. Start with `resolve` when you know the task. Omit filters you're unsure about, especially `lane`, because updates and review actions can use `api_destructive`.

| Action | Required | Optional | Behavior |
| --- | --- | --- | --- |
| `resolve` | `query` | `category`, `lane`, `operationAction` | A confident match returns the contract and handle. An ambiguous match returns alternatives. |
| `resolve_many` | `requests` (1-5 independent queries) | Each request accepts `query` and optionally `category`, `lane`, `operationAction`. | Resolves operations only. Execution stays separate. |
| `list` | None | `query`, `category`, `lane`, `operationAction`, `limit` (1-10, default 5) | Use `get` to retrieve the chosen contract before you run it. |
| `get` | `operationId` | None | Returns the selected operation contract. |

### Run a discovered operation

1. Read the returned input schema, lane, and confirmation requirements.
2. Call the returned execution tool with its `operationHandle` and arguments that match the schema.
3. Retrieve a fresh handle when the current one expires.

| Execution tool | Access | Required inputs |
| --- | --- | --- |
| `api_read` | Read-only | `operationHandle`, `arguments` |
| `api_write` | Write access. The tool schema doesn't require confirmation. | `operationHandle`, `arguments` |
| `api_destructive` | Write access. Confirmation required. | `operationHandle`, `arguments`, `confirmation` |

Discovered arguments use `path`, `query`, and `body`. The `params` wrapper that direct tools use doesn't apply.

`api_destructive` covers sensitive updates and review actions, not only deletion. A confirmation requirement is separate from a project review. Approving a review doesn't commit its changes.

## Check responses

- Check `isError` before you read `structuredContent` data.
- Follow the selected operation's pagination.
- An empty result doesn't establish that a resource is safe to delete.

