@elitedcs/ghl-mcp 3.70.0 → 3.72.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +8 -5
  3. package/dist/capture-helper.js +10 -1
  4. package/dist/index.js +7479 -1552
  5. package/guide/guide.html +2 -1
  6. package/package.json +2 -2
  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 +2 -0
  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-launch-a2p.preset.json +1 -0
  17. package/skills/blueprint/presets/clinic.md +60 -0
  18. package/skills/blueprint/presets/clinic.preset.json +1737 -0
  19. package/skills/blueprint/presets/coach.md +58 -0
  20. package/skills/blueprint/presets/coach.preset.json +1723 -0
  21. package/skills/blueprint/presets/ecommerce.md +54 -0
  22. package/skills/blueprint/presets/ecommerce.preset.json +1287 -0
  23. package/skills/blueprint/presets/generic-client.md +49 -27
  24. package/skills/blueprint/presets/generic-client.preset.json +1552 -122
  25. package/skills/blueprint/presets/local-service.md +58 -0
  26. package/skills/blueprint/presets/local-service.preset.json +1733 -0
  27. package/skills/blueprint/presets/med-spa.md +47 -48
  28. package/skills/blueprint/presets/med-spa.preset.json +1557 -111
  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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,60 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.72.0 — an audit that counts your workflows once
4
+
5
+ A member ran the account audit on a large agency account. The report came back claiming
6
+ 5,000 workflows with six percent of them scanned, printed every single finding three
7
+ times word for word, and closed by advising her to re-run the audit in further batches.
8
+ She did. It ran ninety minutes before she stopped it, with no idea how many tokens it
9
+ was burning.
10
+
11
+ None of those numbers were real. GoHighLevel's workflow list endpoint ignores the `skip`
12
+ parameter: ask it for the second page and it hands back the first one again. The catalog
13
+ builder believed it fifty times over, so one hundred-workflow page became a
14
+ five-thousand-workflow account, the scan list held the same hundred workflows three
15
+ times, and every finding was reported once per copy. There was no next batch to re-run
16
+ for, and there never had been. Accounts under a hundred workflows finish on the first
17
+ page and were never affected, which is why this reached a customer before it reached us.
18
+
19
+ **The audit now counts each workflow once.** A workflow already listed is never listed
20
+ again, so duplicate scans and tripled findings cannot happen whatever the endpoint does.
21
+ The total comes from GoHighLevel's own count, and that count is used carefully: it can
22
+ tell the audit it has seen less than the whole account, never that it has seen all of it.
23
+ Believing it in the other direction would let a stale number turn a workflow reference
24
+ that merely could not be checked into a confident "this is broken", which this audit
25
+ must never say. When the whole account cannot be listed, the report says so in plain
26
+ words, says how many were reached, and no longer sends you round a loop that cannot
27
+ finish.
28
+
29
+ Two things this also fixes, quietly. Workflows past the first hundred were never being
30
+ scanned on any account, while the report implied full coverage. And `validate_workflow`,
31
+ which shares the same catalog, was marking workflow-to-workflow references "unverified"
32
+ on those larger accounts for the same reason.
33
+
34
+ Counts: 247 tools across 51 modules, unchanged. The free read-only tier is unchanged at
35
+ 111. Restart Claude after updating.
36
+
37
+ ## 3.71.0 — a task you can close
38
+
39
+ A subscriber's Claude created a callback task on a contact and, come Monday, could not
40
+ close it. It said so plainly: the server can create tasks but has no way to update or
41
+ complete one, tick it off by hand. It was right. `create_contact_task` and
42
+ `get_contact_tasks` were the whole task surface.
43
+
44
+ **Three tools close the loop.** `complete_contact_task` marks a task done, or reopens it
45
+ with `completed: false`. `update_contact_task` changes a task's title, description, due
46
+ date, assignee or completed state, and sends only the fields you pass, so changing a due
47
+ date never blanks the title; an update with no fields is refused before any request goes
48
+ out. `delete_contact_task` removes a task for good and, like every delete in this server,
49
+ asks for `confirm: "DELETE"`. All three use the routes in
50
+ GoHighLevel's published contacts spec and were proven live before release on a throwaway
51
+ contact in a sandbox account: create, complete, read back completed, update, reopen,
52
+ delete, read back gone, contact removed (`docs/proofs/2026-08-26-task-lifecycle.md`).
53
+
54
+ Counts: 245 tools across 51 modules (was 242). The free read-only tier is unchanged at
55
+ 111; the three new tools are writes and answer with upgrade information there. Restart
56
+ Claude after the update to see them.
57
+
3
58
  ## 3.70.0 — a clean validation now means something
4
59
 
5
60
  A subscriber built an Instagram-comment-to-DM workflow, ran `validate_workflow`, got
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # GHL Command — GoHighLevel MCP Server
2
2
 
3
- **Full GoHighLevel API access for Claude.** 242 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 (242 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 187 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
 
@@ -269,7 +269,7 @@ Highlights (full guide: [`docs/HEADLESS.md`](docs/HEADLESS.md)):
269
269
 
270
270
  > **v3.10.0 adds Email Templates** (`list_email_templates`, `create_email_template`, `update_email_template`) — Claude can now create new HTML email templates and save content into them via the public API. Templates power both standalone marketing emails and workflow email actions. Delete + rename remain UI-only (no public-API endpoint exists).
271
271
 
272
- ### CRM & Contacts (15 tools)
272
+ ### CRM & Contacts (18 tools)
273
273
 
274
274
  | Tool | What It Does |
275
275
  |---|---|
@@ -283,6 +283,9 @@ Highlights (full guide: [`docs/HEADLESS.md`](docs/HEADLESS.md)):
283
283
  | `remove_contact_tags` | Remove tags from a contact |
284
284
  | `get_contact_tasks` | List tasks for a contact |
285
285
  | `create_contact_task` | Create a task on a contact |
286
+ | `complete_contact_task` | Mark a task done (or reopen it) |
287
+ | `update_contact_task` | Change a task's title, description, due date, assignee or state |
288
+ | `delete_contact_task` | Delete a task from a contact |
286
289
  | `get_contact_notes` | List notes on a contact |
287
290
  | `create_contact_note` | Add a note to a contact |
288
291
  | `get_contact_appointments` | List a contact's appointments |
@@ -798,7 +801,7 @@ Source repo is private. Contributors need an invitation from `drjerryrelth`. The
798
801
 
799
802
  ### Reducing context / token usage
800
803
 
801
- Every registered MCP tool's schema is shipped to the model on every message. With 242 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`:
802
805
 
803
806
  ```jsonc
804
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();