Skip to content

Feature Flag · Beta

Optimizely
API integration

Ship Feature Flag features without building the integration. Full Optimizely API access via Proxy and 200+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Optimizely

Use Cases

Why integrate with Optimizely

Common scenarios for SaaS companies building Optimizely integrations for their customers.

01

Embed feature flag context into product management tools

Give PMs and engineers visibility into Optimizely flag states directly inside tasks, PRs, or tickets so they never have to context-switch to check if a feature is live in staging or production.

02

Power customer support with real-time flag attribution

Let support agents see exactly which flag variations and experiments a specific user is exposed to when debugging tickets, eliminating 'I can't reproduce this bug' scenarios caused by active A/B tests.

03

Correlate flag changes with incidents and observability data

Overlay Optimizely flag toggles onto APM error charts and alerts so on-call engineers can identify the exact flag change that caused a regression and trigger an instant kill switch from your product.

04

Merge experiment results into analytics dashboards

Pull Optimizely experiment outcomes, timeseries, and statistical significance into product analytics or BI platforms so growth teams can tie feature variations to long-term retention and revenue.

05

Route flag approvals through external change management

Allow ITSM and governance platforms to act as the approval layer for production flag changes, creating and resolving Optimizely change requests from inside existing enterprise workflows.

What You Can Build

Ship these features with Truto + Optimizely

Concrete product features your team can ship faster by leveraging Truto’s Optimizely integration instead of building from scratch.

01

Live flag status widget

Render ON/OFF state per environment inside any task, ticket, or PR by referencing an Optimizely flag key, powered by flag and ruleset endpoints.

02

One-click kill switch

Expose a button in your UI that calls ruleset disable to instantly turn off a feature in a specific environment without requiring the user to log into Optimizely.

03

Visitor attribution debugger

Look up a user by ID and surface every experiment, variation, and flag decision they're currently receiving to accelerate support triage.

04

Audience sync

Push user cohorts from your CDP or CRM into Optimizely audiences and keep targeting rules in sync as segments change on your side.

05

Flag change webhooks and audit timeline

Subscribe to project webhooks to stream flag, ruleset, and change request events into your product as an audit log or incident timeline.

06

Experiment results importer

Pull experiment summaries, results, and timeseries data on a schedule to build native experimentation ROI dashboards inside your SaaS.

SuperAI

Optimizely AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_optimizely_approvals

List Approvals. List Approvals of a Flag Required: project_id.

delete_a_optimizely_attribute_by_id

Archive an Attribute. Archive Attribute by ID Required: id.

create_a_optimizely_attribute

Create an Attribute. Create an Attribue Required: key, project_id.

list_all_optimizely_attributes

List Attributes. List Attributes under a Project Required: project_id.

get_single_optimizely_attribute_by_id

Read an Attribute. Get Attribute by ID Required: id.

optimizely_attributes_partial_update

Update an Attribute. Update an Attribute by ID Required: attribute_id.

get_single_optimizely_attribution_visitor_by_id

Get bucketing information for a visitor. Get a list of experiments within a project a visitor has been exposed to Required: id, account_id.

create_a_optimizely_audience

Create an Audience. Create an Audience for a Project Required: project_id.

list_all_optimizely_audiences

List Audiences. List Audiences for a Project Required: project_id.

get_single_optimizely_audience_by_id

Read an Audience. Get metadata for a single Audience Required: id.

optimizely_audiences_partial_update

Update an Audience. Update an Audience for a Project Required: audience_id.

get_single_optimizely_billing_usage_by_id

Get Impressions Usage. Get Impressions Usage by account id Required: id, usage_date_from, usage_date_to.

list_all_optimizely_billing_usage_summary

Get Impressions Usage Summary. Get Impressions Usage Summary by account id Required: account_id.

delete_a_optimizely_campaign_by_id

Archive a Campaign. Archive Campaign by ID Required: id.

create_a_optimizely_campaign

Create a Campaign. Create a new Campaign in your account Required: project_id.

list_all_optimizely_campaigns

List Campaigns. Get a list of all the Campaigns in a Project Required: project_id.

get_single_optimizely_campaign_by_id

Read a Campaign. Get metadata for a single Campaign Required: id.

optimizely_campaigns_partial_update

Update a Campaign. Update a campaign's metadata. Required: campaign_id.

list_all_optimizely_campaigns_results

Get Campaign results. Get results for a Campaign Required: campaign_id.

list_all_optimizely_campaigns_results_csv

Get Campaign results as a CSV. Get results for a Campaign as a CSV Required: campaign_id.

list_all_optimizely_campaigns_results_share

Get a sharable link for the campaign's results page. This link allows read-only access for anyone to view the results, even if they don't have an Optimizely account. Because anyone can use the link, be careful where you share it. Required: campaign_id.

list_all_optimizely_catalogs_catalog

Download a CSV with all current catalog data. Required: date, catalog_id.

list_all_optimizely_catalogs_stats

Download a CSV with summary stats data. Required: date, catalog_id.

optimizely_change_requests_archive

Archive a change request. Archive a resolved or rejected change request Required: project_id, change_request_id.

get_single_optimizely_change_request_by_id

Get change request details. Get detailed information about a specific change request Required: id, project_id.

list_all_optimizely_change_requests

List project change requests. List change requests across all flags in a project Required: project_id.

create_a_optimizely_change_requests_status

Update the status of a change request. Approve, reject, or withdraw a change request Required: project_id, flag_key, environment_key, change_request_id, status.

list_all_optimizely_changes

Retrieve changes for a project. Get a list of changes for a given project using optional filters. Required: project_id.

create_a_optimizely_collaborator

Invite Collaborators. Invite collaborators to specific projects on an account

list_all_optimizely_collaborators

List Collaborators. List all the Collaborators on your account, or filter by project_id to list Collaborators on a specific project

delete_a_optimizely_custom_event_by_id

Archive a Custom Event. Required: id, project_id.

create_a_optimizely_custom_event

Create a Custom Event. Create a Custom Event in a provided Project Required: project_id, key.

optimizely_custom_events_partial_update

Update a Custom Event. Required: project_id, event_id.

get_single_optimizely_custom_field_by_id

Read a Custom Field. Get Custom Field definition by ID Required: id.

delete_a_optimizely_environment_by_id

Archive an Environment. Required: id.

create_a_optimizely_environment

Create an Environment. Create an Environment in a provided Project Required: key, name, project_id.

list_all_optimizely_environments

Get Environments by Project. Get all of the Environments that have been created in a given Project Required: project_id.

get_single_optimizely_environment_by_id

Read an Environment. Get all the properties of a single Environment Required: id.

optimizely_environments_partial_update

Update an Environment. Update an Environment by ID Required: environment_id.

list_all_optimizely_environments_datafile

Read the datafile of an Environment. Get the datafile for an Environment. The Datafile is a JSON string that describes to the Full Stack SDK all the experiments and features running in a given environment and dependent entities like audiences and attributes. Normally, you won't need to interact with the datafile directly. The SDK exposes methods that operate on it internally. Required: environment_id.

create_a_optimizely_environments_policy

Create an approval policy. Required: project_id, environment_id, name, is_default, default_preferences, approvers.

delete_a_optimizely_environments_policy_by_id

Delete an approval policy. Required: id, project_id, environment_id.

get_single_optimizely_environments_policy_by_id

Get an approval policy. Required: id, project_id, environment_id.

list_all_optimizely_environments_policies

List approval policies for an environment. Required: project_id, environment_id.

optimizely_environments_policies_partial_update

Update an approval policy. Required: project_id, environment_id, policy_id.

list_all_optimizely_environments_preferences

Get Environment Approval Settings. Get the approval settings for a specific environment in a project. Required: project_id, environment_id.

optimizely_environments_preferences_bulk_update

Update Environment Approval Settings. Update environment approval settings for a project and environment. This operation allows updating entity approval rules, default preferences, and notification configurations for an environment within a project. Required: project_id, environment_id.

list_all_optimizely_environments_preferences_by_project_id

List Environment Approval Settings. List the approval settings for every environment in a project. Required: project_id.

get_single_optimizely_environments_rule_by_id

Fetch the Rule for a Ruleset in an Environment. Fetch a Rule for a Ruleset in a specific Environment of a project. Required: id, project_id, flag_key, environment_key.

optimizely_environments_ruleset_disable

Disable the Ruleset for a Flag in an Environment. Disables the entire Ruleset for a Flag in an Environment Required: project_id, flag_key, environment_key.

optimizely_environments_ruleset_enable

Enable the Ruleset for a Flag in an Environment. Enables the entire Ruleset for a Flag in an Environment Required: project_id, flag_key, environment_key.

list_all_optimizely_environments_ruleset

Fetch the Ruleset for a Flag in an Environment. Fetch a Ruleset for a Flag in a specific Environment of a project. The Ruleset contains the set of all Rules that apply to the Flag for that Environment. Required: project_id, flag_key, environment_key.

optimizely_environments_ruleset_bulk_update

Update the Ruleset for a Flag in an Environment. Update the Ruleset for a Flag in a specific Environment of a project using a json patch structure. Properties that are read only that are present in the request body will be ignored as well as unknown properties. Required: project_id, flag_key, environment_key.

optimizely_environments_ruleset_validate_bulk_update

Validate a Ruleset update payload. Validate a JSON patch payload against the existing Ruleset without persisting changes. Runs all the same validation as PATCH /ruleset but does not modify the database. Required: project_id, flag_key, environment_key.

get_single_optimizely_event_by_id

Get Event by ID. Required: id.

list_all_optimizely_events

List all Events. Get all Events for a Project. This endpoint lists all types of Events including Pageview Events which are stored as Pages. You can also get Goal objects from Optimizely Classic by setting the include_classic parameter to true. Required: project_id.

list_all_optimizely_experiment_summaries

Summaries of Experiments and Campaigns. Summaries of Experiments and Campaigns in a Project Required: project_id.

delete_a_optimizely_experiment_by_id

Archive an Experiment. Archive Experiment by ID Required: id.

create_a_optimizely_experiment

Create an Experiment. Create an Experiment in a Project Required: project_id.

list_all_optimizely_experiments

List Experiments. Get a list of all the Experiments by Project or Campaign. Either the project_id or campaign_id query parameter is required.

get_single_optimizely_experiment_by_id

Read an Experiment. Get metadata for a single Experiment Required: id.

optimizely_experiments_partial_update

Update an Experiment. Update an experiment by ID. Required: experiment_id.

list_all_optimizely_experiments_report

Get Experiment Result's Report. Gets the outcome of the experiment as inferred by the Optimizely system upon the evaluation of variations that may or may not have reached statistical significance. Required: experiment_id.

list_all_optimizely_experiments_results

Get Experiment results. Get results for a single Experiment Required: experiment_id.

list_all_optimizely_experiments_results_csv

Get Experiment results as a CSV. Get results for a single Experiment as a CSV Required: experiment_id.

list_all_optimizely_experiments_results_share

Get a sharable link for the experiment's results page. This link allows read-only access for anyone to view the results, even if they don't have an Optimizely account. Because anyone can use the link, be careful where you share it. Required: experiment_id.

list_all_optimizely_experiments_timeseries

Get Experiment results time series. Get results time series for a single Experiment Required: experiment_id.

list_all_optimizely_export_credentials

Get AWS credentials to access experimentation events export data. Get temporary credentials for experimentation events export data hosted on AWS.

list_all_optimizely_export_credentials_gcp

Get GCP credentials to access experimentation events export data. Get a temporary access token for experimentation events export data hosted on GCP. The credentials are valid for one hour.

delete_a_optimizely_extension_by_id

Archive an Extension. Archive an Extension by ID Required: id.

create_a_optimizely_extension

Create an Extension. Create a new Extension in a provided project Required: edit_url, implementation, name, project_id.

get_single_optimizely_extension_by_id

Get an Extension. Get an Extension by ID Required: id.

list_all_optimizely_extensions

List Extensions. List Extensions under a project Required: project_id.

optimizely_extensions_partial_update

Update an Extension. Update an extension by ID. Required: extension_id.

delete_a_optimizely_feature_by_id

Archive a Feature. Required: id.

create_a_optimizely_feature

Create a Feature. Required: key, project_id.

list_all_optimizely_features

Get Features by Project. Get all of the Features that have been created in a given Project. Note this endpoint is incompatible with Full Stack Targeted Rollouts projects (default in accounts created after July 2020) and with non-legacy Full Stack projects (default in projects created after February 2021). See the compatible API at https://library.optimizely.com/docs/api/flags/v1/index.html#tag/Flags . Required: project_id.

get_single_optimizely_feature_by_id

Read a Feature. Get metadata for a single Feature. Note this endpoint is incompatible with Full Stack Targeted Rollouts projects (default in accounts created after July 2020) and with non-legacy Full Stack projects (default in projects created after February 2021). See the compatible API at https://library.optimizely.com/docs/api/flags/v1/index.html#tag/Flags . Required: id.

optimizely_features_partial_update

Update a Feature. Update a feature by ID. Required: feature_id.

get_single_optimizely_file_by_id

Download a file. Download an uploaded file. The backend checks that the user has at least FLAGS_READ permission on the project, then streams the file content from GCS. Required: id, project_id.

create_a_optimizely_file

Upload a file. Upload a file to be used by any feature that needs file attachments (e.g., test plans on rules). Returns a file_id and file_url (backend proxy path) for referencing the file. Requires FLAGS_MODIFY permission on the project. Required: project_id, file.

optimizely_flag_custom_fields_archive

Archive a Custom Field. Archive a custom field within the specified project. Archived fields are excluded from required-value enforcement; the required setting is preserved so it is restored on unarchive. Required: project_id, custom_field_id.

create_a_optimizely_flag_custom_field

Create a new Custom Field. Creates a new custom field within the specified project. Required: project_id, entity_type, field_type, key, name.

list_all_optimizely_flag_custom_fields

List Custom Fields for a project. Get a list of Custom Fields within a Project. Required: project_id.

optimizely_flag_custom_fields_restore

Unarchive a Custom Field. Unarchive a custom field within the specified project. Required: project_id, custom_field_id.

optimizely_flag_custom_fields_partial_update

Update an existing Custom Field. Update fields of a custom field within the specified project. Required: project_id, custom_field_id.

list_all_optimizely_flag_environments

List Environments. Get a list of Environments within a Project You can use query parameters to filter/sort the response. Required: project_id.

create_a_optimizely_flag_group

Create an Exclusion Group. Creates a new exclusion group in a project. This operation corresponds to the create_url in a Groups response. Required properties must be present in the request body. Note that key for each object in "rules" (if provided), must be a stringified rule ID. Required: project_id, environment_key, name.

optimizely_flag_groups_archive

Archive Exclusion Groups. Archive one or more exclusion groups in a project. This operation corresponds to the archive_url in a Groups response. Required: project_id.

delete_a_optimizely_flag_group_by_id

Delete an Exclusion Group. Permanently delete an exclusion group by id. There will be no way to access this data after deleting. If you want to stop seeing a Group without deleting it permanently, archive instead. Required: id, project_id.

get_single_optimizely_flag_group_by_id

Fetch a Single Exclusion Group. Fetch a single exclusion group by its id. This operation corresponds to the fetch_group_url in a Groups response. Required: id, project_id.

list_all_optimizely_flag_groups

List Exclusion Groups. Get a list of exclusion groups within a project You can use query parameters to filter/sort the response. Required: project_id.

optimizely_flag_groups_restore

Unarchive Exclusion Groups. Unarchive one or more exclusion groups in a project. This operation corresponds to the unarchive_url in a Groups response. Required: project_id.

optimizely_flag_groups_bulk_update

Update Exclusion Groups. Update one or more Groups in a project using a json patch structure. Properties that are readOnly that are present in the request body will be ignored as well as unknown properties. Required: project_id.

create_a_optimizely_flag_holdout

Create a new Holdout. Creates a new holdout experiment to establish a control group for measuring the impact of your feature flags and experiments. A holdout reserves a percentage of your traffic (specified in basis points) that will be excluded from seeing any experiments, allowing you to measure the overall impact of your experimentation program against a baseline control group. Required: project_id, key, name.

delete_a_optimizely_flag_holdout_by_id

Delete a Holdout. Permanently and irreversibly delete a holdout by its unique ID. This is a destructive operation that cannot be undone. Required: id, project_id.

get_single_optimizely_flag_holdout_by_id

Fetch a single Holdout. Retrieves detailed information about a specific holdout by its unique ID within a project. Required: id, project_id.

list_all_optimizely_flag_holdouts

List Holdouts for a project. Get a list of Holdouts within a Project. Holdouts are experiments that reserve a portion of your traffic to measure the impact of your feature flags and experiments. They help establish a control group by excluding a percentage of users from seeing any experiments, allowing you to measure the overall impact of your experimentation program. Required: project_id.

create_a_optimizely_flag_holdouts_v_1

Update a Holdout using JSON Patch. Updates a specific holdout using JSON Patch operations (RFC 6902). This endpoint allows you to modify individual properties of an existing holdout without replacing the entire resource. Required: project_id, holdout_id.

optimizely_flags_archive

Archive Flags. Archive one or more Flags in a project. The request is rejected with a 409 if any Flag in the batch has an open approval request. Nothing is archived when this happens. This operation corresponds to the archive_url in a Flags response. Required: project_id.

create_a_optimizely_flag

Create a New Flag. Creates a new Flag in a Project. This operation corresponds to the create_url in a Flags response. Required properties must be present in the request body. Required: project_id, key.

delete_a_optimizely_flag_by_id

Delete a Flag. Permanently delete a Flag by key. There will be no way to access this data after deletion. If you want to stop seeing a Flag without deleting it permanently, try archiving instead. Required: id, project_id.

get_single_optimizely_flag_by_id

Fetch a Single Flag. Fetch a single Flag in a Project by its key. This operation corresponds to the fetch_flag_url in a Flags response. Required: id, project_id.

list_all_optimizely_flags

List Flags. Get a list of Flags within a Project You can use query parameters to filter/sort the response. Required: project_id.

optimizely_flags_restore

Unarchive Flags. Unarchive one or more Flags in a project. This operation corresponds to the unarchive_url in a Flags response. Required: project_id.

optimizely_flags_bulk_update

Update Flags. Update one or more Flags in a project using a json patch structure. Properties that are readOnly that are present in the request body will be ignored as well as unknown properties. Required: project_id.

create_a_optimizely_flags_approval

Create a Approval for a flag in an environment. Create a change approval for a flag in an environment The schedule change contains a set of actions to update the flag in that environment at a specific time Required: project_id, flag_key, actions, environment, reason.

get_single_optimizely_flags_approval_by_id

Get Approval. Get Approval of a Flag Required: id, project_id, flag_key.

create_a_optimizely_flags_approval_status

Update approval status for a flag in an environment. Update approval status for a flag in an environment The schedule change contains a set of actions to update the flag in that environment at a specific time Required: project_id, flag_key, approval_id, status, reason.

create_a_optimizely_flags_duplicate

Duplicate a Flag. Creates a new Flag in an Project, duplicating from an older flag. Required properties must be present in the request body. Required: project_id, flag_key, key.

list_all_optimizely_flags_entities

Get Change History. Get entities associated for a specific Flag in a Project You can use query parameters to filter/sort the response. Required: project_id, flag_id.

list_all_optimizely_flags_status

Get Flag Status. Fetch the status of a Flag by key. Returns status and days_since_last_modified. Required: project_id, flag_key.

create_a_optimizely_group

Create an Exclusion Group. Create a new Exclusion Group in a provided project Required: name, project_id.

get_single_optimizely_group_by_id

Get an Exclusion Group. Get an Exclusion Group by ID Required: id.

list_all_optimizely_groups

List Exclusion Groups. List Exclusion Groups under a Project Required: project_id.

optimizely_groups_partial_update

Update an Exclusion Group. Update an exclusion group by ID. Required: group_id.

delete_a_optimizely_group_by_id

Archive an Exclusion Group. Archive an Exclusion Group by ID Required: id.

create_a_optimizely_holdout

Create a cross-project Holdout. Creates a new holdout via a project-agnostic endpoint. Supports both global (applies to all rules in selected projects) and local (applies to specific rules) scopes. This endpoint does not require a project_id in the URL — the client provides project_id in the request body. Required field: project_id — The ID of the project that owns this holdout. Required: key, name.

delete_a_optimizely_holdout_by_id

Delete a cross-project Holdout. Permanently deletes a holdout and all its cross-project target associations. Only holdouts in draft state can be deleted. Holdouts in running or concluded state cannot be deleted. Requires FLAGS_ADMIN permission on all projects targeted by the holdout. Gated behind the holdouts-m2 feature flag. Required: id.

get_single_optimizely_holdout_by_id

Fetch a cross-project Holdout. Fetches a single holdout by ID without requiring a project_id in the URL. The response is filtered to only include projects and rules the user has FLAGS_READ permission on. Required: id.

list_all_optimizely_holdouts

List holdouts across projects. Returns a paginated list of holdouts across all projects the authenticated user has permission to view. Supports optional filtering by project, status, archived state, and search query. Gated behind the holdouts-m2 feature flag. Required: project_id.

optimizely_holdouts_partial_update

Update a cross-project Holdout. Update a holdout experiment using JSON Patch (RFC 6902) operations. Supports status transitions, configuration updates, and target changes. Required: holdout_id.

list_all_optimizely_holdouts_experiments

Fetch experiments associated with a holdout. Retrieves a list of experiments that are connected to a specific holdout through the system's data relationships. Required: project_id, holdout_id.

list_all_optimizely_holdouts_results_csv

Get Holdout results as a CSV. Get results for a Holdout as a CSV Required: project_id, holdout_id.

list_all_optimizely_internal_subject_access_requests

List Subject Access Requests by data source and status. Get a list of Subject Access Requests by data source and status Required: data_source, status.

optimizely_internal_subject_access_requests_partial_update

Update a Subject Access Request. Update a Subject Access Request by ID Required: request_id, status.

create_a_optimizely_internal_subject_access_request

Update a Subject Access Request. Update a Subject Access Request by ID Required: request_id, status.

list_all_optimizely_invitations

List Collaborators who have not yet accepted the invitations. List Collaborators who are yet to accept the invitations.

create_a_optimizely_list_attribute

Create a List Attribute. Create a List Attribue with provided name , list_type and key_field . Fields description and list_content are optional. Required: key_field, name, project_id.

list_all_optimizely_list_attributes

Get list attributes by project. Get all of the List Attributes that have been created in a given project. Required: project_id.

get_single_optimizely_list_attribute_by_id

Read a List Attribute. Get metadata for a single List Attribute. Required: id.

optimizely_list_attributes_partial_update

Update a List Attribute. Overwrite the List Attribute with the provided id. Required arguments are identical to creating a new List Attribute. Required: list_attribute_id.

delete_a_optimizely_list_attribute_by_id

Archive a List Attribute. Archive List Attribute by ID Required: id.

list_all_optimizely_me

Get current User information.

delete_a_optimizely_page_by_id

Archived a Page. Archive a Page within a Project by ID Required: id.

create_a_optimizely_page

Create a Page. Create a new Page in a provided Project Required: edit_url, name, project_id.

list_all_optimizely_pages

List Pages. List all Pages for a Project Required: project_id.

get_single_optimizely_page_by_id

Read a page. Get metadata for a single Page. Required: id.

optimizely_pages_partial_update

Update a Page. Update a Page in a provided Project Required: page_id.

delete_a_optimizely_pages_event_by_id

Archive an In-Page Event. Required: id, page_id.

create_a_optimizely_pages_event

Create an In-Page Event. Create an Event that occurs in the context of a Page, such as measuring clicks Required: page_id, event_type, name.

optimizely_pages_events_partial_update

Update an In-Page Event. Update an Event that occurs in the context of a Page, such as measuring clicks Required: page_id, event_id.

optimizely_permissions_projects_partial_update

Change Permissions. Required: project_id, entity_type, entity_id.

get_single_optimizely_permissions_project_by_id

Get Entity Permissions. Required: id, project_id, entity_type.

create_a_optimizely_permissions_team

Create Team. Create a new team. Required: account_id, name.

delete_a_optimizely_permissions_team_by_id

Delete Team. Delete a team. Required: id, account_id.

get_single_optimizely_permissions_team_by_id

Get Team Info. Required: id, account_id.

list_all_optimizely_permissions_teams

Get Teams. Get all teams for an account Required: account_id.

optimizely_permissions_teams_partial_update

Update Team. Update an existing team's information. Required: account_id, team_id, name.

list_all_optimizely_permissions_teams_projects

Get Team Permissions For Project Entity Type. Required: team_id, project_id, entity_type.

list_all_optimizely_permissions_users_projects

Get User Permissions For Project Entity Type. Required: user_id, project_id, entity_type.

list_all_optimizely_plan

Get Plan & Usage information for all products. Get Plan & Usage information for all products, only accessible for Administrators on the account

list_all_optimizely_policies

List all approval policies for a project across all environments. Required: project_id.

create_a_optimizely_project

Create a Project. Create a new Project in your account Required: name.

list_all_optimizely_projects

List Projects. Get a list of all the Projects in your account, with associated metadata

get_single_optimizely_project_by_id

Read a Project. Get all the properties of a single Project Required: id.

optimizely_projects_partial_update

Update a Project. Required: project_id.

create_a_optimizely_projects_webhook

Create a Webhook. Create a Webhook in a provided Project Required: project_id, description, events, name, url.

list_all_optimizely_projects_webhooks

Get Webhooks by Project. Get all of the Webhooks that have been created in a given Project Required: project_id.

list_all_optimizely_recommenders

Download a CSV with all computed recommendations output data. Required: date, catalog_id, recommender_id.

optimizely_reports_archive

Archive Reports. Archive one or more Reports in an Environment of a Project. This operation corresponds to the archive_url in a Reports response. Required: project_id, environment_key.

delete_a_optimizely_report_by_id

Delete a Report. Permanently delete a Report by key in an Environment of a project There will be no way to access this data after deletion. If you want to stop seeing a Report without deleting it permanently, try archiving instead. Required: id, project_id, environment_key.

get_single_optimizely_report_by_id

Fetch a Single Report. Fetch a single Report in an Environment of a Project by its key. This operation corresponds to the fetch_report_url in a Report response. Required: id, project_id, environment_key.

list_all_optimizely_reports

List Reports. Get a list of Reports for a specific Environment of a project You can use query parameters to filter/sort the response. Required: project_id, environment_key.

optimizely_reports_restore

Unarchive Reports. Unarchive one or more Reports in an Environment of a Project. This operation corresponds to the unarchive_url in a Reports response. Required: project_id, environment_key.

create_a_optimizely_reports_reset_result

Reset the results for a Report. Resetting the results for a Report will clear all the current results and results will be calculated from this point onwards. Use caution with this operation as there will be no way to access any previous results. Required: project_id, environment_key, report_key.

list_all_optimizely_revisions_compare

Compare two revisions. Compare two revisions of the same entity. Returns the full revision records including snapshots for both the current and target revisions. Required: current, target, project_id.

list_all_optimizely_rule_holdouts

Fetch holdouts for a specific rule_key. Fetch a list of holdouts for a specific rule_key Required: project_id, environment_key, rule_key.

get_single_optimizely_rule_by_id

Fetch a Rule for a specific experiment_id. Required: id, project_id.

list_all_optimizely_rules

List Rules. Get a list of Rules within a Project You can use query parameters to filter/sort the response. Required: project_id.

create_a_optimizely_ruleset_change_request

Create a change request for a flag in an environment. Required: project_id, flag_key, environment_key, operations.

list_all_optimizely_ruleset_change_requests

List change requests for a flag in an environment. List change requests for a specific flag in an environment Required: project_id, flag_key, environment_key.

delete_a_optimizely_scheduled_job_by_id

Archive a Scheduled Job. Archive a Scheduled Job by ID Required: id.

create_a_optimizely_scheduled_job

Create a Scheduled Job. Required: frequency, job_type, project_id.

list_all_optimizely_scheduled_jobs

Get a list of Scheduled Jobs. Get the list of Scheduled Jobs that belong to your account

get_single_optimizely_scheduled_job_by_id

Get a Scheduled Job. Get a Scheduled Job by ID Required: id.

optimizely_scheduled_jobs_partial_update

Update a Scheduled Job. Update a Scheduled Job by ID Required: job_id.

create_a_optimizely_schedule

Create a Schedule Change for a flag in an environment. Create a Scheduled Change for a flag in an environment The schedule change contains a set of actions to update the flag in that environment at a specific time Required: project_id, flag_key, account_id, actions, schedule, environment.

delete_a_optimizely_schedule_by_id

Delete a Scheduled Change for a flag in an environment. Required: id, project_id, flag_key.

list_all_optimizely_schedules

List Scheduled changes of a flag. Required: project_id, flag_key.

optimizely_schedules_partial_update

Update the Scheduled Change for a flag in an environment. Required: project_id, flag_key, schedule_id.

list_all_optimizely_search

Search. Search for entities in your account by text string Required: query.

delete_a_optimizely_section_by_id

Archive a Section by ID. Archive a Section by ID within the specified Multivariate Test Required: id, experiment_id.

create_a_optimizely_section

Create a new Section in a Multivariate Test. Add a new Section to the Multivariate Test specified by experiment_id Required: experiment_id, variations.

get_single_optimizely_section_by_id

Read a Section of a Multivariate Test. Get metadata for a single Multivariate Test Section Required: id, experiment_id.

list_all_optimizely_sections

Read all the Sections in a Multivariate Test. Get a list of all Sections in a Multivariate Test Required: experiment_id.

optimizely_sections_partial_update

Update a Section by ID. (Beta) Update a section by ID within the specified multivariate test. Required: section_id, experiment_id.

create_a_optimizely_subject_access_request

Create a Subject Access Request. Required: data_type, identifier, identifier_type, request_type.

get_single_optimizely_subject_access_request_by_id

Get Subject Access Request. Get Subject Access Requests by request id Required: id.

list_all_optimizely_subject_access_requests

List Subject Access Requests. Fetch Subject Access Requests submitted from your account

create_a_optimizely_variable_definition

Create Variable Definition. Required: flag_key, project_id, default_value, key, type.

delete_a_optimizely_variable_definition_by_id

Delete a Variable Definition. Permanently delete a Variable Definition for a Flag. There will be no way to access this data after deletion. Required: id, project_id, flag_key.

get_single_optimizely_variable_definition_by_id

Fetch a single variable definition by its key. Required: id, project_id, flag_key.

list_all_optimizely_variable_definitions

Fetch all variable definitions for flag. Required: project_id, flag_key.

optimizely_variable_definitions_bulk_update

Update Variable Definitions. Update one or more Variable Definitions in a project using a json patch structure. Properties that are readOnly that are present in the request body will be ignored as well as unknown properties. Required: project_id, flag_key.

optimizely_variations_archive

Archive Variations. Archive one or more Variations for a Flag. This operation corresponds to the archive_url in a Variations response. Required: project_id, flag_key.

create_a_optimizely_variation

Create a New Variation. Creates a new Variation for a specific Flag in a project. This operation corresponds to the create_url in a Variations response. Required properties must be present in the request body. Required: project_id, flag_key, key, name.

delete_a_optimizely_variation_by_id

Delete a Variation. Permanently delete a Variation for a Flag. There will be no way to access this data after deletion. If you want to stop seeing a Variation without deleting it permanently, try archiving instead. Required: id, project_id, flag_key.

get_single_optimizely_variation_by_id

Fetch a Single Variation. Fetch a single Variation for a Flag by its key. This operation corresponds to the fetch_variation_url in a Variations response. Required: id, project_id, flag_key.

list_all_optimizely_variations

List Variations. Get a list of Variations for a specific Flag in a Project You can use query parameters to filter/sort the response. Required: project_id, flag_key.

optimizely_variations_restore

Unarchive Variations. Unarchive one or more Variations for a Flag. This operation corresponds to the unarchive_url in a Variations response. Required: project_id, flag_key.

optimizely_variations_bulk_update

Update Variations. Update one or more Variations for a specific Flag in a project using a JSON patch structure. Required: project_id, flag_key.

create_a_optimizely_variations_brainstorm

Brainstorm variations definitions using AI. Required: project_id, flag_key, interactions.

delete_a_optimizely_webhook_by_id

Delete a Webhook. Delete an Webhook Required: id.

get_single_optimizely_webhook_by_id

Read a Webhook. Get all the properties of a single Webhook Required: id.

optimizely_webhooks_partial_update

Update a Webhook. Update a webhook by ID Required: webhook_id, description, events, name, url.

Why Truto

Why use Truto’s MCP server for Optimizely

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 950+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Optimizely in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Optimizely account

Use Truto’s frontend SDK to connect your customer’s Optimizely account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Optimizely

Truto’s Proxy API is a 1-to-1 mapping of the Optimizely API. You call us, we call Optimizely, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Optimizely’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Optimizely on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users authenticate their Optimizely account?

Truto handles the Optimizely auth flow for you so your users can connect their account from inside your product. Truto stores and refreshes credentials, and your app calls Truto's unified request layer without ever handling tokens directly.

Which Optimizely resources can we read and write through Truto?

Truto exposes the full set of Feature Experimentation resources including flags, flag environments, rulesets, rules, variations, variable definitions, audiences, attributes, experiments, experiment results and timeseries, change requests, approvals, projects, environments, webhooks, and visitor attribution.

Can we toggle a flag on or off programmatically?

Yes. Truto exposes ruleset enable and disable operations per environment, so you can build kill-switch and progressive rollout controls directly into your product.

Does Truto support Optimizely's governance and approval workflows?

Yes. You can create flag approvals, create ruleset change requests, list and fetch change requests, and update their status — enabling you to drive Optimizely's change management from external ITSM or workflow tools.

How do we debug what a specific user is seeing in Optimizely?

Use the attribution visitor endpoint through Truto to fetch a single visitor by ID and retrieve the flags, experiments, and variations they are currently bucketed into — ideal for support and QA tooling.

Can we receive real-time notifications when flags change?

Yes. Truto supports creating and listing Optimizely project webhooks, so your product can react to flag, ruleset, and configuration changes as they happen rather than polling.

How does Truto handle Optimizely's pagination and rate limits?

Truto normalizes pagination across list endpoints and transparently handles Optimizely's rate limiting with retries and backoff, so you can iterate through large sets of flags, experiments, or audiences without writing that logic yourself.

Optimizely

Get Optimizely integrated into your app

Our team understands what it takes to make a Optimizely integration successful. A short, crisp 30 minute call with folks who understand the problem.