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 usUse Cases
Why integrate with Optimizely
Common scenarios for SaaS companies building Optimizely integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.