@apex-inc/mcp-server 0.12.0 → 0.14.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.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "MCP server for Apex — currently in private beta.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -135,7 +135,9 @@ Editability is gated by lifecycle, keyed to DATA:
135
135
  - **Running, or any exposures recorded:** the pre-registration (hypothesis, metric, guardrails) and bucketing (surface, variants) FREEZE. `update_experiment` returns `experiment_locked` with the reason — that's intentional, so results stay valid. Do not fight it.
136
136
  - **After freeze:** call `fork_experiment({ experimentId })`. It duplicates the design into a fresh draft (no data carries over, lineage recorded), which you then edit and activate.
137
137
 
138
- Surface specifically: `create_experiment` auto-detects mobile vs web from the workspace's data sources; if a Capacitor app got mislabeled `web`, fix it on the draft with `update_experiment({ experimentId, surface: "mobile" })` before the first exposure, or fork if it's already running.
138
+ Surface specifically: `create_experiment` auto-detects mobile vs web from repo signals (capacitor.config.* / @apex-inc/capacitor-plugin) and the workspace's registered data sources when you omit `surface`; if a Capacitor app got mislabeled `web`, fix it on the draft with `update_experiment({ experiment_id, surface: "mobile" })` before the first exposure, or fork if it's already running.
139
+
140
+ 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.
139
141
 
140
142
  ## Related
141
143
 
@@ -158,6 +158,14 @@ If the answer involves a wait, the real question is "what should stop this from
158
158
  - **branch.condition**: A step that routes execution based on a predicate over subject attributes (e.g., `cart.itemCount >= 2`).
159
159
  - **Send-time gate**: The authoritative re-check that runs immediately before any send step.
160
160
 
161
+ ## Parameter casing
162
+
163
+ All Apex tool parameters are **snake_case** (`journey_id`, `trigger_contract_id`,
164
+ `rule_id`, `when_true_comm_id`, `field_path`) — the same convention as event
165
+ names and traits. Discover trigger-contract ids with `list_trigger_contracts`
166
+ before calling `set_journey_trigger`. (camelCase is also accepted as a fallback,
167
+ but snake_case is canonical and what the schemas advertise.)
168
+
161
169
  ## Resources
162
170
 
163
171
  - `apex://journeys` — current journeys list with exit-rule counts (if available as an MCP resource)