@elitedcs/ghl-mcp 3.84.4 → 3.84.5
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 +6 -0
- package/README.md +1 -1
- package/dist/index.js +14 -10
- package/guide/guide.html +6 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.84.5 — renewals counted again, clearer connection cards
|
|
4
|
+
|
|
5
|
+
Stripe renewals are counted again. Stripe's current API reports when a subscription renews on each of its items rather than on the subscription, so the daily brief showed no renewals due and synced records had no renewal date. Both now read it from the items.
|
|
6
|
+
|
|
7
|
+
A connected card's Instructions now open with what the credential is, so a Slack card still says what a bot token is after it is connected. When Google sign-in is not set up on the machine, the Google Calendar card shows only why and hides steps for a Connect button it cannot offer. The sentences to say to Claude are labelled as an alternative to the screen, not a second set of steps.
|
|
8
|
+
|
|
3
9
|
## 3.84.4 — Connections and the daily brief
|
|
4
10
|
|
|
5
11
|
The daily brief page is redesigned: a headline with stat tiles, coloured status chips for every source, a section bar that stays in view, a tick-off list for what needs you today with a progress bar, money in tables, and long lists folded to a count. The cockpit's top bar now wraps on narrow screens instead of running off the edge.
|
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -20068,7 +20068,7 @@ var init_registry = __esm({
|
|
|
20068
20068
|
CONNECTOR_INSTRUCTION_INTROS = {
|
|
20069
20069
|
needs: "Have these ready before you connect.",
|
|
20070
20070
|
connect: "Follow these steps to give this machine access.",
|
|
20071
|
-
say: "
|
|
20071
|
+
say: "In a Claude chat you can say one of these to connect or use it.",
|
|
20072
20072
|
revoke: "Remove the saved connection or take back the provider's permission."
|
|
20073
20073
|
};
|
|
20074
20074
|
CONNECTOR_REGISTRY = [
|
|
@@ -20491,6 +20491,11 @@ var init_slack = __esm({
|
|
|
20491
20491
|
});
|
|
20492
20492
|
|
|
20493
20493
|
// src/command-os/connectors/stripe.ts
|
|
20494
|
+
function periodEnd(sub) {
|
|
20495
|
+
if (typeof sub.current_period_end === "number" && isFinite(sub.current_period_end)) return sub.current_period_end;
|
|
20496
|
+
const ends = (sub.items?.data ?? []).map((i) => i.current_period_end).filter((n) => typeof n === "number" && isFinite(n));
|
|
20497
|
+
return ends.length ? Math.min(...ends) : void 0;
|
|
20498
|
+
}
|
|
20494
20499
|
function identity(kind, externalId) {
|
|
20495
20500
|
return { system: SYSTEM, kind, externalId, tenantId: null };
|
|
20496
20501
|
}
|
|
@@ -20541,7 +20546,7 @@ function mapSubscription(sub, observedAt) {
|
|
|
20541
20546
|
if (priced.amount !== null) o.push(observe(id, "pays_per_period", priced.amount, observedAt, sub));
|
|
20542
20547
|
if (priced.cannotState) o.push(observe(id, "price_cannot_be_stated", priced.cannotState, observedAt, sub));
|
|
20543
20548
|
if (priced.interval) o.push(observe(id, "billing_interval", priced.interval, observedAt, sub));
|
|
20544
|
-
const renews = iso(sub
|
|
20549
|
+
const renews = iso(periodEnd(sub));
|
|
20545
20550
|
if (renews) o.push(observe(id, "renews_at", renews, observedAt, sub));
|
|
20546
20551
|
o.push(observe(id, "cancelling_at_period_end", sub.cancel_at_period_end === true, observedAt, sub));
|
|
20547
20552
|
return { identities: [id], observations: o };
|
|
@@ -20617,7 +20622,7 @@ function renewalsWithStale(subs, withinDays = 30, now = /* @__PURE__ */ new Date
|
|
|
20617
20622
|
const stale = [];
|
|
20618
20623
|
for (const s of subs) {
|
|
20619
20624
|
if (s.status !== "active" && s.status !== "trialing" && s.status !== "past_due") continue;
|
|
20620
|
-
const renewsAt = iso(s
|
|
20625
|
+
const renewsAt = iso(periodEnd(s));
|
|
20621
20626
|
if (!renewsAt) continue;
|
|
20622
20627
|
const days = Math.ceil((new Date(renewsAt).getTime() - now.getTime()) / 864e5);
|
|
20623
20628
|
if (days > withinDays) continue;
|
|
@@ -21254,6 +21259,7 @@ var init_stripe_read = __esm({
|
|
|
21254
21259
|
cancel_at_period_end: import_zod53.z.boolean().optional(),
|
|
21255
21260
|
items: import_zod53.z.object({ data: import_zod53.z.array(import_zod53.z.object({
|
|
21256
21261
|
quantity: import_zod53.z.number().nullable().optional(),
|
|
21262
|
+
current_period_end: import_zod53.z.number().optional(),
|
|
21257
21263
|
price: import_zod53.z.object({
|
|
21258
21264
|
unit_amount: import_zod53.z.number().nullable().optional(),
|
|
21259
21265
|
currency: import_zod53.z.string().nullable().optional(),
|
|
@@ -28971,7 +28977,7 @@ var require_package = __commonJS({
|
|
|
28971
28977
|
"package.json"(exports2, module2) {
|
|
28972
28978
|
module2.exports = {
|
|
28973
28979
|
name: "@elitedcs/ghl-mcp",
|
|
28974
|
-
version: "3.84.
|
|
28980
|
+
version: "3.84.5",
|
|
28975
28981
|
mcpName: "io.github.drjerryrelth/ghl-command",
|
|
28976
28982
|
description: "GoHighLevel MCP Server for Claude. 250 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.",
|
|
28977
28983
|
main: "dist/index.js",
|
|
@@ -29868,9 +29874,8 @@ function cardHtml(c) {
|
|
|
29868
29874
|
return `<section class="connection" id="${c.id}" data-system="${c.id}">
|
|
29869
29875
|
<h2 class="${proven ? "compact" : ""}">${esc2(c.name)}</h2>
|
|
29870
29876
|
<p><span class="dot ${c.readError ? "saved-unproven" : c.state}" aria-hidden="true"></span><span class="status">${esc2(statusText(c))}</span> <span class="needs-marker"${needsYou(c) ? "" : " hidden"}>Needs you today</span></p>
|
|
29871
|
-
<
|
|
29872
|
-
<
|
|
29873
|
-
<div class="connector-instructions" id="instructions-${c.id}"${proven ? " hidden" : ""}>${connectorInstructions(entry, "html", { includeDefinition: false })}</div>
|
|
29877
|
+
<button class="instructions-toggle" type="button" aria-controls="instructions-${c.id}" aria-expanded="${!proven && !needsSetup}"${proven && !needsSetup ? "" : " hidden"}>Instructions</button>
|
|
29878
|
+
<div class="connector-instructions" id="instructions-${c.id}"${proven || needsSetup ? " hidden" : ""}>${connectorInstructions(entry, "html")}</div>
|
|
29874
29879
|
${google ? `<p class="setup-notice"${needsSetup ? "" : " hidden"}>${esc2(CALENDAR_SETUP_MESSAGE)}</p>` : ""}
|
|
29875
29880
|
<div class="action-controls">
|
|
29876
29881
|
<button class="replace-toggle" type="button" aria-controls="connect-${c.id}" aria-expanded="false"${proven && !needsSetup ? "" : " hidden"}>${google ? "Reconnect" : "Replace key"}</button>
|
|
@@ -29897,7 +29902,7 @@ main.connections{max-width:50rem;margin:0 auto;padding:1.6rem 1.2rem 4rem;color:
|
|
|
29897
29902
|
.connections label{display:block;margin:.7rem 0 .25rem}.connections input{width:100%;padding:.5rem .6rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);font:inherit}
|
|
29898
29903
|
.connections button{background:var(--gold);color:var(--on-accent);border-radius:var(--radius-sm);padding:.6rem 1.1rem;font:inherit;font-weight:600;margin:.7rem .4rem .7rem 0}
|
|
29899
29904
|
.connections button:disabled{opacity:.5;cursor:wait}
|
|
29900
|
-
.connector-instructions{margin:1rem 0}.
|
|
29905
|
+
.connector-instructions{margin:1rem 0}.credential-definition{font-weight:600}
|
|
29901
29906
|
.connections h4{font-size:inherit;margin:.7rem 0}.instructions-checked{margin-bottom:.7rem}
|
|
29902
29907
|
.dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;margin-right:.4rem;background:var(--wait)}
|
|
29903
29908
|
.dot.proven{background:var(--ok)}.dot.saved-unproven{background:var(--warn)}.dot.grey{background:#8A857D}
|
|
@@ -29949,8 +29954,7 @@ function update(next,fresh){
|
|
|
29949
29954
|
el.querySelector('.dot').className='dot '+(c.readError?'saved-unproven':c.state);
|
|
29950
29955
|
var proven=c.state==='proven',needsSetup=c.id==='google-calendar'&&c.setup==='needs-setup';
|
|
29951
29956
|
el.querySelector('h2').classList.toggle('compact',proven);
|
|
29952
|
-
el
|
|
29953
|
-
resetControl(el,'.instructions-toggle',proven,!proven);
|
|
29957
|
+
resetControl(el,'.instructions-toggle',proven&&!needsSetup,!proven&&!needsSetup);
|
|
29954
29958
|
var pendingGoogle=c.id==='google-calendar'&&Boolean(googleSignInUrl);
|
|
29955
29959
|
resetControl(el,'.replace-toggle',proven&&!needsSetup,pendingGoogle||(!proven&&!needsSetup));
|
|
29956
29960
|
var link=el.querySelector('.sign-in');
|
package/guide/guide.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>GHL Command — User Guide</title>
|
|
7
|
-
<!-- guides-hash:
|
|
7
|
+
<!-- guides-hash: bcf597dd88beeb1f -->
|
|
8
8
|
<style>
|
|
9
9
|
/* Deliberately light in every environment, including a dark-mode OS. This is a
|
|
10
10
|
reference document people read at length, print, and save to PDF, and a page
|
|
@@ -1227,7 +1227,7 @@ Before you build: look up the real calendar, the real workflows you are removing
|
|
|
1227
1227
|
<li>Copy the key into the password field on the Stripe card on the Connections screen, add an account label if useful, and choose Connect. Use a live-mode key for real income. (not yet checked on a real screen)</li>
|
|
1228
1228
|
</ol>
|
|
1229
1229
|
<h3>What to say</h3>
|
|
1230
|
-
<p class="gpara">
|
|
1230
|
+
<p class="gpara">In a Claude chat you can say one of these to connect or use it.</p>
|
|
1231
1231
|
<ul>
|
|
1232
1232
|
<li>“Connect my Stripe.”</li>
|
|
1233
1233
|
<li>“Sync my Stripe.”</li>
|
|
@@ -1261,7 +1261,7 @@ Before you build: look up the real calendar, the real workflows you are removing
|
|
|
1261
1261
|
<li>In Slack, open each public channel you want read and invite the app with /invite followed by its name. (not yet checked on a real screen)</li>
|
|
1262
1262
|
</ol>
|
|
1263
1263
|
<h3>What to say</h3>
|
|
1264
|
-
<p class="gpara">
|
|
1264
|
+
<p class="gpara">In a Claude chat you can say one of these to connect or use it.</p>
|
|
1265
1265
|
<ul>
|
|
1266
1266
|
<li>“Connect my Slack.”</li>
|
|
1267
1267
|
<li>“Show me what is waiting in Slack.”</li>
|
|
@@ -1292,7 +1292,7 @@ Before you build: look up the real calendar, the real workflows you are removing
|
|
|
1292
1292
|
<li>Return to the Google Calendar card and choose Finish. Your sign-in is saved only after your calendars can be read.</li>
|
|
1293
1293
|
</ol>
|
|
1294
1294
|
<h3>What to say</h3>
|
|
1295
|
-
<p class="gpara">
|
|
1295
|
+
<p class="gpara">In a Claude chat you can say one of these to connect or use it.</p>
|
|
1296
1296
|
<ul>
|
|
1297
1297
|
<li>“Connect my own Google Calendar.”</li>
|
|
1298
1298
|
<li>“Finish connecting my Google Calendar.”</li>
|
|
@@ -1314,7 +1314,7 @@ Before you build: look up the real calendar, the real workflows you are removing
|
|
|
1314
1314
|
<h3>How to connect</h3>
|
|
1315
1315
|
<p class="gpara">Answered by your Claude's Gmail connector; nothing to connect here</p>
|
|
1316
1316
|
<h3>What to say</h3>
|
|
1317
|
-
<p class="gpara">
|
|
1317
|
+
<p class="gpara">In a Claude chat you can say one of these to connect or use it.</p>
|
|
1318
1318
|
<ul>
|
|
1319
1319
|
<li>“Run my morning brief and check client email waiting on me through Gmail.”</li>
|
|
1320
1320
|
<li>“After checking Gmail, call record_brief_answers to put the results on my brief dashboard.”</li>
|
|
@@ -1335,7 +1335,7 @@ Before you build: look up the real calendar, the real workflows you are removing
|
|
|
1335
1335
|
<h3>How to connect</h3>
|
|
1336
1336
|
<p class="gpara">Answered by your Claude's Drive connector; nothing to connect here</p>
|
|
1337
1337
|
<h3>What to say</h3>
|
|
1338
|
-
<p class="gpara">
|
|
1338
|
+
<p class="gpara">In a Claude chat you can say one of these to connect or use it.</p>
|
|
1339
1339
|
<ul>
|
|
1340
1340
|
<li>“Find this client's agreement, onboarding form and brand files in Google Drive, using their name and domain.”</li>
|
|
1341
1341
|
<li>“After checking Drive on request, call record_brief_answers to put the results on my brief dashboard.”</li>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elitedcs/ghl-mcp",
|
|
3
|
-
"version": "3.84.
|
|
3
|
+
"version": "3.84.5",
|
|
4
4
|
"mcpName": "io.github.drjerryrelth/ghl-command",
|
|
5
5
|
"description": "GoHighLevel MCP Server for Claude. 250 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",
|