@elitedcs/ghl-mcp 3.32.0 → 3.34.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/CHANGELOG.md CHANGED
@@ -1,5 +1,76 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.34.0 — Headless/server deployment hardening
4
+
5
+ Built for production server installs (Linux droplets, containers, MCP
6
+ gateways). License scope, stated plainly: **one license covers every
7
+ GoHighLevel sub-account you manage — unlimited, across multiple agency
8
+ companies — on up to 3 of your own machines. Never metered per account.**
9
+ Nothing in the code ever capped registered locations; the docs now say so.
10
+
11
+ - **Headless seed CLI** behind an explicit sentinel (`ghl-mcp cli …`), so
12
+ gateway-supplied argv can never trigger a subcommand:
13
+ `register-location`, `register-company-firebase`, `register-agency-key`,
14
+ `list-locations`. Live validation identical to the interactive tools
15
+ (`--no-validate` for air-gapped builds), strict arg parsing, deterministic
16
+ exit codes (0/2/3/4), config-dir writability preflight, never prints keys.
17
+ - **`.ghl-tokens.json` schema documented** with a pre-populatable example —
18
+ the registry is read at boot, so a hand-seeded file just works. Full guide
19
+ at `docs/HEADLESS.md` (+ new README "Server / Headless Deployment" section).
20
+ - **Firebase scope documented:** credentials are per-COMPANY, not
21
+ per-sub-account — one set covers every sub-account under a company; each
22
+ company's token rotates and persists independently.
23
+ - **`GHL_MCP_CONFIG_DIR`** — explicit absolute-path config-dir override so all
24
+ state (including auto-rotated Firebase tokens) lives on a persistent
25
+ mounted volume. Relative paths fail fast at boot.
26
+ - **Node 20 supported** (`engines: >=20`, esbuild target lowered to node20).
27
+ Verified on real Node 20: full test suite, server boot, CLI, and Ed25519
28
+ attestation verification (one harmless ExperimentalWarning). The publish
29
+ smoke test now runs on a Node 20/22/24 matrix.
30
+ - **Graceful shutdown** on SIGTERM/SIGINT (bounded 3s) for supervised
31
+ deployments.
32
+ - **`GHL_MCP_DISABLE_UPDATE_CHECK=1`** disables the startup npm version ping
33
+ (air-gapped/firewalled servers).
34
+ - Transport remains stdio by design (gateways supervise it as a child
35
+ process); an optional Streamable-HTTP mode is on the roadmap for the
36
+ server-deployment track.
37
+
38
+ ## 3.33.0 — Account-wide silent-failure audit + trust hardening
39
+
40
+ **`audit_workflows`** — scans EVERY workflow in the current location for
41
+ references to pipelines, stages, custom fields, users, workflows, forms,
42
+ calendars, and surveys that don't exist — the GHL bug where one bad ID silently
43
+ kills that action and every action after it. Returns a prioritized report:
44
+ what's broken, what couldn't be scanned, what couldn't be fully verified.
45
+ Conservative by construction: it never reports a false break (uncertain checks
46
+ are `unverified`, not `error`). The same engine upgrade sharpens
47
+ `validate_workflow`: four opportunity action shapes (including the dominant
48
+ UI-native `internal_create_opportunity`), if/else condition-node custom-field
49
+ checks, `create_update_contact` field refs, hyphenated `task-notification`
50
+ nodes, and custom-field trigger conditions are now covered. 18 new unit tests;
51
+ verified live against 35 real workflows with zero false alarms.
52
+
53
+ **`register_agency_key`** — new tool to store the agency-level (company-scoped)
54
+ API key, with live validation before saving. Previously the snapshot tools
55
+ required an agency key that no tool could register.
56
+
57
+ **Trust + reliability hardening** (from the 2026-06-10 audit):
58
+
59
+ - List tools now attach `_pagination` (returned / limit / total / complete +
60
+ an explicit INCOMPLETE note) so a single page can never silently read as the
61
+ full dataset: `search_contacts`, `search_opportunities`,
62
+ `search_conversations`, `list_invoices`, `list_workflows_full`.
63
+ - Version is read from package.json at runtime instead of baked at build time —
64
+ a stale local build can no longer misreport its version.
65
+ - `health_check` now reports a corrupted token registry as a FAIL with recovery
66
+ steps (previously only visible on stderr, i.e. invisible in the Desktop App).
67
+ - Clearer guidance errors: missing locationId now points at `switch_location` /
68
+ `list_registered_locations`; missing agency key points at
69
+ `register_agency_key`.
70
+ - Firebase token-refresh URL now percent-encodes the API key (consistency).
71
+ - New regression tests pin that error messages never contain API keys or
72
+ Firebase refresh tokens.
73
+
3
74
  ## 3.32.0 — Account-health summary + phone reads
4
75
 
5
76
  Three read tools. The composite is the second roadmap build and the first
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # GHL Command — GoHighLevel MCP Server
2
2
 
3
- **Full GoHighLevel API access for Claude.** 212 tools across 43 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.** 219 tools across 43 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
 
@@ -26,7 +26,7 @@ Built by [Elite DCs, LLC](https://elitedcs.com).
26
26
  > "Thank you, Jerry. You're a star."
27
27
  > — Frankie B.
28
28
 
29
- 27 releases on npm since launch (v3.6.0 → v3.27.0). Bugs get fixed in days, not quarters.
29
+ 30+ releases on npm since launch (v3.6.0 → v3.34.0). Bugs get fixed in days, not quarters.
30
30
 
31
31
  ---
32
32
 
@@ -116,7 +116,7 @@ Run setup_ghl_mcp to activate GHL Command:
116
116
  ghl_location_id: YOUR_LOCATION_ID
117
117
  ```
118
118
 
119
- 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** — all 163 core tools are now unlocked (212 with the optional Workflow Builder Firebase add-on).
119
+ 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 (219 tools total with the optional Workflow Builder Firebase add-on).
120
120
 
121
121
  ### 4. Try it
122
122
 
@@ -217,7 +217,25 @@ To unlock full builder access across multiple clients from one install:
217
217
 
218
218
  ---
219
219
 
220
- ## Tools (190)
220
+ ## Server / Headless Deployment
221
+
222
+ GHL Command runs headless — Linux droplet, container, or behind an MCP gateway (MetaMCP, etc.). **One license covers every GoHighLevel sub-account you manage, on up to 3 of your own machines. No per-account fees.** A server counts as one machine; restarts never consume extra activations.
223
+
224
+ Highlights (full guide: [`docs/HEADLESS.md`](docs/HEADLESS.md)):
225
+
226
+ - **Scriptable multi-account setup** — pre-seed the documented `.ghl-tokens.json`, or use the CLI in a Dockerfile/entrypoint:
227
+ ```bash
228
+ npx -y @elitedcs/ghl-mcp cli register-location --location-id XXXX --api-key pit-... --name "Account"
229
+ npx -y @elitedcs/ghl-mcp cli register-company-firebase --company-id YYYY --refresh-token ... --user-id ...
230
+ npx -y @elitedcs/ghl-mcp cli register-agency-key --api-key pit-...
231
+ ```
232
+ - **Persistent config dir** — set `GHL_MCP_CONFIG_DIR=/data/ghl-mcp` (absolute path) on a mounted volume so auto-rotated Firebase tokens survive container restarts.
233
+ - **Firebase is per-company, not per-sub-account** — one credential set covers all sub-accounts under a company.
234
+ - **Node 20+**, graceful SIGTERM shutdown, `GHL_MCP_DISABLE_UPDATE_CHECK=1` for air-gapped boxes. Transport is stdio (your gateway supervises it as a child process); an HTTP serve mode is on the roadmap.
235
+
236
+ ---
237
+
238
+ ## Tools
221
239
 
222
240
  > **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).
223
241
 
@@ -537,7 +555,7 @@ To unlock full builder access across multiple clients from one install:
537
555
  Uses **esbuild** for production builds (not tsc). TypeScript 5.9.3 + MCP SDK types cause tsc to run out of memory at 4GB+. esbuild bundles in ~5ms with zero memory issues.
538
556
 
539
557
  ```bash
540
- npm run build # esbuild → dist/index.js (~212KB)
558
+ npm run build # esbuild → dist/index.js (~428KB)
541
559
  npm run dev # tsc --watch (type-checking only)
542
560
  ```
543
561
 
@@ -648,9 +666,9 @@ This MCP server is safe to share via GitHub.
648
666
  | Concern | How It's Handled |
649
667
  |---|---|
650
668
  | **API Keys** | Stored in a per-user credentials file (`~/Library/Application Support/elitedcs-ghl-mcp/credentials.json` on Mac) at chmod 0600. Never in code, never committed. |
651
- | **License validation** | One-time check at `setup_ghl_mcp` against elitedcs.com license server. After activation, no further phone-home. |
669
+ | **License validation** | Checked at `setup_ghl_mcp` against the elitedcs.com license server, then cached as a signed attestation (~30 days). The server renews the attestation in the background as expiry approaches — never per-request, and your GHL keys are never sent to us. |
652
670
  | **Multi-user** | Each user brings their own license key + GHL API key. Complete account isolation. |
653
- | **Scope** | The server only talks to GHL's API and (once, at setup) the elitedcs.com license server. No filesystem access beyond the credentials file, no shell commands. |
671
+ | **Scope** | The server only talks to GHL's API, the elitedcs.com license server (setup + periodic attestation renewal), and npm's registry (startup version banner — `GHL_MCP_DISABLE_UPDATE_CHECK=1` to disable). No filesystem access beyond its config dir, no shell commands. |
654
672
  | **Permissions** | Controlled by your GHL Private Integration scopes. Disable what you don't need. |
655
673
 
656
674
  ---
@@ -716,7 +734,7 @@ Source repo is private. Contributors need an invitation from `drjerryrelth`. The
716
734
 
717
735
  ### Reducing context / token usage
718
736
 
719
- Every registered MCP tool's schema is shipped to the model on every message. With 212 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`:
737
+ Every registered MCP tool's schema is shipped to the model on every message. With 219 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`:
720
738
 
721
739
  ```jsonc
722
740
  // Claude Desktop config — enable whole modules
@@ -778,7 +796,7 @@ Built by **[Elite DCs, LLC](https://elitedcs.com)** — a digital marketing and
778
796
 
779
797
  **Tech stack:** TypeScript, Node.js, esbuild, MCP SDK, Zod, GHL API v2, Firebase Auth
780
798
 
781
- **Version:** 2.3.0
799
+ **Version:** 3.34.0
782
800
 
783
801
  ---
784
802