@elitedcs/ghl-mcp 3.77.0 → 3.77.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,41 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.77.1 — the Blueprint can build a client account, and had been saying it could not
4
+
5
+ If you ran the Blueprint, it planned the account, showed you the two checklists, and then
6
+ printed this at the bottom:
7
+
8
+ > _v1 stops here. When you approve, the automatic list is ready for one-shot staging (phase 2)._
9
+
10
+ **That was wrong, and it had been wrong for months.** The Blueprint builds. You approve the
11
+ plan, it dry-runs the automatic list without writing anything, shows you exactly what it
12
+ would create, and on your go it builds: pipelines and stages, custom fields, tags, custom
13
+ values, calendars, forms, funnel structure, templates, and workflows chained and verified,
14
+ each object read back before anything that depends on it is created.
15
+
16
+ The plan-only sentence was true of the first version. The builder was finished afterwards
17
+ and nobody removed the old wording. It was in four files, and those files ship inside the
18
+ package, so it has been on your machine reading the wrong thing to you the whole time.
19
+
20
+ **Two of them were worse than a stale sentence.** One instructed the assistant to tell you
21
+ execution was not available yet, so it was not merely present, it was being read out. And
22
+ the description of `apply_build_plan` itself said `execute = live writes (not yet enabled)`
23
+ three hundred lines above the code that performs those writes, which means an assistant
24
+ reading that description could decline to run a build you had just asked for. Meanwhile the
25
+ same skill file gave the correct build instruction further down, so it contradicted itself
26
+ and the half you saw was the false one.
27
+
28
+ **What has not changed is the gate.** Nothing is built until you say so, the dry run still
29
+ writes nothing, and workflows are still created as drafts unless you ask for them
30
+ published. The old wording carried that promise correctly, which is a large part of why the
31
+ false half went unnoticed. The gate stays; only the claim that building does not exist is
32
+ gone.
33
+
34
+ A test now fails the build on any of the six ways this was phrased, anywhere in the skill or
35
+ in that tool, so it cannot come back quietly.
36
+
37
+ Counts unchanged: 248 tools, 51 modules, free tier 112.
38
+
3
39
  ## 3.77.0 — the account you aimed at, even when two things run at once
4
40
 
5
41
  `switch_location` used to change your API key first and your location a moment later.
package/README.md CHANGED
@@ -897,7 +897,7 @@ Built by **[Elite DCs, LLC](https://elitedcs.com)** — a digital marketing and
897
897
 
898
898
  **Tech stack:** TypeScript, Node.js, esbuild, MCP SDK, Zod, GHL API v2, Firebase Auth
899
899
 
900
- **Version:** 3.77.0
900
+ **Version:** 3.77.1
901
901
 
902
902
  ---
903
903
 
package/dist/index.js CHANGED
@@ -36004,7 +36004,7 @@ function registerIntakeToBuildTools(server2, client, builderClient, registry2) {
36004
36004
  ).optional().describe("fromPreset only: client-specific copy overrides \u2014 subject/html for an email template, body for an SMS template. Copy ONLY; structure is never overridable. Overrides land on the template AND its reviewable asset. An unknown ref is an error, never a silent no-op."),
36005
36005
  useSavedPlan: import_zod75.z.boolean().optional().describe("Load the approved plan saved for the active location by an earlier execute (plans/<locationId>.json on this machine) instead of passing one. The right choice for ANY re-run: re-authoring a plan drifts and duplicates objects."),
36006
36006
  replaceSavedPlan: import_zod75.z.boolean().optional().describe("Only with a new `plan` whose planId differs from the saved one: confirms the operator approved the new plan, so it replaces the saved plan on execute. Without it, a differently named plan is refused while a saved plan exists."),
36007
- mode: import_zod75.z.enum(["dry_run", "execute"]).optional().describe("dry_run (default) = resolve/expand/scan/report, no writes. execute = live writes (not yet enabled)."),
36007
+ mode: import_zod75.z.enum(["dry_run", "execute"]).optional().describe("dry_run (default) = resolve/expand/scan/report, no writes. execute = live writes. Run dry_run FIRST, show the operator the report, and run execute only on their go."),
36008
36008
  locationId: import_zod75.z.string().optional().describe("Target sub-account. MUST match the active location; if it differs the tool refuses (confirm/switch first)."),
36009
36009
  metHandoffs: import_zod75.z.array(import_zod75.z.string()).optional().describe('Handoff refs the operator has already satisfied (e.g. ["handoff.a2p"]) \u2014 lifts their gate so dependent workflows are not held DRAFT.'),
36010
36010
  publishWorkflows: import_zod75.z.boolean().optional().describe("If true, ungated workflows would be published instead of left DRAFT. Default false (DRAFT)."),
@@ -37360,7 +37360,7 @@ var require_package = __commonJS({
37360
37360
  "package.json"(exports2, module2) {
37361
37361
  module2.exports = {
37362
37362
  name: "@elitedcs/ghl-mcp",
37363
- version: "3.77.0",
37363
+ version: "3.77.1",
37364
37364
  mcpName: "io.github.drjerryrelth/ghl-command",
37365
37365
  description: "GoHighLevel MCP Server for Claude. 248 tools \u2014 full CRM, automation, marketing control, account-wide workflow audit, live funnel-capture verification, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
37366
37366
  main: "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elitedcs/ghl-mcp",
3
- "version": "3.77.0",
3
+ "version": "3.77.1",
4
4
  "mcpName": "io.github.drjerryrelth/ghl-command",
5
5
  "description": "GoHighLevel MCP Server for Claude. 248 tools — full CRM, automation, marketing control, account-wide workflow audit, live funnel-capture verification, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
6
6
  "main": "dist/index.js",
@@ -2,7 +2,7 @@
2
2
 
3
3
  Blueprint turns a new client's intake into a complete, reviewable GoHighLevel build plan for that client's sub-account, then hands you two checklists: what GHL Command will build for you, and what you have to do yourself, in order. It plans. You approve. Nothing is built until you say so.
4
4
 
5
- v1 produces the reviewable build plan and the two-part checklist, and stops at the approval gate. One-shot auto-build is the next phase.
5
+ The skill produces the reviewable build plan and the two-part checklist, and stops at the approval gate. On your approval it builds the automatic list for you through `apply_build_plan`: a dry run first, which writes nothing and reports exactly what it would create, then the live build on your go.
6
6
 
7
7
  ## Install
8
8
 
@@ -8,9 +8,9 @@ compatibility: Claude Code, Claude Cowork, Claude.ai
8
8
 
9
9
  You are a **senior GoHighLevel solutions architect**. You turn a client's intake into a complete, build-ready account plan — clean, minimal, every automation wired to fire, in the order it must be built so nothing references a dead ID. You have one professional obsession: the GHL silent-failure bug, where an action points at a pipeline, stage, field, or workflow whose ID no longer exists and GHL skips it and everything beneath it with no error and a workflow that still shows green. You design so that can never happen.
10
10
 
11
- This skill produces a **build plan** (the contract in `references/brief-schema.md` and `references/build-plan-schema.md`) and renders it for human review. It runs against whatever account `get_current_location` returns. **It does not execute anything in v1** — it stops at the approval gate. Execution (`apply_build_plan`) is phase 2, owned by the MCP.
11
+ This skill produces a **build plan** (the contract in `references/brief-schema.md` and `references/build-plan-schema.md`) and renders it for human review. It runs against whatever account `get_current_location` returns. **This skill itself never writes to the account** — it stops at the approval gate. Building is done by the MCP's `apply_build_plan`, which is live: after approval you run it `mode:"dry_run"` first, show the report, and only on the operator's go run `mode:"execute"` (STEP 9 below).
12
12
 
13
- > Account-agnostic, always. No hardcoded IDs, no dependency on any specific agency's stack. The plan carries symbolic **refs** (`pipeline.main`, `stage.new_lead`), never real GHL IDs. The phase-2 executor resolves ref → id at build time, after each object is created and verified. That is what kills the silent-failure class.
13
+ > Account-agnostic, always. No hardcoded IDs, no dependency on any specific agency's stack. The plan carries symbolic **refs** (`pipeline.main`, `stage.new_lead`), never real GHL IDs. The executor resolves ref → id at build time, after each object is created and verified. That is what kills the silent-failure class.
14
14
 
15
15
  ## The pipeline you run
16
16
 
@@ -6,7 +6,7 @@ STATUS: v1, 2026-06-15. Owner: atlas. The required render: the v1 deliverable is
6
6
  - **List 1 — "GHL Command will do automatically (once you approve)."** Every creatable object in the plan, grouped and counted, each line in plain English. These are what phase-2 `apply_build_plan` will stage in one shot.
7
7
  - **List 2 — "You must do manually, in this order."** Every `handoffs[]` item, topologically ordered by dependency (`blocks`), each with owner (YOU-UI / YOU-EXT / TEAM), the instruction, the success check, and where it sits in the flow.
8
8
  - The approver can **edit either list** before approving (rename, drop, reorder, adjust). The skill re-renders after edits.
9
- - v1 stops at approval. Execution is phase 2. Say so explicitly at the bottom.
9
+ - Nothing is built until the operator approves. Say so explicitly at the bottom, and say what happens next: a dry run that writes nothing, then the live build on their go.
10
10
  - Operator voice. No em-dashes, no hype. Counts are exact (derived from the plan, never asserted loosely).
11
11
  - Owner labels render as **YOU-UI** (in the GHL UI), **YOU-EXT** (external: carrier, Stripe), and **TEAM** (a team member) — the subscriber is "you" in their own account. The plan's `handoffs[].owner` field carries the canonical `OPERATOR-UI` / `OPERATOR-EXT` / `TEAM` enum; this render humanizes them. (The legacy `JERRY-UI`/`JERRY-EXT`/`SASHA` are deprecated — accepted + normalized by the MCP for back-compat, never emitted.)
12
12
 
@@ -72,7 +72,7 @@ _Total: <X> objects across <Y> types._
72
72
 
73
73
  ---
74
74
 
75
- _v1 stops here. When you approve, the automatic list is ready for one-shot staging (phase 2). Each step above is verified before the steps that depend on it run._
75
+ _Nothing has been built yet. When you approve, the automatic list is staged for you: a dry run first, which writes nothing and reports exactly what it would create, then the live build on your go. Each step above is verified before the steps that depend on it run._
76
76
  ```
77
77
 
78
78
  ## Render notes