Connectors · Marketing & media
Optimizely Web Experimentation MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Optimizely Web Experimentation and the rest of your systems. It gives your agent 101 Optimizely Web Experimentation actions (53 reads, 34 writes and 14 that wait for a confirmation) and holds the Optimizely Web Experimentation credential itself, so the agent never does. It paces Optimizely Web 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/mcpdo { action: "optimizely_web_experimentation.projects.list_projects", intent: "check which Optimizely Web Experimentation account is connected"}# List Projects · read · 1 upstream call- 101actionsin one signed file
- 53readlook, never change
- 34writecreate and update
- 14wait for a yesdestructive, confirmed first
Set up
Connect Optimizely Web Experimentation in three steps.
- 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 - 02
Connect Optimizely Web 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_web_experimentation" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "optimizely_web_experimentation.projects.list_projects" }# list projects · read · 1 upstream callcheck { action: "optimizely_web_experimentation.projects.create_project", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Optimizely Web 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
- 100 calls a minute, per connection
- API covered
- Optimizely REST API v2 (OpenAPI 3, Optimizely API 2.0)
api.optimizely.com - Built from
- Optimizely Web Experimentation's documentation, read 23 October 2026archbee-doc-uploads.s3.amazonaws.comdocs.developers.optimizely.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 51 of 53 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 2, so ask can line Optimizely Web 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 Web Experimentation.
101 actions in 27 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 53readlook, never change
- 34writecreate and update
- 14destructivewait for a confirmation
Events
82 read · 4 write · 2 destructive
Create a Custom Event · List all Events · Get Event by ID · Archive a Custom Event
Experiments
85 read · 2 write · 1 destructive
Create an Experiment · List Experiments · Read an Experiment · Update an Experiment
Campaigns
74 read · 2 write · 1 destructive
Create a Campaign · List Campaigns · Read a Campaign · Get Campaign results
Environments
63 read · 2 write · 1 destructive
Get Environments by Project · Create an Environment · Read an Environment · Update an Environment
Attributes
52 read · 2 write · 1 destructive
Create an Attribute · List Attributes · Read an Attribute · Archive an Attribute
Extensions
52 read · 2 write · 1 destructive
Create an Extension · List Extensions · Get an Extension · Archive an Extension
Features
52 read · 2 write · 1 destructive
Create a Feature · Get Features by Project · Read a Feature · Archive a Feature
Groups
52 read · 2 write · 1 destructive
Create an Exclusion Group · List Exclusion Groups · Get an Exclusion Group · Archive an Exclusion Group
19 more areas · 52 actions
- List attributes 5
- Pages 5
- Scheduled jobs 5
- Sections 5
- Webhooks 5
- Audiences 4
- Projects 4
- Collaborators 3
- Subject access requests 3
- Change history 2
- Export credentials 2
- Impressions usage 2
- Attribution 1
- Custom fields 1
- Experiment summary 1
- Plan 1
- Reports 1
- Search 1
- User 1
Top actions
The Optimizely Web Experimentation API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 28 of Optimizely Web Experimentation's 28 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
optimizely_web_experimentation.projects.list_projectsList Projects | List Projects. | read | work.project.list109 connectors |
optimizely_web_experimentation.collaborators.list_collaboratorsList Collaborators | List Collaborators. | read | identity.user.list474 connectors |
optimizely_web_experimentation.projects.create_projectCreate a Project | Create a Project. | write | work.project.create102 connectors |
optimizely_web_experimentation.audiences.list_audiencesList Audiences | List Audiences. | read | analytics.segment.list17 connectors |
optimizely_web_experimentation.events.create_custom_eventCreate a Custom Event | Create a Custom Event. | write | analytics.tracked_event.create12 connectors |
optimizely_web_experimentation.experiments.list_experimentsList Experiments | List Experiments. | read | analytics.experiment.list12 connectors |
optimizely_web_experimentation.experiments.create_experimentCreate an Experiment | Create an Experiment. | write | analytics.experiment.create12 connectors |
optimizely_web_experimentation.events.list_eventsList all Events | List all Events. | read | analytics.tracked_event.list10 connectors |
optimizely_web_experimentation.audiences.create_audienceCreate an Audience | Create an Audience. | write | analytics.segment.create10 connectors |
optimizely_web_experimentation.experiments.delete_experimentArchive an Experiment | Archive an Experiment. | destructive | analytics.experiment.delete10 connectors |
optimizely_web_experimentation.webhooks.create_webhookCreate a Webhook | Create a Webhook. | write | automation.webhook.create209 connectors |
optimizely_web_experimentation.webhooks.list_webhooksGet Webhooks by Project | Get Webhooks by Project. | read | automation.webhook.list202 connectors |
Try it
Prompts to paste into Claude.
Each one names the Optimizely Web Experimentation actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Give me a one-line status for every active Optimizely Web Experimentation project.
calls
optimizely_web_experimentation.projects.list_projects - Writewrite
Create a Project in Optimizely Web Experimentation. Show me exactly what you will send before you save it.
calls
optimizely_web_experimentation.projects.create_project
Governance for Optimizely Web Experimentation
Destructive actions wait for a yes.
14 Optimizely Web Experimentation actions are destructive. These are all of them:
- Archive an Experiment
optimizely_web_experimentation.experiments.delete_experiment - Archive a Custom Event
optimizely_web_experimentation.events.delete_custom_event - Delete a Webhook
optimizely_web_experimentation.webhooks.delete_webhook - Archived a Page
optimizely_web_experimentation.pages.delete_page - Archive a Section by ID
optimizely_web_experimentation.sections.delete_section - Archive a Campaign
optimizely_web_experimentation.campaigns.delete_campaign - Archive an Attribute
optimizely_web_experimentation.attributes.delete_attribute - Archive an In-Page Event
optimizely_web_experimentation.events.delete_in_page_event - Archive an Extension
optimizely_web_experimentation.extensions.delete_extension - Archive an Exclusion Group
optimizely_web_experimentation.groups.delete_group - Archive a Feature
optimizely_web_experimentation.features.delete_feature - Archive an Environment
optimizely_web_experimentation.environments.delete_environment - Archive a Scheduled Job
optimizely_web_experimentation.scheduled_jobs.delete_scheduled_job - Archive a List Attribute
optimizely_web_experimentation.list_attributes.archive_list_attribute
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.
Archive an Experiment?
intent: the user asked me to archive an Experiment
account { op: "keys.create", name: "optimizely-web-experimentation-agent", allowed_actions: ["optimizely_web_experimentation.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "optimizely_web_experimentation.experiments.delete_experiment", approver: "[email protected]" }, { match: "optimizely_web_experimentation.events.delete_custom_event", approver: "[email protected]" }, { match: "optimizely_web_experimentation.webhooks.delete_webhook", approver: "[email protected]" } ]}Cost
What Optimizely Web Experimentation costs on actionlake.
Every Optimizely Web Experimentation action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Optimizely Web 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 101 Optimizely Web Experimentation actions
- 101actions pageeach page of a long list is one call
- 51reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Optimizely Web Experimentation action.
101 actions by area: the id your agent calls, what it does, and its effect.
Events8
optimizely_web_experimentation.events.create_custom_eventCreate a Custom Eventwriteoptimizely_web_experimentation.events.create_in_page_eventCreate an In-Page Eventwriteoptimizely_web_experimentation.events.delete_custom_eventArchive a Custom Eventdestructiveoptimizely_web_experimentation.events.delete_in_page_eventArchive an In-Page Eventdestructiveoptimizely_web_experimentation.events.get_eventGet Event by IDreadoptimizely_web_experimentation.events.list_eventsList all Eventsreadoptimizely_web_experimentation.events.update_custom_eventUpdate a Custom Eventwriteoptimizely_web_experimentation.events.update_in_page_eventUpdate an In-Page Eventwrite
Experiments8
optimizely_web_experimentation.experiments.create_experimentCreate an Experimentwriteoptimizely_web_experimentation.experiments.delete_experimentArchive an Experimentdestructiveoptimizely_web_experimentation.experiments.get_experimentRead an Experimentreadoptimizely_web_experimentation.experiments.get_experiment_resultsGet Experiment resultsreadoptimizely_web_experimentation.experiments.get_experiment_results_share_linkGet a sharable link for the experiment's results pagereadoptimizely_web_experimentation.experiments.get_experiment_timeseriesGet Experiment results time seriesreadoptimizely_web_experimentation.experiments.list_experimentsList Experimentsreadoptimizely_web_experimentation.experiments.update_experimentUpdate an Experimentwrite
Campaigns7
optimizely_web_experimentation.campaigns.create_campaignCreate a Campaignwriteoptimizely_web_experimentation.campaigns.delete_campaignArchive a Campaigndestructiveoptimizely_web_experimentation.campaigns.get_campaignRead a Campaignreadoptimizely_web_experimentation.campaigns.get_campaign_resultsGet Campaign resultsreadoptimizely_web_experimentation.campaigns.get_campaign_results_share_linkGet a sharable link for the campaign's results pagereadoptimizely_web_experimentation.campaigns.list_campaignsList Campaignsreadoptimizely_web_experimentation.campaigns.update_campaignUpdate a Campaignwrite
Environments6
optimizely_web_experimentation.environments.create_environmentCreate an Environmentwriteoptimizely_web_experimentation.environments.delete_environmentArchive an Environmentdestructiveoptimizely_web_experimentation.environments.get_datafileRead the datafile of an Environmentreadoptimizely_web_experimentation.environments.get_environmentRead an Environmentreadoptimizely_web_experimentation.environments.list_environmentsGet Environments by Projectreadoptimizely_web_experimentation.environments.update_environmentUpdate an Environmentwrite
Attributes5
optimizely_web_experimentation.attributes.create_attributeCreate an Attributewriteoptimizely_web_experimentation.attributes.delete_attributeArchive an Attributedestructiveoptimizely_web_experimentation.attributes.get_attributeRead an Attributereadoptimizely_web_experimentation.attributes.list_attributesList Attributesreadoptimizely_web_experimentation.attributes.update_attributeUpdate an Attributewrite
Extensions5
optimizely_web_experimentation.extensions.create_extensionCreate an Extensionwriteoptimizely_web_experimentation.extensions.delete_extensionArchive an Extensiondestructiveoptimizely_web_experimentation.extensions.get_extensionGet an Extensionreadoptimizely_web_experimentation.extensions.list_extensionsList Extensionsreadoptimizely_web_experimentation.extensions.update_extensionUpdate an Extensionwrite
Features5
optimizely_web_experimentation.features.create_featureCreate a Featurewriteoptimizely_web_experimentation.features.delete_featureArchive a Featuredestructiveoptimizely_web_experimentation.features.get_featureRead a Featurereadoptimizely_web_experimentation.features.list_featuresGet Features by Projectreadoptimizely_web_experimentation.features.update_featureUpdate a Featurewrite
Groups5
optimizely_web_experimentation.groups.create_groupCreate an Exclusion Groupwriteoptimizely_web_experimentation.groups.delete_groupArchive an Exclusion Groupdestructiveoptimizely_web_experimentation.groups.get_groupGet an Exclusion Groupreadoptimizely_web_experimentation.groups.list_groupsList Exclusion Groupsreadoptimizely_web_experimentation.groups.update_groupUpdate an Exclusion Groupwrite
List attributes5
optimizely_web_experimentation.list_attributes.archive_list_attributeArchive a List Attributedestructiveoptimizely_web_experimentation.list_attributes.create_list_attributeCreate a List Attributewriteoptimizely_web_experimentation.list_attributes.get_list_attributeRead a List Attributereadoptimizely_web_experimentation.list_attributes.list_list_attributesGet list attributes by projectreadoptimizely_web_experimentation.list_attributes.update_list_attributeUpdate a List Attributewrite
Pages5
optimizely_web_experimentation.pages.create_pageCreate a Pagewriteoptimizely_web_experimentation.pages.delete_pageArchived a Pagedestructiveoptimizely_web_experimentation.pages.get_pageRead a pagereadoptimizely_web_experimentation.pages.list_pagesList Pagesreadoptimizely_web_experimentation.pages.update_pageUpdate a Pagewrite
Scheduled jobs5
optimizely_web_experimentation.scheduled_jobs.create_scheduled_jobCreate a Scheduled Jobwriteoptimizely_web_experimentation.scheduled_jobs.delete_scheduled_jobArchive a Scheduled Jobdestructiveoptimizely_web_experimentation.scheduled_jobs.get_scheduled_jobGet a Scheduled Jobreadoptimizely_web_experimentation.scheduled_jobs.list_scheduled_jobsGet a list of Scheduled Jobsreadoptimizely_web_experimentation.scheduled_jobs.update_scheduled_jobUpdate a Scheduled Jobwrite
Sections5
optimizely_web_experimentation.sections.create_sectionCreate a new Section in a Multivariate Testwriteoptimizely_web_experimentation.sections.delete_sectionArchive a Section by IDdestructiveoptimizely_web_experimentation.sections.get_experiment_sectionsRead all the Sections in a Multivariate Testreadoptimizely_web_experimentation.sections.get_sectionRead a Section of a Multivariate Testreadoptimizely_web_experimentation.sections.update_sectionUpdate a Section by IDwrite
Webhooks5
optimizely_web_experimentation.webhooks.create_webhookCreate a Webhookwriteoptimizely_web_experimentation.webhooks.delete_webhookDelete a Webhookdestructiveoptimizely_web_experimentation.webhooks.get_webhookRead a Webhookreadoptimizely_web_experimentation.webhooks.list_webhooksGet Webhooks by Projectreadoptimizely_web_experimentation.webhooks.update_webhookUpdate a Webhookwrite
Audiences4
optimizely_web_experimentation.audiences.create_audienceCreate an Audiencewriteoptimizely_web_experimentation.audiences.get_audienceRead an Audiencereadoptimizely_web_experimentation.audiences.list_audiencesList Audiencesreadoptimizely_web_experimentation.audiences.update_audienceUpdate an Audiencewrite
Projects4
optimizely_web_experimentation.projects.create_projectCreate a Projectwriteoptimizely_web_experimentation.projects.get_projectRead a Projectreadoptimizely_web_experimentation.projects.list_projectsList Projectsreadoptimizely_web_experimentation.projects.update_projectUpdate a Projectwrite
Collaborators3
optimizely_web_experimentation.collaborators.create_collaboratorsInvite Collaboratorswriteoptimizely_web_experimentation.collaborators.list_collaboratorsList Collaboratorsreadoptimizely_web_experimentation.collaborators.list_invitationsList Collaborators who have not yet accepted the invitationsread
Subject access requests3
optimizely_web_experimentation.subject_access_requests.create_sar_requestCreate a Subject Access Requestwriteoptimizely_web_experimentation.subject_access_requests.get_sar_requestGet Subject Access Requestreadoptimizely_web_experimentation.subject_access_requests.list_sar_requests_by_accountList Subject Access Requestsread
Change history2
optimizely_web_experimentation.change_history.compare_revisionsCompare two revisionsreadoptimizely_web_experimentation.change_history.list_change_historyRetrieve changes for a projectread
Export credentials2
optimizely_web_experimentation.export_credentials.get_enriched_events_export_credentialsGet AWS credentials to access experimentation events export datareadoptimizely_web_experimentation.export_credentials.get_gcp_e3_credentialsGet GCP credentials to access experimentation events export dataread
Impressions usage2
optimizely_web_experimentation.impressions_usage.get_impressions_usage_requestGet Impressions Usagereadoptimizely_web_experimentation.impressions_usage.get_impressions_usage_summary_requestGet Impressions Usage Summaryread
Attribution1
optimizely_web_experimentation.attribution.get_bucketing_historyGet bucketing information for a visitorread
Custom fields1
optimizely_web_experimentation.custom_fields.get_custom_fieldRead a Custom Fieldread
Experiment summary1
optimizely_web_experimentation.experiment_summary.get_experiment_summariesSummaries of Experiments and Campaignsread
Plan1
optimizely_web_experimentation.plan.get_planGet Plan & Usage information for all productsread
Reports1
optimizely_web_experimentation.reports.get_experiment_reportGet Experiment Result's Reportread
Search1
optimizely_web_experimentation.search.get_search_resultsSearchread
User1
optimizely_web_experimentation.user.get_meGet current User informationread
Questions
The Optimizely Web Experimentation MCP server, answered.
Is there an Optimizely Web Experimentation MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 101 Optimizely Web Experimentation actions across events, experiments, campaigns and environments, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Optimizely Web Experimentation.
What do I need to connect Optimizely Web 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_web_experimentation" } lists exactly what to paste.
Can an AI agent delete or change things in Optimizely Web Experimentation?
Only if its key allows it, and only with an explicit confirmation. 14 Optimizely Web Experimentation actions are destructive, including archive an Experiment, archive a Custom Event and delete a Webhook. 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 Web Experimentation API limit?
actionlake paces every call to the limits in the Optimizely Web Experimentation service file: 100 calls a minute per connection. Repeated reads are answered from cache (51 Optimizely Web Experimentation actions can be), which never reaches Optimizely Web Experimentation.
What does an Optimizely Web Experimentation action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (101 Optimizely Web Experimentation actions page). Cache hits, searches, dry runs and calls Optimizely Web 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 Web Experimentation API does it cover?
The Optimizely REST API v2 (OpenAPI 3, Optimizely API 2.0) at api.optimizely.com. It is built from Optimizely Web Experimentation's documentation as read on 23 October 2026. 101 actions in 27 areas, each one in the signed service file (version 1.0.0).
Does actionlake keep my Optimizely Web 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 Web 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 Web Experimentation today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.