Skip to content

Connectors · Developer & infrastructure

Optimizely Feature Experimentation MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Optimizely Feature Experimentation and the rest of your systems. It gives your agent 170 Optimizely Feature Experimentation actions (83 reads, 67 writes and 20 that wait for a confirmation) and holds the Optimizely Feature Experimentation credential itself, so the agent never does. It paces Optimizely Feature Experimentation's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "optimizely_feature_experimentation.projects.list_projects",  intent: "check which Optimizely Feature Experimentation account is connected"}# List Projects · read · 1 upstream call
  • 170actionsin one signed file
  • 83readlook, never change
  • 67writecreate and update
  • 20wait for a yesdestructive, confirmed first

Set up

Connect Optimizely Feature Experimentation in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Optimizely Feature Experimentation.

    Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • access_tokenOptimizely personal access token (Profile > API Access > Generate New Token in app.optimizely.com), or an OAuth 2.0…
    account { op: "connections.requirements", service: "optimizely_feature_experimentation" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "optimizely_feature_experimentation.projects.list_projects" }# list projects · read · 1 upstream callcheck { action: "optimizely_feature_experimentation.projects.create_project", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Optimizely Feature Experimentation at a glance

Sign-in
Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
access_token
Limits we pace to
2 calls a second and 120 a minute, per connection
API covered
Optimizely Feature Experimentation (Flags) API v1, REST API v2, Flags Scheduling API and Permission Service (OpenAPI 3)api.optimizely.com
Built from
Optimizely Feature Experimentation's documentation, read 23 October 2026docs.developers.optimizely.comapi.optimizely.comdocs.developers.optimizely.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
79 of 83 reads, for up to 5 minutes; a write clears what it affects
Shared entities
2, so ask can line Optimizely Feature Experimentation up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Optimizely Feature Experimentation.

170 actions in 38 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 83readlook, never change
  • 67writecreate and update
  • 20destructivewait for a confirmation
  1. Groups

    12

    4 read · 6 write · 2 destructive

    Create an Exclusion Group · Create an Exclusion Group · List Exclusion Groups · List Exclusion Groups

  2. Holdouts

    11

    5 read · 4 write · 2 destructive

    Create a new Holdout · Create a cross-project Holdout · Fetch experiments associated with a holdout · List Holdouts for a project

  3. Change approvals

    8

    4 read · 4 write · 0 destructive

    Create an Approval for a flag in an environment · List Approvals · List Environment Approval Settings · Archive Approval

  4. Experiments

    8

    5 read · 2 write · 1 destructive

    Create an Experiment · List Experiments · Read an Experiment · Update an Experiment

  5. Flags

    8

    3 read · 4 write · 1 destructive

    List Flags · Create a New Flag · Fetch a Single Flag · Delete a Flag

  6. Variations

    8

    3 read · 4 write · 1 destructive

    Brainstorm variations definitions using AI · Create a New Variation · List Variations · Archive Variations

  7. Environments

    7

    4 read · 2 write · 1 destructive

    Get Environments by Project · Create an Environment · Read an Environment · Update an Environment

  8. Reports

    7

    3 read · 2 write · 2 destructive

    List Reports · Archive Reports · Fetch a Single Report · Get Experiment Result's Report

30 more areas · 101 actions
  • Approval policies 6
  • Change requests 6
  • Variable definitions 6
  • Attributes 5
  • Custom fields 5
  • Events 5
  • Features 5
  • List attributes 5
  • Rulesets 5
  • Scheduled jobs 5
  • Team management 5
  • Webhooks 5
  • Audiences 4
  • Entity 4
  • Projects 4
  • Rules 4
  • Collaborators 3
  • Subject access requests 3
  • Export credentials 2
  • Impressions usage 2
  • Scheduled change 2
  • Scheduled changes 2
  • Attribution 1
  • Change history 1
  • Changes 1
  • Duplicate flags 1
  • Experiment summary 1
  • Plan 1
  • Search 1
  • User 1

Top actions

The Optimizely Feature Experimentation API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 23 of Optimizely Feature Experimentation's 23 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
optimizely_feature_experimentation.projects.list_projectsList ProjectsList Projects.readwork.project.list109 connectors
optimizely_feature_experimentation.projects.create_projectCreate a ProjectCreate a Project.writework.project.create102 connectors
optimizely_feature_experimentation.environments.list_environments_v2Get Environments by ProjectGet Environments by Project.readdevops.environment.list24 connectors
optimizely_feature_experimentation.environments.create_environmentCreate an EnvironmentCreate an Environment.writedevops.environment.create18 connectors
optimizely_feature_experimentation.flags.list_flagsList FlagsList Flags.readdevops.feature_flag.list12 connectors
optimizely_feature_experimentation.flags.create_flagCreate a New FlagCreate a New Flag.writedevops.feature_flag.create8 connectors
optimizely_feature_experimentation.collaborators.list_collaboratorsList CollaboratorsList Collaborators.readidentity.user.list474 connectors
optimizely_feature_experimentation.flags.delete_flagDelete a FlagDelete a Flag.destructivedevops.feature_flag.delete9 connectors
optimizely_feature_experimentation.webhooks.create_webhookCreate a WebhookCreate a Webhook.writeautomation.webhook.create209 connectors
optimizely_feature_experimentation.webhooks.list_webhooksGet Webhooks by ProjectGet Webhooks by Project.readautomation.webhook.list202 connectors
optimizely_feature_experimentation.user.get_meGet current User informationGet current User information.readidentity.current_user.get307 connectors
optimizely_feature_experimentation.experiments.create_experimentCreate an ExperimentCreate an Experiment.writeanalytics.experiment.create12 connectors

Try it

Prompts to paste into Claude.

Each one names the Optimizely Feature Experimentation actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Give me a one-line status for every active Optimizely Feature Experimentation project.

    callsoptimizely_feature_experimentation.projects.list_projects

  2. Writewrite

    Create a Project in Optimizely Feature Experimentation. Show me exactly what you will send before you save it.

    callsoptimizely_feature_experimentation.projects.create_project

Governance for Optimizely Feature Experimentation

Destructive actions wait for a yes.

20 Optimizely Feature Experimentation actions are destructive. These are all of them:

  • Delete a Flagoptimizely_feature_experimentation.flags.delete_flag
  • Delete a Webhookoptimizely_feature_experimentation.webhooks.delete_webhook
  • Archive a Custom Eventoptimizely_feature_experimentation.events.delete_custom_event
  • Archive an Attributeoptimizely_feature_experimentation.attributes.delete_attribute
  • Delete a Variationoptimizely_feature_experimentation.variations.delete_variation
  • Archive an Experimentoptimizely_feature_experimentation.experiments.delete_experiment
  • Archive an Environmentoptimizely_feature_experimentation.environments.delete_environment
  • Delete an Exclusion Groupoptimizely_feature_experimentation.groups.delete_group
  • Delete a Reportoptimizely_feature_experimentation.reports.delete_report
  • Reset the results for a Reportoptimizely_feature_experimentation.reports.reset_results
  • Archive an Exclusion Groupoptimizely_feature_experimentation.groups.delete_group_v2
  • Archive a Featureoptimizely_feature_experimentation.features.delete_feature
  • Delete a Holdoutoptimizely_feature_experimentation.holdouts.delete_holdout
  • Delete Teamoptimizely_feature_experimentation.team_management.delete_team
  • Archive a Scheduled Joboptimizely_feature_experimentation.scheduled_jobs.delete_scheduled_job
  • Delete a cross-project Holdoutoptimizely_feature_experimentation.holdouts.delete_holdout_cross_project
  • Archive a List Attributeoptimizely_feature_experimentation.list_attributes.archive_list_attribute
  • Delete an approval policyoptimizely_feature_experimentation.approval_policies.delete_approval_policy
  • Delete a Scheduled Change for a flag in an environmentoptimizely_feature_experimentation.scheduled_change.delete_scheduled_change
  • Delete a Variable Definitionoptimizely_feature_experimentation.variable_definitions.delete_variable_definition

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dooptimizely_feature_experimentation.flags.delete_flagconfirm_policy: human

Delete a Flag?

intent: the user asked me to delete a Flag

run suspended · waiting for a named person · key optimizely-feature-experimentation-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "optimizely-feature-experimentation-agent",  allowed_actions: ["optimizely_feature_experimentation.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "optimizely_feature_experimentation.flags.delete_flag", approver: "[email protected]" },    { match: "optimizely_feature_experimentation.webhooks.delete_webhook", approver: "[email protected]" },    { match: "optimizely_feature_experimentation.events.delete_custom_event", approver: "[email protected]" }  ]}
Illustrative. Scoped to Optimizely Feature Experimentation only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Optimizely Feature Experimentation costs on actionlake.

Every Optimizely Feature Experimentation action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Optimizely Feature Experimentation refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 170 Optimizely Feature Experimentation actions
  • 170actions pageeach page of a long list is one call
  • 79reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Optimizely Feature Experimentation action.

170 actions by area: the id your agent calls, what it does, and its effect.

Groups12
  • optimizely_feature_experimentation.groups.archive_groupsArchive Exclusion Groupswrite
  • optimizely_feature_experimentation.groups.create_groupCreate an Exclusion Groupwrite
  • optimizely_feature_experimentation.groups.create_group_v2Create an Exclusion Groupwrite
  • optimizely_feature_experimentation.groups.delete_groupDelete an Exclusion Groupdestructive
  • optimizely_feature_experimentation.groups.delete_group_v2Archive an Exclusion Groupdestructive
  • optimizely_feature_experimentation.groups.fetch_groupFetch a Single Exclusion Groupread
  • optimizely_feature_experimentation.groups.get_groupGet an Exclusion Groupread
  • optimizely_feature_experimentation.groups.list_groupsList Exclusion Groupsread
  • optimizely_feature_experimentation.groups.list_groups_v2List Exclusion Groupsread
  • optimizely_feature_experimentation.groups.unarchive_groupsUnarchive Exclusion Groupswrite
  • optimizely_feature_experimentation.groups.update_groupUpdate an Exclusion Groupwrite
  • optimizely_feature_experimentation.groups.update_groupsUpdate Exclusion Groupswrite
Holdouts11
  • optimizely_feature_experimentation.holdouts.create_holdoutCreate a new Holdoutwrite
  • optimizely_feature_experimentation.holdouts.create_holdout_cross_projectCreate a cross-project Holdoutwrite
  • optimizely_feature_experimentation.holdouts.delete_holdoutDelete a Holdoutdestructive
  • optimizely_feature_experimentation.holdouts.delete_holdout_cross_projectDelete a cross-project Holdoutdestructive
  • optimizely_feature_experimentation.holdouts.fetch_holdoutFetch a single Holdoutread
  • optimizely_feature_experimentation.holdouts.fetch_holdout_cross_projectFetch a cross-project Holdoutread
  • optimizely_feature_experimentation.holdouts.fetch_holdout_experimentsFetch experiments associated with a holdoutread
  • optimizely_feature_experimentation.holdouts.list_holdoutsList Holdouts for a projectread
  • optimizely_feature_experimentation.holdouts.list_holdouts_cross_projectList holdouts across projectsread
  • optimizely_feature_experimentation.holdouts.update_holdout_cross_projectUpdate a cross-project Holdoutwrite
  • optimizely_feature_experimentation.holdouts.update_holdoutsUpdate a Holdout using JSON Patchwrite
Change approvals8
  • optimizely_feature_experimentation.change_approvals.archive_approvalArchive Approvalwrite
  • optimizely_feature_experimentation.change_approvals.create_approvalCreate an Approval for a flag in an environmentwrite
  • optimizely_feature_experimentation.change_approvals.get_approvalGet Approvalread
  • optimizely_feature_experimentation.change_approvals.get_environment_approval_settingsGet Environment Approval Settingsread
  • optimizely_feature_experimentation.change_approvals.list_approvalsList Approvalsread
  • optimizely_feature_experimentation.change_approvals.list_environment_approval_settingsList Environment Approval Settingsread
  • optimizely_feature_experimentation.change_approvals.update_approval_statusUpdate approval status for a flag in an environmentwrite
  • optimizely_feature_experimentation.change_approvals.update_environment_approval_settingsUpdate Environment Approval Settingswrite
Experiments8
  • optimizely_feature_experimentation.experiments.create_experimentCreate an Experimentwrite
  • optimizely_feature_experimentation.experiments.delete_experimentArchive an Experimentdestructive
  • optimizely_feature_experimentation.experiments.get_experimentRead an Experimentread
  • optimizely_feature_experimentation.experiments.get_experiment_resultsGet Experiment resultsread
  • optimizely_feature_experimentation.experiments.get_experiment_results_share_linkGet a sharable link for the experiment's results pageread
  • optimizely_feature_experimentation.experiments.get_experiment_timeseriesGet Experiment results time seriesread
  • optimizely_feature_experimentation.experiments.list_experimentsList Experimentsread
  • optimizely_feature_experimentation.experiments.update_experimentUpdate an Experimentwrite
Flags8
  • optimizely_feature_experimentation.flags.archive_flagsArchive Flagswrite
  • optimizely_feature_experimentation.flags.create_flagCreate a New Flagwrite
  • optimizely_feature_experimentation.flags.delete_flagDelete a Flagdestructive
  • optimizely_feature_experimentation.flags.fetch_flagFetch a Single Flagread
  • optimizely_feature_experimentation.flags.fetch_flag_statusGet Flag Statusread
  • optimizely_feature_experimentation.flags.list_flagsList Flagsread
  • optimizely_feature_experimentation.flags.unarchive_flagsUnarchive Flagswrite
  • optimizely_feature_experimentation.flags.update_flagsUpdate Flagswrite
Variations8
  • optimizely_feature_experimentation.variations.archive_variationsArchive Variationswrite
  • optimizely_feature_experimentation.variations.brainstorm_variationsBrainstorm variations definitions using AIread
  • optimizely_feature_experimentation.variations.create_variationCreate a New Variationwrite
  • optimizely_feature_experimentation.variations.delete_variationDelete a Variationdestructive
  • optimizely_feature_experimentation.variations.fetch_variationFetch a Single Variationread
  • optimizely_feature_experimentation.variations.list_variationsList Variationsread
  • optimizely_feature_experimentation.variations.unarchive_variationsUnarchive Variationswrite
  • optimizely_feature_experimentation.variations.update_variationsUpdate Variationswrite
Environments7
  • optimizely_feature_experimentation.environments.create_environmentCreate an Environmentwrite
  • optimizely_feature_experimentation.environments.delete_environmentArchive an Environmentdestructive
  • optimizely_feature_experimentation.environments.get_datafileRead the datafile of an Environmentread
  • optimizely_feature_experimentation.environments.get_environmentRead an Environmentread
  • optimizely_feature_experimentation.environments.list_environmentsList Environmentsread
  • optimizely_feature_experimentation.environments.list_environments_v2Get Environments by Projectread
  • optimizely_feature_experimentation.environments.update_environmentUpdate an Environmentwrite
Reports7
  • optimizely_feature_experimentation.reports.archive_reportsArchive Reportswrite
  • optimizely_feature_experimentation.reports.delete_reportDelete a Reportdestructive
  • optimizely_feature_experimentation.reports.fetch_reportFetch a Single Reportread
  • optimizely_feature_experimentation.reports.get_experiment_reportGet Experiment Result's Reportread
  • optimizely_feature_experimentation.reports.list_reportsList Reportsread
  • optimizely_feature_experimentation.reports.reset_resultsReset the results for a Reportdestructive
  • optimizely_feature_experimentation.reports.unarchive_reportsUnarchive Reportswrite
Approval policies6
  • optimizely_feature_experimentation.approval_policies.create_approval_policyCreate an approval policywrite
  • optimizely_feature_experimentation.approval_policies.delete_approval_policyDelete an approval policydestructive
  • optimizely_feature_experimentation.approval_policies.get_approval_policyGet an approval policyread
  • optimizely_feature_experimentation.approval_policies.list_approval_policiesList approval policies for an environmentread
  • optimizely_feature_experimentation.approval_policies.list_project_policiesList all approval policies for a project across all environmentsread
  • optimizely_feature_experimentation.approval_policies.update_approval_policyUpdate an approval policywrite
Change requests6
  • optimizely_feature_experimentation.change_requests.archive_change_requestArchive a change requestwrite
  • optimizely_feature_experimentation.change_requests.create_change_requestCreate a change request for a flag in an environmentwrite
  • optimizely_feature_experimentation.change_requests.get_change_request_detailsGet change request detailsread
  • optimizely_feature_experimentation.change_requests.list_change_requestsList change requests for a flag in an environmentread
  • optimizely_feature_experimentation.change_requests.list_project_change_requestsList project change requestsread
  • optimizely_feature_experimentation.change_requests.update_change_request_statusUpdate the status of a change requestwrite
Variable definitions6
  • optimizely_feature_experimentation.variable_definitions.brainstorm_variable_definitionsBrainstorm variable definitions using AIread
  • optimizely_feature_experimentation.variable_definitions.create_variable_definitionCreate Variable Definitionwrite
  • optimizely_feature_experimentation.variable_definitions.delete_variable_definitionDelete a Variable Definitiondestructive
  • optimizely_feature_experimentation.variable_definitions.fetch_variable_definitionFetch a single variable definition by its keyread
  • optimizely_feature_experimentation.variable_definitions.list_variable_definitionsFetch all variable definitions for flagread
  • optimizely_feature_experimentation.variable_definitions.update_variable_definitionsUpdate Variable Definitionswrite
Attributes5
  • optimizely_feature_experimentation.attributes.create_attributeCreate an Attributewrite
  • optimizely_feature_experimentation.attributes.delete_attributeArchive an Attributedestructive
  • optimizely_feature_experimentation.attributes.get_attributeRead an Attributeread
  • optimizely_feature_experimentation.attributes.list_attributesList Attributesread
  • optimizely_feature_experimentation.attributes.update_attributeUpdate an Attributewrite
Custom fields5
  • optimizely_feature_experimentation.custom_fields.archive_custom_fieldArchive a Custom Fieldwrite
  • optimizely_feature_experimentation.custom_fields.create_custom_fieldCreate a new Custom Fieldwrite
  • optimizely_feature_experimentation.custom_fields.list_custom_fieldsList Custom Fields for a projectread
  • optimizely_feature_experimentation.custom_fields.unarchive_custom_fieldUnarchive a Custom Fieldwrite
  • optimizely_feature_experimentation.custom_fields.update_custom_fieldUpdate an existing Custom Fieldwrite
Events5
  • optimizely_feature_experimentation.events.create_custom_eventCreate a Custom Eventwrite
  • optimizely_feature_experimentation.events.delete_custom_eventArchive a Custom Eventdestructive
  • optimizely_feature_experimentation.events.get_eventGet Event by IDread
  • optimizely_feature_experimentation.events.list_eventsList all Eventsread
  • optimizely_feature_experimentation.events.update_custom_eventUpdate a Custom Eventwrite
Features5
  • optimizely_feature_experimentation.features.create_featureCreate a Featurewrite
  • optimizely_feature_experimentation.features.delete_featureArchive a Featuredestructive
  • optimizely_feature_experimentation.features.get_featureRead a Featureread
  • optimizely_feature_experimentation.features.list_featuresGet Features by Projectread
  • optimizely_feature_experimentation.features.update_featureUpdate a Featurewrite
List attributes5
  • optimizely_feature_experimentation.list_attributes.archive_list_attributeArchive a List Attributedestructive
  • optimizely_feature_experimentation.list_attributes.create_list_attributeCreate a List Attributewrite
  • optimizely_feature_experimentation.list_attributes.get_list_attributeRead a List Attributeread
  • optimizely_feature_experimentation.list_attributes.list_list_attributesGet list attributes by projectread
  • optimizely_feature_experimentation.list_attributes.update_list_attributeUpdate a List Attributewrite
Rulesets5
  • optimizely_feature_experimentation.rulesets.disable_rulesetDisable the Ruleset for a Flag in an Environmentwrite
  • optimizely_feature_experimentation.rulesets.enable_rulesetEnable the Ruleset for a Flag in an Environmentwrite
  • optimizely_feature_experimentation.rulesets.fetch_rulesetFetch the Ruleset for a Flag in an Environmentread
  • optimizely_feature_experimentation.rulesets.update_rulesetUpdate the Ruleset for a Flag in an Environmentwrite
  • optimizely_feature_experimentation.rulesets.validate_rulesetValidate a Ruleset update payloadwrite
Scheduled jobs5
  • optimizely_feature_experimentation.scheduled_jobs.create_scheduled_jobCreate a Scheduled Jobwrite
  • optimizely_feature_experimentation.scheduled_jobs.delete_scheduled_jobArchive a Scheduled Jobdestructive
  • optimizely_feature_experimentation.scheduled_jobs.get_scheduled_jobGet a Scheduled Jobread
  • optimizely_feature_experimentation.scheduled_jobs.list_scheduled_jobsGet a list of Scheduled Jobsread
  • optimizely_feature_experimentation.scheduled_jobs.update_scheduled_jobUpdate a Scheduled Jobwrite
Team management5
  • optimizely_feature_experimentation.team_management.create_teamCreate Teamwrite
  • optimizely_feature_experimentation.team_management.delete_teamDelete Teamdestructive
  • optimizely_feature_experimentation.team_management.get_teamGet Team Inforead
  • optimizely_feature_experimentation.team_management.list_teamsGet Teamsread
  • optimizely_feature_experimentation.team_management.update_teamUpdate Teamwrite
Webhooks5
  • optimizely_feature_experimentation.webhooks.create_webhookCreate a Webhookwrite
  • optimizely_feature_experimentation.webhooks.delete_webhookDelete a Webhookdestructive
  • optimizely_feature_experimentation.webhooks.get_webhookRead a Webhookread
  • optimizely_feature_experimentation.webhooks.list_webhooksGet Webhooks by Projectread
  • optimizely_feature_experimentation.webhooks.update_webhookUpdate a Webhookwrite
Audiences4
  • optimizely_feature_experimentation.audiences.create_audienceCreate an Audiencewrite
  • optimizely_feature_experimentation.audiences.get_audienceRead an Audienceread
  • optimizely_feature_experimentation.audiences.list_audiencesList Audiencesread
  • optimizely_feature_experimentation.audiences.update_audienceUpdate an Audiencewrite
Entity4
  • optimizely_feature_experimentation.entity.get_entity_permissionsGet Entity Permissionsread
  • optimizely_feature_experimentation.entity.get_team_permissionsGet Team Permissions For Project Entity Typeread
  • optimizely_feature_experimentation.entity.get_user_permissionsGet User Permissions For Project Entity Typeread
  • optimizely_feature_experimentation.entity.update_entity_permissionsChange Permissionswrite
Projects4
  • optimizely_feature_experimentation.projects.create_projectCreate a Projectwrite
  • optimizely_feature_experimentation.projects.get_projectRead a Projectread
  • optimizely_feature_experimentation.projects.list_projectsList Projectsread
  • optimizely_feature_experimentation.projects.update_projectUpdate a Projectwrite
Rules4
  • optimizely_feature_experimentation.rules.fetch_holdouts_by_rule_keyFetch holdouts for a specific rule_keyread
  • optimizely_feature_experimentation.rules.fetch_ruleFetch the Rule for a Ruleset in an Environmentread
  • optimizely_feature_experimentation.rules.fetch_rule_by_experiment_idFetch a Rule for a specific experiment_idread
  • optimizely_feature_experimentation.rules.list_all_rules_in_projectList Rulesread
Collaborators3
  • optimizely_feature_experimentation.collaborators.create_collaboratorsInvite Collaboratorswrite
  • optimizely_feature_experimentation.collaborators.list_collaboratorsList Collaboratorsread
  • optimizely_feature_experimentation.collaborators.list_invitationsList Collaborators who have not yet accepted the invitationsread
Subject access requests3
  • optimizely_feature_experimentation.subject_access_requests.create_sar_requestCreate a Subject Access Requestwrite
  • optimizely_feature_experimentation.subject_access_requests.get_sar_requestGet Subject Access Requestread
  • optimizely_feature_experimentation.subject_access_requests.list_sar_requests_by_accountList Subject Access Requestsread
Export credentials2
  • optimizely_feature_experimentation.export_credentials.get_enriched_events_export_credentialsGet AWS credentials to access experimentation events export dataread
  • optimizely_feature_experimentation.export_credentials.get_gcp_e3_credentialsGet GCP credentials to access experimentation events export dataread
Impressions usage2
  • optimizely_feature_experimentation.impressions_usage.get_impressions_usage_requestGet Impressions Usageread
  • optimizely_feature_experimentation.impressions_usage.get_impressions_usage_summary_requestGet Impressions Usage Summaryread
Scheduled change2
  • optimizely_feature_experimentation.scheduled_change.delete_scheduled_changeDelete a Scheduled Change for a flag in an environmentdestructive
  • optimizely_feature_experimentation.scheduled_change.update_scheduled_changeUpdate the Scheduled Change for a flag in an environmentwrite
Scheduled changes2
  • optimizely_feature_experimentation.scheduled_changes.create_scheduled_changeCreate a Schedule Change for a flag in an environmentwrite
  • optimizely_feature_experimentation.scheduled_changes.list_scheduled_changesList Scheduled changes of a flagread
Attribution1
  • optimizely_feature_experimentation.attribution.get_bucketing_historyGet bucketing information for a visitorread
Change history1
  • optimizely_feature_experimentation.change_history.list_change_historyRetrieve changes for a projectread
Changes1
  • optimizely_feature_experimentation.changes.entitiesGet Change Historyread
Duplicate flags1
  • optimizely_feature_experimentation.duplicate_flags.duplicate_flagDuplicate a Flagwrite
Experiment summary1
  • optimizely_feature_experimentation.experiment_summary.get_experiment_summariesSummaries of Experiments and Campaignsread
Plan1
  • optimizely_feature_experimentation.plan.get_planGet Plan & Usage information for all productsread
Search1
  • optimizely_feature_experimentation.search.get_search_resultsSearchread
User1
  • optimizely_feature_experimentation.user.get_meGet current User informationread

Questions

The Optimizely Feature Experimentation MCP server, answered.

Is there an Optimizely Feature Experimentation MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 170 Optimizely Feature Experimentation actions across groups, holdouts, change approvals and experiments, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Optimizely Feature Experimentation.

What do I need to connect Optimizely Feature Experimentation?

Optimizely personal access token (Profile > API Access > Generate New Token in app.optimizely.com), or an OAuth 2.0…. The free call account { op: "connections.requirements", service: "optimizely_feature_experimentation" } lists exactly what to paste.

Can an AI agent delete or change things in Optimizely Feature Experimentation?

Only if its key allows it, and only with an explicit confirmation. 20 Optimizely Feature Experimentation actions are destructive, including delete a Flag, delete a Webhook and archive a Custom Event. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Optimizely Feature Experimentation API limit?

actionlake paces every call to the limits in the Optimizely Feature Experimentation service file: 2 calls a second and 120 a minute per connection. Repeated reads are answered from cache (79 Optimizely Feature Experimentation actions can be), which never reaches Optimizely Feature Experimentation.

What does an Optimizely Feature Experimentation action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (170 Optimizely Feature Experimentation actions page). Cache hits, searches, dry runs and calls Optimizely Feature Experimentation refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Optimizely Feature Experimentation API does it cover?

The Optimizely Feature Experimentation (Flags) API v1, REST API v2, Flags Scheduling API and Permission Service (OpenAPI 3) at api.optimizely.com. It is built from Optimizely Feature Experimentation's documentation as read on 23 October 2026. 170 actions in 38 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Optimizely Feature Experimentation data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Optimizely Feature Experimentation credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Optimizely Feature Experimentation today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.