@apex-inc/mcp-server 0.18.0 → 0.19.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.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "MCP server for Apex — currently in private beta.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -29,9 +29,44 @@ The Adoption Engine tracks whether each end-user has adopted each feature, nudge
29
29
  | `update_adoption_milestone` | Change priority / gap window / turn on/off |
30
30
  | `delete_adoption_milestone` | Remove a milestone |
31
31
  | `get_adoption_metrics` | Per-milestone funnel + lift-vs-holdout + workspace health |
32
+ | `list_adoption_features` / `create_adoption_feature` | Tenant-owned feature groupings (group your own events) |
33
+ | `list_segments` / `get_segment` / `create_segment` | Saved groups of customers — same grammar as milestones |
34
+ | `define_event` | Register an event's NAME before it fires (define ≠ fire) |
32
35
 
33
36
  Read-only summary resource: `apex://adoption`.
34
37
 
38
+ ## One grammar: define → wire → verify
39
+
40
+ Milestones and segments both describe "people who…" over the workspace's own
41
+ events + traits. The methodology is the same everywhere (dashboard, SDK, MCP):
42
+
43
+ 1. **Define** — name the signal. If the event doesn't exist yet, `define_event`
44
+ registers it. Defining does NOT make it fire.
45
+ 2. **Wire** — a developer calls `apex.track("your_event")` from the app (or
46
+ sends the trait via `apex.identify`). Until then it shows a "not seen yet"
47
+ dot.
48
+ 3. **Verify** — once real events arrive, milestone lift / segment counts fill in.
49
+
50
+ ### Segments — `create_segment`
51
+
52
+ Author with the friendly `conditions` grammar (snake_case sub-keys), or pass a
53
+ raw `predicate`:
54
+
55
+ ```json
56
+ {
57
+ "name": "Power users who haven't upgraded",
58
+ "conditions": {
59
+ "match": "all",
60
+ "groups": [
61
+ { "match": "all", "conditions": [
62
+ { "verb": "has", "event": "report_run", "window_days": 30 },
63
+ { "attribute": "plan", "op": "is_not", "value": "pro" }
64
+ ] }
65
+ ]
66
+ }
67
+ }
68
+ ```
69
+
35
70
  ## Tool Invocation Order
36
71
 
37
72
  ### "Nudge users who haven't run their first report"