How it works
- Connect Optimizely's experimentation MCP server at https://exp.mcp.opal.optimizely.com/mcp to your AI assistant or coding agent, then sign in with your Optimizely account.
- Install the ExpLint MCP at https://explint.com/mcp to enable your agent to audit tests.
- Run the prompt below to audit these plans before the work starts.
How the check runs
- It reads the draft's hypothesis, variations, audience, traffic split, and metrics, then builds one text using Optimizely field names as headings so each finding points at a screen you can open.
- It sends that text to ExpLint with
explint__lint, which returns errors, warnings, and passes, each finding naming the rule behind it. - You update the draft in Optimizely and ask for a fresh read, which is the only way the report reflects the version you are about to schedule.
Copy and paste this prompt
Change the words in square brackets to name your own project, board, or test.
Read the draft experiment [experiment name] with Optimizely MCP tools. Build one text from hypothesis, variations and what each changes, audience, traffic split, primary and guardrail metrics, and planned run time. Lint it with explint.com against [your ExpLint project name]. Show each error and warning with its Optimizely field. Do not launch or edit it. Suggest wording here and re-check after I update the draft.
What ExpLint looks for
ExpLint ships over 24 rules, and a project switches each one on or off or rewrites it in plain English. These are the rules the plans this guide reads break most often. An error means the test cannot answer its question as written, and a warning means the result will be hard to judge when it comes in.
| Rule | Level | In plain words |
|---|---|---|
| hypothesis/names-metric-and-direction | error | The draft has to name the metric and the direction it expects, since Optimizely records the metric as a setting and the prose is where the expectation goes. |
| variants/multi-change-bundles-are-labelled | error | An Optimizely variation that changes a headline and a button in one version needs labelling as a bundle, because the result then credits the pair rather than either change. |
| randomization/states-the-split | error | The traffic split belongs in the plan text, since a share of visitors the reader cannot see is one the team cannot judge against the run length. |
| decision/has-criteria-before-launch | error | Before the experiment is scheduled, the draft should record what would ship the variation, stop it, or send it back for another round. |



