@elitedcs/ghl-mcp 3.10.0 → 3.10.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 +31 -0
- package/README.md +2 -2
- package/dist/index.js +25 -6
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.10.1 — `list_message_templates` (SMS / email-snippet / WhatsApp read)
|
|
4
|
+
|
|
5
|
+
**191 tools across 39 modules. Bundle: ~304.7 KB.**
|
|
6
|
+
|
|
7
|
+
Small patch closing the SMS template read gap.
|
|
8
|
+
|
|
9
|
+
### New tool
|
|
10
|
+
|
|
11
|
+
- `list_message_templates(type?, limit?, skip?, locationId?)` — list snippet-style message templates. `type` filters by `sms` / `email` / `whatsapp`; omit to list all types.
|
|
12
|
+
|
|
13
|
+
### What this is (and isn't)
|
|
14
|
+
|
|
15
|
+
GHL has **two separate template systems**:
|
|
16
|
+
1. **Email builders** (drag-and-drop) at `/emails/builder` — already covered by `list_email_templates` + `create_email_template` + `update_email_template` from v3.10.0
|
|
17
|
+
2. **Snippet templates** (simpler, multi-type) at `/locations/{locationId}/templates` — covered by this new tool
|
|
18
|
+
|
|
19
|
+
This patch closes the **read** side of system #2. The write side is a real wall: `POST /locations/{locationId}/templates` returns 401 *"The token is not authorized for this scope"* with a Private Integration token, regardless of body shape. GHL gates template creation behind a scope (`templates.write` or similar) that PITs don't have. Creating message templates either happens in the GHL UI or requires an OAuth integration. Honest scope documented in the tool description.
|
|
20
|
+
|
|
21
|
+
### Endpoint discovery story
|
|
22
|
+
|
|
23
|
+
Found in the workflow-builder JS bundle (`templateEndpoint = /locations/${locationId}/templates`). Endpoint accepts `type=sms|email|whatsapp` to filter; without `type` returns all template kinds. Same endpoint serves single-template GET at `/locations/{locationId}/templates/{id}` (`get_message_template_by_id` could be added if a use case emerges; for now, the list returns enough detail).
|
|
24
|
+
|
|
25
|
+
### Tool count impact
|
|
26
|
+
|
|
27
|
+
- Total: 190 → 191 (+1)
|
|
28
|
+
- Without Firebase: 160 → 161 (public API)
|
|
29
|
+
|
|
30
|
+
### Files changed
|
|
31
|
+
|
|
32
|
+
- `src/tools/emails.ts` — added `list_message_templates`
|
|
33
|
+
|
|
3
34
|
## 3.10.0 — Email Templates (gap-closure round 2)
|
|
4
35
|
|
|
5
36
|
**190 tools across 39 modules. Bundle: 304.6 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.**
|
|
3
|
+
**Full GoHighLevel API access for Claude.** 191 tools across 39 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
|
|
|
@@ -138,7 +138,7 @@ https://app.gohighlevel.com/v2/location/YOUR_LOCATION_ID/dashboard
|
|
|
138
138
|
|
|
139
139
|
## Enable Workflow Builder (Optional)
|
|
140
140
|
|
|
141
|
-
The 30 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
|
|
141
|
+
The 30 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 161 tools work fine — you just won'''t have workflow/funnel/form/pipeline editing.
|
|
142
142
|
|
|
143
143
|
Grab the three values from your GHL browser session, then re-run `setup_ghl_mcp` with them:
|
|
144
144
|
|
package/dist/index.js
CHANGED
|
@@ -31,8 +31,8 @@ var require_package = __commonJS({
|
|
|
31
31
|
"package.json"(exports2, module2) {
|
|
32
32
|
module2.exports = {
|
|
33
33
|
name: "@elitedcs/ghl-mcp",
|
|
34
|
-
version: "3.10.
|
|
35
|
-
description: "GoHighLevel MCP Server for Claude.
|
|
34
|
+
version: "3.10.1",
|
|
35
|
+
description: "GoHighLevel MCP Server for Claude. 191 tools \u2014 full CRM, automation, marketing control, and the only programmatic GHL workflow builder.",
|
|
36
36
|
main: "dist/index.js",
|
|
37
37
|
bin: {
|
|
38
38
|
"ghl-mcp": "dist/index.js"
|
|
@@ -3624,6 +3624,25 @@ function registerEmailTools(server2, client) {
|
|
|
3624
3624
|
});
|
|
3625
3625
|
}
|
|
3626
3626
|
);
|
|
3627
|
+
safeTool(
|
|
3628
|
+
server2,
|
|
3629
|
+
"list_message_templates",
|
|
3630
|
+
"List snippet-style message templates in a location. Covers SMS, email snippets, and WhatsApp templates \u2014 pass the `type` param to filter. Different from `list_email_templates` (which returns drag-and-drop email-builder templates from a separate system). NOTE: This tool is READ-ONLY by design. Creating/updating/deleting templates at this endpoint requires a scope (`templates.write`) that GHL doesn't grant to Private Integration tokens. Buyers create message templates via the GHL UI (Conversations \u2192 Templates) or via an OAuth integration. This list endpoint works on a standard sub-account Private Integration key.",
|
|
3631
|
+
{
|
|
3632
|
+
type: import_zod24.z.enum(["sms", "email", "whatsapp"]).optional().describe("Filter by template type. Omit to list all template types in one response. SMS templates are quick-reply text snippets used in the conversations composer. Email here means HTML-snippet templates (NOT email-builder drag-and-drop templates \u2014 those are listed via `list_email_templates`). WhatsApp templates are pre-approved message templates registered with Meta."),
|
|
3633
|
+
limit: import_zod24.z.number().optional().describe("Max templates to return. Defaults to 1000."),
|
|
3634
|
+
skip: import_zod24.z.number().optional().describe("Skip this many for pagination."),
|
|
3635
|
+
locationId: import_zod24.z.string().optional().describe("Location ID. Falls back to GHL_LOCATION_ID env var.")
|
|
3636
|
+
},
|
|
3637
|
+
async ({ type, limit, skip, locationId: locationId2 }) => {
|
|
3638
|
+
const resolvedLocationId = client.resolveLocationId(locationId2);
|
|
3639
|
+
const params = {};
|
|
3640
|
+
if (type) params.type = type;
|
|
3641
|
+
if (limit !== void 0) params.limit = limit;
|
|
3642
|
+
if (skip !== void 0) params.skip = skip;
|
|
3643
|
+
return client.get(`/locations/${resolvedLocationId}/templates`, { params });
|
|
3644
|
+
}
|
|
3645
|
+
);
|
|
3627
3646
|
safeTool(
|
|
3628
3647
|
server2,
|
|
3629
3648
|
"update_email_template",
|
|
@@ -7021,7 +7040,7 @@ async function validateFirebase(firebaseKey, refreshToken) {
|
|
|
7021
7040
|
function registerSetupTool(server2) {
|
|
7022
7041
|
server2.tool(
|
|
7023
7042
|
"setup_ghl_mcp",
|
|
7024
|
-
"First-run setup for GHL Command MCP. Validates your license and GHL credentials, then writes them to a per-user credentials file. Restart Claude after this completes to load all
|
|
7043
|
+
"First-run setup for GHL Command MCP. Validates your license and GHL credentials, then writes them to a per-user credentials file. Restart Claude after this completes to load all 191 tools (161 if you skip the optional Firebase fields; add Firebase later with enable_workflow_builder).",
|
|
7025
7044
|
{
|
|
7026
7045
|
email: import_zod43.z.string().email().describe("Email used at purchase."),
|
|
7027
7046
|
license_key: import_zod43.z.string().min(20).describe("License key from your purchase email."),
|
|
@@ -7076,7 +7095,7 @@ Note: Firebase credentials rejected (${fb.error}). Saved without Workflow Builde
|
|
|
7076
7095
|
ghl_firebase_api_key: workflowBuilderEnabled ? args.ghl_firebase_api_key?.trim() : void 0,
|
|
7077
7096
|
ghl_firebase_refresh_token: workflowBuilderEnabled ? args.ghl_firebase_refresh_token?.trim() : void 0
|
|
7078
7097
|
});
|
|
7079
|
-
const toolCount = workflowBuilderEnabled ? "
|
|
7098
|
+
const toolCount = workflowBuilderEnabled ? "191" : "161";
|
|
7080
7099
|
const wfLine = workflowBuilderEnabled ? "Workflow Builder: enabled." : "Workflow Builder: not configured (optional).";
|
|
7081
7100
|
const wfTip = workflowBuilderEnabled ? "" : "\nTo enable Workflow Builder later (8 extra tools): run enable_workflow_builder with your three Firebase values. No need to re-enter license/API key/location ID.";
|
|
7082
7101
|
return {
|
|
@@ -7104,7 +7123,7 @@ Note: Firebase credentials rejected (${fb.error}). Saved without Workflow Builde
|
|
|
7104
7123
|
function registerEnableWorkflowBuilderTool(server2) {
|
|
7105
7124
|
server2.tool(
|
|
7106
7125
|
"enable_workflow_builder",
|
|
7107
|
-
"Add Firebase credentials to an existing GHL Command install to unlock 30 additional tools across 6 modules: workflow builder (create/edit/clone/delete/publish/validate workflows, build_if_else_branch, build_goal_event, get_trigger_registry), funnel + page builder (10 tools), form builder (5 tools), pipeline builder (5 tools), and workflow cloning. Requires you've already run setup_ghl_mcp. Capture the three Firebase values from your GHL browser session \u2014 see elitedcs.com/ghl-mcp-firebase for step-by-step DevTools instructions. Tool count goes from
|
|
7126
|
+
"Add Firebase credentials to an existing GHL Command install to unlock 30 additional tools across 6 modules: workflow builder (create/edit/clone/delete/publish/validate workflows, build_if_else_branch, build_goal_event, get_trigger_registry), funnel + page builder (10 tools), form builder (5 tools), pipeline builder (5 tools), and workflow cloning. Requires you've already run setup_ghl_mcp. Capture the three Firebase values from your GHL browser session \u2014 see elitedcs.com/ghl-mcp-firebase for step-by-step DevTools instructions. Tool count goes from 161 to 191 after the next Claude restart.",
|
|
7108
7127
|
{
|
|
7109
7128
|
ghl_user_id: import_zod43.z.string().min(10).describe("Firebase User ID (uid). DevTools \u2192 Application \u2192 IndexedDB \u2192 firebaseLocalStorageDb \u2192 firebaseLocalStorage \u2192 the value.uid field of the firebase:authUser row."),
|
|
7110
7129
|
ghl_firebase_api_key: import_zod43.z.string().min(10).describe("Firebase API Key starting with 'AIza'. The string between 'firebase:authUser:' and ':[DEFAULT]' in the row's Key column."),
|
|
@@ -7151,7 +7170,7 @@ DevTools steps: https://elitedcs.com/ghl-mcp-firebase`
|
|
|
7151
7170
|
"",
|
|
7152
7171
|
"Firebase credentials verified and saved.",
|
|
7153
7172
|
"",
|
|
7154
|
-
"**Restart Claude (quit fully and reopen) to load the workflow builder + funnel builder + pipeline builder + form builder + workflow cloner tools (
|
|
7173
|
+
"**Restart Claude (quit fully and reopen) to load the workflow builder + funnel builder + pipeline builder + form builder + workflow cloner tools (191 total).**",
|
|
7155
7174
|
"",
|
|
7156
7175
|
'After restart, try: "List my workflows in full detail" or "Validate workflow <id>".',
|
|
7157
7176
|
"",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elitedcs/ghl-mcp",
|
|
3
|
-
"version": "3.10.
|
|
4
|
-
"description": "GoHighLevel MCP Server for Claude.
|
|
3
|
+
"version": "3.10.1",
|
|
4
|
+
"description": "GoHighLevel MCP Server for Claude. 191 tools — full CRM, automation, marketing control, and the only programmatic GHL workflow builder.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"ghl-mcp": "dist/index.js"
|