@elitedcs/ghl-mcp 3.71.0 → 3.72.1

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +70 -2
  2. package/README.md +4 -4
  3. package/dist/capture-helper.js +10 -1
  4. package/dist/index.js +8052 -2156
  5. package/guide/guide.html +2 -1
  6. package/package.json +5 -8
  7. package/skills/blueprint/SKILL.md +2 -0
  8. package/skills/blueprint/examples/medspa-approval-view.md +58 -53
  9. package/skills/blueprint/examples/medspa-brief.json +70 -8
  10. package/skills/blueprint/examples/medspa-build-plan.json +1435 -123
  11. package/skills/blueprint/examples/medspa-dry-run-report.md +3 -1
  12. package/skills/blueprint/examples/sample-approval-view.md +20 -61
  13. package/skills/blueprint/examples/sample-brief.json +95 -7
  14. package/skills/blueprint/examples/sample-build-plan.json +1448 -119
  15. package/skills/blueprint/examples/validate-plan.cjs +195 -13
  16. package/skills/blueprint/presets/clinic.md +60 -0
  17. package/skills/blueprint/presets/clinic.preset.json +1737 -0
  18. package/skills/blueprint/presets/coach.md +58 -0
  19. package/skills/blueprint/presets/coach.preset.json +1723 -0
  20. package/skills/blueprint/presets/ecommerce.md +54 -0
  21. package/skills/blueprint/presets/ecommerce.preset.json +1287 -0
  22. package/skills/blueprint/presets/generic-client.md +49 -27
  23. package/skills/blueprint/presets/generic-client.preset.json +1552 -122
  24. package/skills/blueprint/presets/local-service.md +58 -0
  25. package/skills/blueprint/presets/local-service.preset.json +1733 -0
  26. package/skills/blueprint/presets/med-spa.md +47 -48
  27. package/skills/blueprint/presets/med-spa.preset.json +1557 -111
  28. package/skills/blueprint/references/agency-os-detection.md +1 -1
  29. package/skills/blueprint/references/brief-schema.md +48 -1
  30. package/skills/blueprint/references/build-plan-schema.md +66 -5
  31. package/skills/blueprint/references/copy-guide.md +167 -0
  32. package/skills/blueprint/references/intake-question-set.md +64 -3
  33. package/skills/blueprint/references/preset-format.md +97 -51
  34. package/templates/action-schemas.json +12 -0
  35. package/templates/clinic-medspa.json +1 -1
  36. package/skills/blueprint/presets/clinic-launch-a2p.md +0 -39
  37. package/skills/blueprint/presets/clinic-launch-a2p.preset.json +0 -337
package/CHANGELOG.md CHANGED
@@ -1,5 +1,73 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.72.1 — a client's work stops shipping in the package
4
+
5
+ An audit of the published 3.72.0 tarball found somebody else's proprietary material
6
+ inside it. Not a leak of customer data, and nobody did it on purpose: the packaging
7
+ allow-list named `skills` as a whole directory, so every file that landed in that folder
8
+ published itself along with the release.
9
+
10
+ What was in there. A launch-event preset built from a partner agency's own client
11
+ blueprint, their compliance playbook and a protected live account: ten named workflows,
12
+ twenty-five custom values, an event calendar and the whole compliance handoff chain.
13
+ Three more presets credited real client accounts by name in their provenance lines. The
14
+ compiled bundle carried a real GoHighLevel account id with a label identifying whose it
15
+ was, and one shipped example held a real sandbox id.
16
+
17
+ That preset stays in the source tree, because it is a legitimate tool for the agency that
18
+ wrote it. It is now excluded from what gets published. Every client and partner name is
19
+ out of the published files, and the two account lists that used to be compiled into the
20
+ bundle now come from `account-rules.json` in your own application-support directory. A
21
+ fresh install declares no accounts at all, which is the stricter default: without a
22
+ declared practice account every account needs an explicit recorded approval before
23
+ anything is built, and an account you mark off-limits is refused even when an approval
24
+ exists.
25
+
26
+ Engineering comments recording where a workflow shape was captured are untouched. They
27
+ live in source that is never published, and they are how the next person knows a node
28
+ shape came from a real account rather than a guess.
29
+
30
+ A new check reads the actual file list `npm pack` would publish and fails the build if a
31
+ client name, a real-looking account id, or a file on the never-publish list appears in it.
32
+ It caught two files that a careful pass by hand had already missed.
33
+
34
+ Counts unchanged: 247 tools, 51 modules, free tier 111. No tool behaviour changed.
35
+
36
+
37
+ ## 3.72.0 — an audit that counts your workflows once
38
+
39
+ A member ran the account audit on a large agency account. The report came back claiming
40
+ 5,000 workflows with six percent of them scanned, printed every single finding three
41
+ times word for word, and closed by advising her to re-run the audit in further batches.
42
+ She did. It ran ninety minutes before she stopped it, with no idea how many tokens it
43
+ was burning.
44
+
45
+ None of those numbers were real. GoHighLevel's workflow list endpoint ignores the `skip`
46
+ parameter: ask it for the second page and it hands back the first one again. The catalog
47
+ builder believed it fifty times over, so one hundred-workflow page became a
48
+ five-thousand-workflow account, the scan list held the same hundred workflows three
49
+ times, and every finding was reported once per copy. There was no next batch to re-run
50
+ for, and there never had been. Accounts under a hundred workflows finish on the first
51
+ page and were never affected, which is why this reached a customer before it reached us.
52
+
53
+ **The audit now counts each workflow once.** A workflow already listed is never listed
54
+ again, so duplicate scans and tripled findings cannot happen whatever the endpoint does.
55
+ The total comes from GoHighLevel's own count, and that count is used carefully: it can
56
+ tell the audit it has seen less than the whole account, never that it has seen all of it.
57
+ Believing it in the other direction would let a stale number turn a workflow reference
58
+ that merely could not be checked into a confident "this is broken", which this audit
59
+ must never say. When the whole account cannot be listed, the report says so in plain
60
+ words, says how many were reached, and no longer sends you round a loop that cannot
61
+ finish.
62
+
63
+ Two things this also fixes, quietly. Workflows past the first hundred were never being
64
+ scanned on any account, while the report implied full coverage. And `validate_workflow`,
65
+ which shares the same catalog, was marking workflow-to-workflow references "unverified"
66
+ on those larger accounts for the same reason.
67
+
68
+ Counts: 247 tools across 51 modules, unchanged. The free read-only tier is unchanged at
69
+ 111. Restart Claude after updating.
70
+
3
71
  ## 3.71.0 — a task you can close
4
72
 
5
73
  A subscriber's Claude created a callback task on a contact and, come Monday, could not
@@ -2460,7 +2528,7 @@ Two bugs caught when exercising v3.4.0's `health_check` and `validate_workflow`
2460
2528
  Also: `src/index.ts` startup `validateApiKey()` had the same wrong-endpoint bug as `health_check`; fixed for consistency. Buyers will now see "API key validated" or a clear 403 message on startup instead of silent ambiguity.
2461
2529
 
2462
2530
  ### Verified end-to-end
2463
- Re-ran the spawn-handshake test against QA Test Clinic v3:
2531
+ Re-ran the spawn-handshake test against a protected account:
2464
2532
  - `health_check` returns 5/5 PASS ("All systems go.")
2465
2533
  - `validate_workflow` on the CLL Onboarding Form Submitted workflow correctly scans 2 references (form.id + self-referencing workflow.id), reports 0 issues, surfaces the self-reference as an informational note.
2466
2534
 
@@ -2600,7 +2668,7 @@ For Claude that means: when you ask it to read, build, or edit a workflow using
2600
2668
  | v3.2.0 | **13** | **44** | 57 |
2601
2669
 
2602
2670
  ### Round-trip verified
2603
- - Real `form_submission` workflow from QA Test Clinic v3 parses cleanly through the new typed variant.
2671
+ - Real `form_submission` workflow from a protected account parses cleanly through the new typed variant.
2604
2672
  - 8 synthetic typed-trigger samples match their respective variants and are correctly rejected by sibling variants (discrimination works as expected).
2605
2673
 
2606
2674
  ### Files changed
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # GHL Command — GoHighLevel MCP Server
2
2
 
3
- **Full GoHighLevel API access for Claude.** 245 tools across 51 modules — manage contacts, conversations, pipelines, calendars, funnels, workflows, invoices, custom objects, webhooks, and more. **Includes full workflow builder, funnel/page editor, form builder, pipeline builder, bulk operations, account export, and workflow cloning** — capabilities no other GHL tool offers. **Multi-tenant:** one install can run the workflow builder across multiple clients' GHL accounts.
3
+ **Full GoHighLevel API access for Claude.** 247 tools across 51 modules — manage contacts, conversations, pipelines, calendars, funnels, workflows, invoices, custom objects, webhooks, and more. **Includes full workflow builder, funnel/page editor, form builder, pipeline builder, bulk operations, account export, and workflow cloning** — capabilities no other GHL tool offers. **Multi-tenant:** one install can run the workflow builder across multiple clients' GHL accounts.
4
4
 
5
5
  **Distributed via npm as [`@elitedcs/ghl-mcp`](https://www.npmjs.com/package/@elitedcs/ghl-mcp).** Buyers install with one config block — no git, no Node.js setup, no terminal commands. Updates flow automatically (`npx @latest` re-resolves on every Claude restart).
6
6
 
@@ -135,7 +135,7 @@ Run setup_ghl_mcp to activate GHL Command:
135
135
  ghl_location_id: YOUR_LOCATION_ID
136
136
  ```
137
137
 
138
- Approve the tool call. Server validates your license, verifies your GHL credentials, writes them to a per-user config file. **Quit Claude one more time and reopen** — the full core toolset is now unlocked (245 tools total with the optional Workflow Builder Firebase add-on).
138
+ Approve the tool call. Server validates your license, verifies your GHL credentials, writes them to a per-user config file. **Quit Claude one more time and reopen** — the full core toolset is now unlocked (247 tools total with the optional Workflow Builder Firebase add-on).
139
139
 
140
140
  ### 4. Try it
141
141
 
@@ -175,7 +175,7 @@ https://app.gohighlevel.com/v2/location/YOUR_LOCATION_ID/dashboard
175
175
 
176
176
  ## Enable the Workflow Builder
177
177
 
178
- The builder + cloner + validator tools (workflow builder, funnel builder, form builder, pipeline builder, workflow cloner, validate_workflow) use GHL's internal API and require Firebase credentials. Without them, the other 190 tools work fine — you just won't have workflow/funnel/form/pipeline editing. This is the flagship feature: do this step.
178
+ The builder + cloner + validator tools (workflow builder, funnel builder, form builder, pipeline builder, workflow cloner, validate_workflow) use GHL's internal API and require Firebase credentials. Without them, the other 192 tools work fine — you just won't have workflow/funnel/form/pipeline editing. This is the flagship feature: do this step.
179
179
 
180
180
  **One-click capture (v3.49.0+, the supported path):**
181
181
 
@@ -801,7 +801,7 @@ Source repo is private. Contributors need an invitation from `drjerryrelth`. The
801
801
 
802
802
  ### Reducing context / token usage
803
803
 
804
- Every registered MCP tool's schema is shipped to the model on every message. With 245 tools that's a meaningful per-message context cost even in chats that never touch GHL. If you only use a slice of GHL Command, restrict the tool surface with `GHL_ENABLED_MODULES` and/or `GHL_ENABLED_TOOLS`:
804
+ Every registered MCP tool's schema is shipped to the model on every message. With 247 tools that's a meaningful per-message context cost even in chats that never touch GHL. If you only use a slice of GHL Command, restrict the tool surface with `GHL_ENABLED_MODULES` and/or `GHL_ENABLED_TOOLS`:
805
805
 
806
806
  ```jsonc
807
807
  // Claude Desktop config — enable whole modules
@@ -52,7 +52,16 @@ var CredentialsSchema = import_zod.z.object({
52
52
  /** Stable machine id (2026-07-28). Replaces the hostname-derived
53
53
  * fingerprint, which changed with the network on laptops and silently ate
54
54
  * install slots. Written once and reused forever. */
55
- device_id: import_zod.z.string().optional()
55
+ device_id: import_zod.z.string().optional(),
56
+ /** Per-seat cockpit key (2026-08-27, Command OS PRD row 0). The cockpit binds
57
+ * 127.0.0.1, which stops other machines reaching the port but not other
58
+ * PROGRAMS and other browsers on this one — and on a shared team machine that
59
+ * is everybody. Every state-changing cockpit request must carry this value;
60
+ * the served page gets it injected so the operator never types anything.
61
+ * Written once on the first cockpit run, replaced by
62
+ * `ghl-mcp dashboard --rotate-token`. Optional in the schema so files written
63
+ * by earlier versions still parse. NEVER printed, logged or displayed. */
64
+ cockpit_seat_token: import_zod.z.string().optional()
56
65
  });
57
66
  function appDataDir() {
58
67
  const override = process.env.GHL_MCP_CONFIG_DIR?.trim();