@apex-inc/mcp-server 0.32.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apex-inc/mcp-server",
3
- "version": "0.32.0",
3
+ "version": "0.33.0",
4
4
  "description": "MCP server for Apex \u2014 currently in private beta.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -164,7 +164,7 @@ Match Apex UI terminology in user-facing copy: e.g. **Adaptive traffic allocatio
164
164
  - Hiding the page until `/assign` returns (worse LCP; not the React-hook promise).
165
165
  - Changing variant implementation mid-flight without versioning (invalidates analysis).
166
166
  - Only using p-values without effect size or business context.
167
- - Shipping onto a live test. Before you edit a page, commit, or push — even if they never said experiment — call `check_live_tests` with the **full file contents**, not the diff hunk. That check is ordinary coding. Do not skip it because they are fixing a button. Before you change a letter, Adaptive Journey, or Milestone, call it with `communication_ids`, `journey_ids`, or `milestone_ids`. If something live is on those files or ids, **stop and ask**. Three outs: end the test then ship; wait; or they say this change is not the thing under test (they mark that on the experiment page). Do not edit. Do not commit. Do not pass `confirmLiveExperiment` / `confirmTreatmentChange` / `confirmLiveMilestone` unless they picked an out. If they ship anyway, Apex asks beside the result and still calls a winner unless they say it was the test.
167
+ - Shipping onto a live experiment. Before you edit a page, commit, or push — even if they never said experiment — call `check_live_tests` with the **full file contents**, not the diff hunk. That check is ordinary coding. Do not skip it because they are fixing a button. Before you change a letter, Adaptive Journey, or Milestone, call it with `communication_ids`, `journey_ids`, or `milestone_ids`. If something live is on those files or ids, **stop and ask**. Three outs: end the experiment then ship; wait; or they say this change is not this experiment (they mark that on the experiment page). Do not edit. Do not commit. Do not pass `confirmLiveExperiment` / `confirmTreatmentChange` / `confirmLiveMilestone` unless they picked an out. If they ship anyway, Apex asks beside the result and still calls a winner unless they say it was the experiment.
168
168
 
169
169
  ## Prove incrementality — "is our growth real?"
170
170
 
@@ -191,9 +191,9 @@ Surface specifically: `create_experiment` auto-detects mobile vs web from repo s
191
191
 
192
192
  Parameter casing: all tool parameters are **snake_case** (`experiment_id`, `traffic_split`, `primary_metric_event`, `guardrail_event`) — the same convention as event names. camelCase is accepted as a fallback, but snake_case is canonical.
193
193
 
194
- Shipping onto a live website, app test, letter, Adaptive Journey, or Milestone: `check_live_tests` (before edit / commit / push / publish). That is a different question from two tests on the same page.
194
+ Shipping onto a live website, letter, Adaptive Journey, or Milestone: `check_live_tests` (before edit / commit / push / publish). That is a different question from two experiments on the same page.
195
195
 
196
- Avoiding interaction effects: two experiments on the **same surface/component** contaminate each other. `create_experiment` (preview) and `activate_experiment` auto-run a conflict check and surface an advisory; you can also call `check_experiment_conflicts` yourself. Resolve it by either (a) **mutual exclusion** — `set_experiment_mutex` so no visitor is in both (run concurrently, the scientifically clean default), or (b) **sequencing** — launch the second only after the first concludes. If two experiments share a surface AND the same primary metric, they're usually arms of ONE experiment — add a variant instead of creating a second. Pass `target_component` (e.g. "ProductCard") on create so the guard can detect overlap precisely, especially for mobile/SDK experiments.
196
+ **Where on the page.** Always pass `target_url` and, when it is not the whole page, `target_anchor` (a short pin: `hero`, `pricing`). A missing pin is the whole page forever. Two experiments on different named parts of the same page are not an overlap — the same person can sit in both. Do not add the two lifts. Whole page plus any part on that page is one place. `create_experiment` (preview) and `activate_experiment` auto-run `check_experiment_conflicts`; you can also call it yourself. Keep them apart (`set_experiment_mutex`) only when they share a place. That costs traffic and applies to new visitors only. People already in both stay. If they measure the same thing and you did not keep them apart, put both changes in one experiment or wait. Holdout is not Keep them apart. Split files if you want an edit of one part to stop on that experiment only — the live-experiment stop is file-based and will name every live experiment in that file.
197
197
 
198
198
  ## Related
199
199