Eppo integration
Eppo is a warehouse-native experimentation and feature flagging platform. Create, update, duplicate and delete experiments (also from protocols and as switchbacks), read their diagnostics and per-property results breakdowns, and trigger a results update; manage feature flags, their allocations, per-environment status and audiences; manage metrics, metric collections, holdouts, bandits, environments, results schedules and tags; read the warehouse definitions (entities, fact, assignment, switchback assignment and dimension sources, entry points, properties), create entities, entry points and switchback assignment sources, update entry points, delete entities, sources and entry points, and list teams. Not exposed: the metrics-as-code sync routes, fact source backfills, the bulk update of scheduled results, the warehouse credentials route, the experiment PATCH route (its documented body requires read-only fields), the tag update route (no documented body) and the calculated-metrics options of the experiment reads (their answer is not documented). Authentication is a REST API key (created by an admin under Admin > API Keys, distinct from SDK keys) sent in the X-Eppo-Token header.
Say what should happen.
The workflow builds itself.
What you can do with Eppo
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Collection, 6 operations
add_collection_to_experimentAdd collection to experimentPOSTAdds a metric collection (a saved group of metrics, see list_metric_collections) to an experiment. Answers with no content.create_metric_collectionCreate metric collectionPOSTCreates a metric collection (a named group of metrics on one entity, optionally a guardrail set) and returns it.delete_metric_collectionDelete metric collectionDELETEDeletes a metric collection. Answers with no content.get_metric_collectionGet metric collectionGETReturns one metric collection: its name, description, entity, whether it is a guardrail collection and the IDs of its metrics.list_metric_collectionsList metric collectionsGETLists metric collections: saved groups of metrics on one entity (optionally guardrails) that can be added to experiments in one step with add_collection_to_experiment.update_metric_collectionUpdate metric collectionPUTUpdates a metric collection; every field is sent again (name, description, is_guardrail, entity_id and the full list of metric_ids). Returns the collection.
Environment, 6 operations
create_environmentCreate environmentPOSTCreates a non-production environment with the given name (production environments cannot be created through the API) and returns it.delete_environmentDelete environmentDELETEDeletes an environment and all its associated data (production environments cannot be deleted through the API). Returns success.get_environmentGet environmentGETReturns one environment: its name, whether it is production, and its SDK key and client token counts.get_feature_flag_environmentGet feature flag environmentGETReturns a feature flag in one environment: whether it is active there and its allocations (rules, audiences, weights, exposure) in that environment.list_environmentsList environmentsGETLists the company's environments (production and others) with how many SDK keys and client tokens each has.update_environmentUpdate environmentPUTRenames an environment (production environments cannot be modified through the API) and returns it.
Feature flag, 6 operations
archive_feature_flagArchive feature flagDELETEArchives a feature flag; archiving one already archived answers with an error. Returns success.create_feature_flagCreate feature flagPOSTCreates a feature flag with a unique key, its variations (each with variant_key and a value type), entity and tags, optionally with allocations and default variations. Returns the flag.get_feature_flagGet feature flagGETReturns one feature flag: key, variation type, variations, environments (active or not), allocations, tags, owner and metadata.list_feature_flagsList feature flagsGETLists feature flags with their key, variations, per-environment status, allocations, tags and owner. Filter by text, tags or creator; archived flags only with include_archived.set_feature_flag_statusSet feature flag statusPUTTurns a feature flag on (enabled=true) or off in one environment. Returns success.update_feature_flagUpdate feature flagPUTUpdates a feature flag's name, description, team, metadata, and optionally its variations or tags (left unchanged when omitted). entity_id and description are required.
Audience, 5 operations
archive_audienceArchive audienceDELETEArchives an audience. Returns success.create_audienceCreate audiencePOSTCreates an audience: a named set of targeting rules that flag allocations can reference and that stays in sync when edited. Returns it.get_audienceGet audienceGETReturns one audience: its targeting rules, team, creator, the number of allocations using it and whether it is archived.list_audiencesList audiencesGETLists audiences (reusable targeting rule sets for flag allocations) with their rules, team and how many allocations use each. Filter by name, description, status or team.update_audienceUpdate audiencePUTUpdates an audience's name, description, team or targeting rules (allocations that reference it follow the change) and returns it.
Entry point, 5 operations
create_entry_pointCreate entry pointPOSTCreates an entry point source from warehouse SQL (subject and timestamp columns), used to keep only the assignments of subjects who reached that point. Returns it.delete_entry_pointDelete entry pointDELETEDeletes an entry point source. Returns success.get_entry_pointGet entry pointGETReturns one entry point source: its SQL, entity, subject column, timestamp column and partition column.list_entry_pointsList entry pointsGETLists entry point sources: warehouse SQL marking when subjects reached a point, used to filter an experiment's assignments to those who entered.update_entry_pointUpdate entry pointPUTUpdates an entry point source; name, SQL, entity, subject column and timestamp column are sent again. Returns it.
Experiment, 5 operations
create_experimentCreate experimentPOSTCreates an experiment analysis on an entity with its variations (exactly one control), metrics (exactly one primary), assignment source and date windows, and returns it.delete_experimentDelete experimentDELETEDeletes an experiment; get_experiment with allow_deleted=true can still read it afterwards. Answers with no content.get_experimentGet experimentGETReturns one experiment: its status, assignment and event windows, variations, metrics and metric groups, outcome, winning variant, progress toward significance and results URL, analysis plan and links. with_traffic adds subject counts per variation.list_experimentsList experimentsGETLists experiments with their status, assignment and event windows, variations, metrics and metric groups, outcome, winning variant, progress toward significance and results URL.update_experimentUpdate experimentPUTUpdates an experiment. name, entity_id, variations, metadata and links are required on every call, so read the experiment with get_experiment first and send them back with the changes.
Holdout, 5 operations
archive_holdoutArchive holdoutDELETEArchives a holdout. Returns success.create_holdoutCreate holdoutPOSTCreates a holdout with a key, an assignment date range and the share of traffic held out, and returns it.get_holdoutGet holdoutGETReturns one holdout: its key, assignment date range, traffic allocation (0 to 1), the experiment analyzing it, and its archive date if any.list_holdoutsList holdoutsGETLists holdouts (traffic held back to measure the combined impact of the experiments grouped in them) with their key, date range, traffic share and analysis experiment.update_holdoutUpdate holdoutPUTUpdates a holdout's name, key, end date and traffic share (all four are sent). Returns success.
Metric, 5 operations
create_metricCreate metricPOSTCreates a metric on an entity from one definition: a numerator aggregation (with an optional denominator for a ratio), a percentile, or a funnel. Returns the metric.delete_metricDelete metricDELETEDeletes a metric. Answers with no content.get_metricGet metricGETReturns one metric: type, aggregation definition (numerator and denominator, percentile or funnel steps), minimum detectable effect, desired change, team, and optionally the experiments using it.list_metricsList metricsGETLists metrics with their type, aggregation definition (numerator, denominator, percentile or funnel), minimum detectable effect, desired change and owning team. Filter by name or entity.update_metricUpdate metricPUTUpdates a metric: send its name, description, display style and entity again, with the definition (numerator and denominator, percentile or funnel). Returns the updated metric.
Schedule, 5 operations
create_scheduleCreate schedulePOSTCreates a custom experiment update schedule from days of the week, an hour and a minute, and returns it with its crontab. An experiment uses it through its schedule_id.delete_scheduleDelete scheduleDELETEDeletes an experiment update schedule. Answers with no content.get_scheduleGet scheduleGETReturns one experiment update schedule: its name, crontab, days of the week, hour, minute and whether it is the company default.list_schedulesList schedulesGETLists experiment update schedules (when running experiments' results are updated) with their crontab, days, hour and minute, and which one is the company default.update_scheduleUpdate schedulePUTChanges the days, hour and minute of an experiment update schedule and returns it.
Entity, 4 operations
create_entityCreate entityPOSTCreates an entity: a subject type (user, company, device...) that experiments, metrics and flags are defined on. Returns it with its ID.delete_entityDelete entityDELETEDeletes an entity definition. Returns success.get_entityGet entityGETReturns one entity (a subject type such as user or company): its ID, name and who created and last updated it.list_entitiesList entitiesGETLists entities: the subject types experiments randomize on (user, company, device...), each with its ID and name.
Tag, 4 operations
create_tagCreate tagPOSTCreates a tag, which experiments (tag_names) and feature flags can then carry. Returns it.delete_tagDelete tagDELETEDeletes a tag. Answers with no content.get_tagGet tagGETReturns one tag: its name, description and creation and update dates.list_tagsList tagsGETLists the tags used to organize experiments and feature flags, with their descriptions.
Allocation, 3 operations
archive_allocationArchive allocationDELETEArchives an allocation of a feature flag; archiving one already archived answers with an error. Returns success.create_allocationCreate allocationPOSTAdds an allocation to a feature flag in one environment: targeting rules or audiences, the share of traffic exposed and the weight of each variation. Returns the allocation.update_allocationUpdate allocationPUTUpdates an allocation of a feature flag: name, targeting rules, exposure and variation weights (all sent again), and optionally its audiences. Returns the allocation.
Assignment, 3 operations
delete_assignment_sourceDelete assignment sourceDELETEDeletes an assignment source definition. Returns success.get_assignment_sourceGet assignment sourceGETReturns one assignment source: its SQL, the experiment key, variant, timestamp and subject columns, secondary entities and subentities.list_assignment_sourcesList assignment sourcesGETLists assignment sources: the warehouse SQL that logs which subject saw which variant, with experiment key, variant, timestamp and subject columns.
Bandit, 3 operations
create_banditCreate banditPOSTCreates a contextual bandit that optimizes an objective metric, with a status quo variation, training settings and optional allocations. Returns it.get_banditGet banditGETReturns one contextual bandit: its key, objective metric, assignment source, training frequency, windows, exploitation temperature, model version and feature flags.list_banditsList banditsGETLists contextual bandits with their key, objective metric, assignment source, training settings, active model version and associated feature flags.
Dimension, 3 operations
delete_dimension_sourceDelete dimension sourceDELETEDeletes a dimension source definition. Returns success.get_dimension_sourceGet dimension sourceGETReturns one dimension source: its SQL, column and entities.list_dimension_sourcesList dimension sourcesGETLists dimension sources: warehouse SQL that adds attributes (country, plan...) to subjects for slicing results.
Fact, 3 operations
delete_fact_sourceDelete fact sourceDELETEDeletes a fact (metric event) source definition. Returns success.get_fact_sourceGet fact sourceGETReturns one fact (metric event) source: its SQL, timestamp and partition columns, entities, measures, properties and refresh settings.list_fact_sourcesList fact sourcesGETLists fact (metric event) sources: the warehouse SQL behind metrics, with timestamp and partition columns, entities, measures and properties.
Property, 2 operations
list_entity_propertiesList entity propertiesGETLists entity properties (attributes to slice results by) from entity, assignment and switchback sources; each carries source_type and its parent source ID. Use with get_property_analysis.list_metric_propertiesList metric propertiesGETLists metric properties (attributes defined on fact sources) to slice a metric by, optionally for one fact source. Use with get_property_analysis (property_type metric).
Switchback assignment, 2 operations
create_switchback_assignment_sourceCreate switchback assignment sourcePOSTCreates a switchback assignment source: warehouse SQL giving, per switching unit (a city, a region) and time window, the variant and experiment key. Returns it.get_switchback_assignment_sourceGet switchback assignment sourceGETReturns one switchback assignment source: its SQL, entity and the columns holding the switching unit, window start and end, variant and experiment key.
Company, 1 operation
get_companyGet companyGETReturns the id and name of the Eppo company the API key belongs to; a quick way to check that the key works.
Create experiment, 1 operation
create_experiment_from_protocolCreate experiment from protocolPOSTCreates an experiment from a protocol, which supplies its entity, metrics, assignment source and analysis plan; set the name and optionally dates, variations, tags or an assignment source override.
Definition, 1 operation
list_definitionsList definitionsGETReturns all warehouse definitions at once: fact (metric event) sources, dimension sources, assignment sources and entities, each with its SQL and columns. Filter by entity_id.
Diagnostic, 1 operation
get_experiment_diagnosticsGet experiment diagnosticsGETReturns the diagnostic checks Eppo ran on an experiment (configuration, traffic, metric and data quality checks), each with its status (PASS, WARN, FAIL...), timing and error message.
Duplicate, 1 operation
duplicate_experimentDuplicate experimentPOSTDuplicates an experiment under a new name (and optionally a new hypothesis) and returns the new experiment.
Property analysis, 1 operation
get_property_analysisGet property analysisGETBreaks one metric of an experiment down by each value of a property: per value, each variation's metric value, lift and confidence interval versus control. Values are sorted by assignment count and paginated.
Protocol, 1 operation
list_protocolsList protocolsGETLists experiment protocols: templates with an entity, primary and guardrail metrics, default assignment source, run time and analysis plan, from which create_experiment_from_protocol starts experiments.
Reorder, 1 operation
reorder_allocationsReorder allocationsPUTSets the order of a feature flag's allocations, which are evaluated top to bottom like a waterfall, and returns them in their new order, with a warning when Eppo adjusted the requested order.
Switchback, 1 operation
create_switchback_experimentCreate switchback experimentPOSTCreates a switchback experiment, where whole units (a city, a region) switch between variants over time windows, from a switchback assignment source; returns the experiment.
Team, 1 operation
list_teamsList teamsGETLists teams; with_relations adds the IDs of each team's experiments, metrics and feature flags, include_archived adds archived teams.
Update, 1 operation
update_experiment_resultsUpdate experiment resultsPOSTTriggers an update of one experiment's results in Eppo: incremental by default, full_refresh=true recomputes everything, lookback_date updates from that date. Answers with no content.
Use Eppo from Claude Code, Cursor or Codex
Connect Eppo in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Eppo operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Eppo
- Create your workspace
Sign up free. Nothing to install.
- Connect Eppo once
Add your Eppo connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Eppo integration FAQ
What can you do with the Eppo integration?
LiveContext exposes 86 operations on Eppo, covering collection, environment, feature flag and audience.
