@elitedcs/ghl-mcp 3.12.0 → 3.13.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,82 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.13.1 — Firebase token persistence fixes (reported by Don Harris)
4
+
5
+ **Bug fixes. No tool changes — still 201 tools across 43 modules.**
6
+
7
+ Two related Firebase refresh-token persistence bugs that hit the `npx @elitedcs/ghl-mcp@latest` install path. Both reported by Don Harris (flasheffect@sbcglobal.net) on 2026-05-24.
8
+
9
+ ### 1. Rotated refresh token was silently dropped
10
+
11
+ `WorkflowBuilderClient.persistRefreshToken` only wrote to `cwd/.env`. Under npx there is no `.env` in cwd, so the rotated token was discarded and the next restart reloaded the stale token from `credentials.json` — eventually failing Firebase auth once the old token expired.
12
+
13
+ Now persists to **`credentials.json`** (the authoritative store for npm installs) and still writes `.env` when present (legacy wrapper-script / local-dev path). Both writes are independent and non-fatal.
14
+
15
+ ### 2. Token registry lived inside the npm cache
16
+
17
+ `TokenRegistry`'s default path resolved via `__dirname` into `~/.npm/_npx/<hash>/...`. Every `@latest` update produced a new hash, orphaning the previous registry (and losing it on cache cleanup).
18
+
19
+ Now defaults to `.ghl-tokens.json` in the per-user app-data dir, alongside `credentials.json`. A one-time migration moves any legacy package-root registry on first run. The registry directory is created (0700) on save if absent, and the file is hardened to 0600.
20
+
21
+ ## 3.13.0 — Memberships read + 200-tool milestone (gap-closure round 6, final)
22
+
23
+ **201 tools across 43 modules. Bundle: ~318 KB.**
24
+
25
+ Closes the last Phase-2 gap. Memberships read tools — and the tool count crosses 200.
26
+
27
+ ### 3 new tools (Firebase-gated, read-only)
28
+
29
+ - **`list_membership_offers`** — offers + products in one call (`{products, offers}`). Products are courses/communities; offers are the access grants.
30
+ - **`list_membership_categories`** — all course categories in a location.
31
+ - **`list_membership_lessons`** — all course lessons in a location.
32
+
33
+ Most useful for fetching the IDs that membership trigger conditions reference: `offer_access_granted`, `product_completed`, `category_completed`, `lesson_completed`, etc.
34
+
35
+ ### Endpoint discovery
36
+
37
+ From the workflow bundle's `LocationMembership` class:
38
+ ```js
39
+ membershipUrl = `${config.membershipURL}` // → backend.leadconnectorhq.com/membership
40
+ endpoint = `${membershipUrl}/smart-list/offers-products/${locationId}`
41
+ ```
42
+
43
+ Verified endpoints (Firebase auth):
44
+ - `GET /membership/smart-list/offers-products/{loc}`
45
+ - `GET /membership/smart-list/location/{loc}/workflow?type=category`
46
+ - `GET /membership/smart-list/location/{loc}/workflow?type=lesson`
47
+
48
+ Bearer/PIT returns 401 — Firebase-gated, same as the other internal-API tools.
49
+
50
+ ### Read-only by design
51
+
52
+ The workflow bundle only READS membership data (to populate trigger/action dropdowns). Creating/editing courses, offers, and lessons lives in the Memberships app and isn't exposed here — that would need a DevTools capture against a live account with actual courses. The per-product (`?product_id=`) and per-category (`/category/{id}/lessons`) filtered endpoints returned 401 for synthetic IDs and couldn't be verified without real course data, so they're not exposed; the location-scoped "list all" endpoints return everything anyway.
53
+
54
+ ### Phase-2 complete
55
+
56
+ All 6 Phase-2 gap areas from the v3.8.1 analysis have now been addressed:
57
+
58
+ | Area | Result |
59
+ |---|---|
60
+ | Email templates | list/create/update (v3.10.0) |
61
+ | SMS/snippet templates | list-only — write is scope-walled (v3.10.1) |
62
+ | Smart Lists | full CRUD (v3.11.0) |
63
+ | Reputation | review-link-list; reviews capture-pending (v3.11.1) |
64
+ | Email campaigns | list (fixed) + create-draft; send capture-pending (v3.12.0) |
65
+ | Memberships | read-only (this release) |
66
+
67
+ The recurring limiter: high-value write actions (send a campaign, list reviews, create a course, delete a template) sit behind either GHL's IAM wall or location-resolution quirks that need a DevTools capture against a live account. Read + create-draft surfaces were reachable; full write automation for those areas is the next frontier when a live-account capture session happens.
68
+
69
+ ### Tool count impact
70
+
71
+ - Total: 198 → 201 (+3) — crosses 200
72
+ - Modules: 42 → 43
73
+
74
+ ### Files changed
75
+
76
+ - `src/tools/memberships.ts` — NEW
77
+ - `src/tools/index.ts` — registered membership tools
78
+ - `src/setup-tool.ts` — count 198 → 201
79
+
3
80
  ## 3.12.0 — Email campaigns: create-draft + list fix (gap-closure round 5)
4
81
 
5
82
  **198 tools across 42 modules. Bundle: ~316 KB.**
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # GHL Command — GoHighLevel MCP Server
2
2
 
3
- **Full GoHighLevel API access for Claude.** 198 tools across 42 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.
3
+ **Full GoHighLevel API access for Claude.** 201 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.
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