@elitedcs/ghl-mcp 3.34.1 → 3.34.3
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 +28 -0
- package/README.md +2 -2
- package/dist/index.js +15 -7
- package/package.json +1 -1
- package/templates/action-schemas.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.34.3 — Audit catches dead workflow hand-offs + get_social_posts 422 fix
|
|
4
|
+
|
|
5
|
+
- **`audit_workflows` / `validate_workflow` now scan `add_to_workflow` targets.**
|
|
6
|
+
Only `remove_from_workflow` was scanned before, so a step that hands a contact
|
|
7
|
+
off to a workflow that was later deleted (the classic cleanup/snapshot mistake)
|
|
8
|
+
went undetected — exactly the silent-skip the audit exists to catch. GHL drops
|
|
9
|
+
the hand-off and every action after it with no error. Now flagged like any
|
|
10
|
+
other dead reference; deduped so the same id in `workflowId` and
|
|
11
|
+
`workflow_id[]` reports once. Still never false-alarms: valid targets pass, and
|
|
12
|
+
a self-reference is a warning, not an error. (4 regression tests added.)
|
|
13
|
+
- **`get_social_posts`:** fixed the GHL 422 ("skip/limit must be a number
|
|
14
|
+
string"; "status should not exist"). `skip`/`limit` are now sent as strings and
|
|
15
|
+
`status` is no longer placed in the request body.
|
|
16
|
+
|
|
17
|
+
Known gap (queued, deferred to avoid false alarms): a custom field deleted or
|
|
18
|
+
renamed but still referenced only through a `{{contact.x}}` merge tag in message
|
|
19
|
+
copy is not yet flagged. That renders blank rather than killing the action, and
|
|
20
|
+
catching it safely needs a key-aware, standard-field-allowlisted pass so the
|
|
21
|
+
audit keeps its never-false-alarm guarantee.
|
|
22
|
+
|
|
23
|
+
## 3.34.2 — Docs: launch pricing + the task-notification trap
|
|
24
|
+
|
|
25
|
+
- README pricing updated for launch: $97/mo at ghlcommand.com, unlimited
|
|
26
|
+
sub-accounts on 3 machines, first-month-back guarantee.
|
|
27
|
+
- Workflow docs corrected: the task action type is `task-notification`
|
|
28
|
+
(hyphen). The underscore form saves and validates but is silently
|
|
29
|
+
skipped at runtime — live-verified. Validator enforcement ships next.
|
|
30
|
+
|
|
3
31
|
## 3.34.1 — CLI list-locations shows companyId
|
|
4
32
|
|
|
5
33
|
`ghl-mcp cli list-locations` now includes each location's `companyId` (same as
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Works with **both the Claude Desktop App and Claude Code terminal** — your choice.
|
|
8
8
|
|
|
9
|
-
**License required.**
|
|
9
|
+
**License required.** Get it at [ghlcommand.com](https://ghlcommand.com?utm_source=npm&utm_medium=readme) — $97/mo, covering UNLIMITED GoHighLevel sub-accounts on up to 3 machines (never billed per account). **30-day time-back guarantee**: save 5+ hours on one client build or your first month back.
|
|
10
10
|
|
|
11
11
|
Built by [Elite DCs, LLC](https://elitedcs.com).
|
|
12
12
|
|
|
@@ -79,7 +79,7 @@ This MCP (Model Context Protocol) server connects Claude directly to GoHighLevel
|
|
|
79
79
|
|
|
80
80
|
### 1. Buy a license
|
|
81
81
|
|
|
82
|
-
[
|
|
82
|
+
[ghlcommand.com](https://ghlcommand.com?utm_source=npm&utm_medium=readme) — $97/mo, every sub-account you manage. License key arrives by email within 1-2 minutes.
|
|
83
83
|
|
|
84
84
|
### 2. Install in Claude Desktop App
|
|
85
85
|
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ var require_package = __commonJS({
|
|
|
31
31
|
"package.json"(exports2, module2) {
|
|
32
32
|
module2.exports = {
|
|
33
33
|
name: "@elitedcs/ghl-mcp",
|
|
34
|
-
version: "3.34.
|
|
34
|
+
version: "3.34.3",
|
|
35
35
|
mcpName: "io.github.drjerryrelth/ghl-command",
|
|
36
36
|
description: "GoHighLevel MCP Server for Claude. 218 tools \u2014 full CRM, automation, marketing control, account-wide workflow audit, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
|
|
37
37
|
main: "dist/index.js",
|
|
@@ -3979,9 +3979,9 @@ function registerSocialPlannerTools(server2, client) {
|
|
|
3979
3979
|
if (fromDate !== void 0) body.fromDate = fromDate;
|
|
3980
3980
|
if (toDate !== void 0) body.toDate = toDate;
|
|
3981
3981
|
if (includeUsers !== void 0) body.includeUsers = includeUsers;
|
|
3982
|
-
|
|
3983
|
-
body.skip = skip ?? 0;
|
|
3984
|
-
body.limit = limit ?? 20;
|
|
3982
|
+
void status;
|
|
3983
|
+
body.skip = String(skip ?? 0);
|
|
3984
|
+
body.limit = String(limit ?? 20);
|
|
3985
3985
|
return client.post(`/social-media-posting/${resolvedLocationId}/posts/list`, { body });
|
|
3986
3986
|
}
|
|
3987
3987
|
);
|
|
@@ -8610,11 +8610,19 @@ function extractFromAction(action, refs) {
|
|
|
8610
8610
|
refs.push({ kind: "user", id: attr.assignedTo, where: `${where} \u2192 assignedTo` });
|
|
8611
8611
|
break;
|
|
8612
8612
|
}
|
|
8613
|
-
// ── Workflow refs ──
|
|
8613
|
+
// ── Workflow refs — add_to_workflow AND remove_from_workflow both carry a target ──
|
|
8614
|
+
// Both shapes hold the target workflow as a `workflowId` string and/or a `workflow_id`
|
|
8615
|
+
// array. A dead target (e.g. the linked workflow was deleted in a cleanup or snapshot)
|
|
8616
|
+
// is the classic silent-skip: GHL drops the hand-off and every action after it, no error.
|
|
8617
|
+
// Previously only remove_from_workflow was scanned, so add_to_workflow → deleted workflow
|
|
8618
|
+
// went undetected. Dedup so the same id in both fields is reported once.
|
|
8619
|
+
case "add_to_workflow":
|
|
8614
8620
|
case "remove_from_workflow": {
|
|
8615
|
-
|
|
8621
|
+
const targetIds = /* @__PURE__ */ new Set();
|
|
8622
|
+
if (typeof attr.workflowId === "string") targetIds.add(attr.workflowId);
|
|
8616
8623
|
const arr = Array.isArray(attr.workflow_id) ? attr.workflow_id : [];
|
|
8617
|
-
for (
|
|
8624
|
+
for (const v of arr) if (typeof v === "string") targetIds.add(v);
|
|
8625
|
+
for (const id of targetIds) refs.push({ kind: "workflow", id, where: `${where} \u2192 workflow target` });
|
|
8618
8626
|
break;
|
|
8619
8627
|
}
|
|
8620
8628
|
// ── Opportunity refs — FOUR distinct shapes ──
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elitedcs/ghl-mcp",
|
|
3
|
-
"version": "3.34.
|
|
3
|
+
"version": "3.34.3",
|
|
4
4
|
"mcpName": "io.github.drjerryrelth/ghl-command",
|
|
5
5
|
"description": "GoHighLevel MCP Server for Claude. 218 tools — full CRM, automation, marketing control, account-wide workflow audit, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"title": "Task Title",
|
|
131
131
|
"dueDate": "1",
|
|
132
132
|
"body": "Task description text",
|
|
133
|
-
"type": "
|
|
133
|
+
"type": "task-notification",
|
|
134
134
|
"__customInputs__": {}
|
|
135
135
|
},
|
|
136
136
|
"notes": "dueDate is days from now as string. assignedTo is a user ID."
|