For AI agents: a documentation index is available at /llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.
Statsig MCP V3 tool reference
Look up the Statsig MCP V3 tools, their actions, and the inputs each one accepts.
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
- Call
get_contextto check your project and permissions. - Use the direct tools for common tasks. Use
discover_toolsfor other operations, reviews, and partial updates. - 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:
{ "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
- Read the returned input schema, lane, and confirmation requirements.
- Call the returned execution tool with its
operationHandleand arguments that match the schema. - 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
isErrorbefore you readstructuredContentdata. - Follow the selected operation's pagination.
- An empty result doesn't establish that a resource is safe to delete.
Was this helpful?