@kivimedia/kmhub 2.0.0 → 2.9.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/README.md +6 -5
- package/bin/kmhub.mjs +20 -7
- package/coach-book-output-guard.mjs +760 -0
- package/index.mjs +2 -0
- package/package.json +8 -3
- package/prompts/briefing.md +29 -0
- package/prompts/luxury.md +70 -0
- package/prompts/play.md +49 -0
- package/prompts/run.md +36 -0
- package/prompts/setup.md +33 -0
- package/prompts/vs-booked.md +46 -0
- package/prompts/what-can-you-do.md +40 -0
- package/prompts.mjs +110 -0
- package/read-only-tools.json +142 -0
- package/remote.mjs +815 -99
- package/tools/balloon-costing.mjs +80 -0
- package/tools/booking-equipment.mjs +110 -0
- package/tools/bridges.mjs +54 -0
- package/tools/calendar.mjs +9 -0
- package/tools/capabilities.mjs +155 -0
- package/tools/catalog.mjs +288 -0
- package/tools/clubs.mjs +176 -0
- package/tools/coach.mjs +771 -0
- package/tools/compare.mjs +76 -0
- package/tools/core.mjs +21 -0
- package/tools/crm.mjs +12 -3
- package/tools/dubsado.mjs +137 -0
- package/tools/exports.mjs +128 -0
- package/tools/fact-review.mjs +125 -0
- package/tools/flows.mjs +261 -0
- package/tools/forms.mjs +158 -0
- package/tools/gols.mjs +134 -0
- package/tools/hr.mjs +162 -0
- package/tools/knowledge.mjs +4 -3
- package/tools/marketing.mjs +396 -0
- package/tools/meta.mjs +2 -2
- package/tools/military.mjs +244 -0
- package/tools/outreach.mjs +27 -4
- package/tools/pending.mjs +122 -0
- package/tools/photos.mjs +140 -0
- package/tools/plays.mjs +1 -1
- package/tools/profile.mjs +118 -0
- package/tools/radar.mjs +173 -0
- package/tools/recurring-invoices.mjs +149 -0
- package/tools/reengage.mjs +434 -0
- package/tools/schedules.mjs +55 -0
- package/tools/setup.mjs +168 -0
- package/tools/sops-bridges.mjs +86 -0
- package/tools/sops.mjs +314 -0
- package/tools/sourcing.mjs +50 -2
- package/tools/strategy.mjs +146 -0
- package/tools/studio.mjs +132 -0
- package/tools/venueradar.mjs +151 -0
- package/tools/voice.mjs +134 -0
- package/tools.mjs +70 -12
package/README.md
CHANGED
|
@@ -61,6 +61,7 @@ profile loads only the families you want:
|
|
|
61
61
|
| `outreach` | `core` + the outreach families |
|
|
62
62
|
| `money` | `core` + the billing families |
|
|
63
63
|
| `content` | `core` + the content families |
|
|
64
|
+
| `coach` | Fully Booked Coach operations, client delivery, acquisition, and content requests |
|
|
64
65
|
| `full` | everything (**default**) |
|
|
65
66
|
|
|
66
67
|
`full` is the default, so nothing changes for an existing connection. An unknown profile name
|
|
@@ -111,19 +112,19 @@ No local install for the user - they point their client at the hosted VPS endpoi
|
|
|
111
112
|
authenticate with their own KM Hub key as a header. One server process serves every org;
|
|
112
113
|
each request is scoped to the token it carries. Operators: see
|
|
113
114
|
[DEPLOY-VPS.md](./DEPLOY-VPS.md) (pm2 `kmhub-mcp`, port `8830`,
|
|
114
|
-
`https://
|
|
115
|
+
`https://mcp.kivimedia.co/mcp`).
|
|
115
116
|
|
|
116
117
|
Claude Code (one command):
|
|
117
118
|
|
|
118
119
|
```bash
|
|
119
|
-
claude mcp add --transport http kmhub https://
|
|
120
|
+
claude mcp add --transport http kmhub https://mcp.kivimedia.co/mcp \
|
|
120
121
|
--header "Authorization: Bearer kmh_live_xxxxxxxx"
|
|
121
122
|
```
|
|
122
123
|
|
|
123
124
|
Add `?profile=core` to the URL to load a smaller tool set:
|
|
124
125
|
|
|
125
126
|
```bash
|
|
126
|
-
claude mcp add --transport http kmhub "https://
|
|
127
|
+
claude mcp add --transport http kmhub "https://mcp.kivimedia.co/mcp?profile=core" \
|
|
127
128
|
--header "Authorization: Bearer kmh_live_xxxxxxxx"
|
|
128
129
|
```
|
|
129
130
|
|
|
@@ -134,7 +135,7 @@ Claude Desktop / config-file clients:
|
|
|
134
135
|
"mcpServers": {
|
|
135
136
|
"kmhub": {
|
|
136
137
|
"type": "streamable-http",
|
|
137
|
-
"url": "https://
|
|
138
|
+
"url": "https://mcp.kivimedia.co/mcp",
|
|
138
139
|
"headers": {
|
|
139
140
|
"Authorization": "Bearer kmh_live_xxxxxxxx",
|
|
140
141
|
"X-KMHub-Profile": "full"
|
|
@@ -144,7 +145,7 @@ Claude Desktop / config-file clients:
|
|
|
144
145
|
}
|
|
145
146
|
```
|
|
146
147
|
|
|
147
|
-
Health check (no auth): `GET https://
|
|
148
|
+
Health check (no auth): `GET https://mcp.kivimedia.co/health`.
|
|
148
149
|
|
|
149
150
|
## Adding tools
|
|
150
151
|
|
package/bin/kmhub.mjs
CHANGED
|
@@ -50,6 +50,12 @@ const FALLBACK_BASE = 'https://jpwbosrmkibsdgckowsm.supabase.co/functions/v1/kmh
|
|
|
50
50
|
/** Keys are minted as kmh_live_ plus hex. The API matches the same shape before it looks anything up. */
|
|
51
51
|
const KEY_RE = /^kmh_live_[0-9a-f]+$/i;
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Where people who use Codex, Cursor or Grok Build are sent. This tool only knows how to
|
|
55
|
+
* register into Claude Code; the installers behind this page wire all four apps.
|
|
56
|
+
*/
|
|
57
|
+
const SETUP_URL = 'https://hub.kivimedia.co/terminal/';
|
|
58
|
+
|
|
53
59
|
/** A connector name has to survive being an argv element and a JSON key. */
|
|
54
60
|
const NAME_RE = /^[A-Za-z0-9_-]{1,64}$/;
|
|
55
61
|
|
|
@@ -71,8 +77,12 @@ const HELP = `kmhub, the KM Hub Terminal Mode command line tool.
|
|
|
71
77
|
you passed, then KMHUB_API_KEY in the environment, then the key stored in the
|
|
72
78
|
registration itself.
|
|
73
79
|
|
|
74
|
-
Create a key in KM Hub under Settings > Developer & API.
|
|
80
|
+
Create a key in KM Hub under Settings > Connect > Developer & API.
|
|
75
81
|
Set KMHUB_API_BASE to point at a different KM Hub.
|
|
82
|
+
|
|
83
|
+
This tool registers Claude Code only. For Codex, Cursor or Grok Build, use the
|
|
84
|
+
KM Hub setup instead, which connects the app you pick and needs no key:
|
|
85
|
+
${SETUP_URL}
|
|
76
86
|
`;
|
|
77
87
|
|
|
78
88
|
// ---------------------------------------------------------------------------
|
|
@@ -197,7 +207,7 @@ function explain(res, base) {
|
|
|
197
207
|
if (res.status === 401) {
|
|
198
208
|
return [
|
|
199
209
|
'KM Hub did not accept that key. It is either mistyped or it has been revoked.',
|
|
200
|
-
'Create a fresh one in KM Hub under Settings > Developer & API, then run this again with the new key.',
|
|
210
|
+
'Create a fresh one in KM Hub under Settings > Connect > Developer & API, then run this again with the new key.',
|
|
201
211
|
].join('\n');
|
|
202
212
|
}
|
|
203
213
|
if (res.status === 402) {
|
|
@@ -213,7 +223,7 @@ function explain(res, base) {
|
|
|
213
223
|
if (res.status === 403) {
|
|
214
224
|
return [
|
|
215
225
|
`This key does not carry the scope that call needs${message ? ` (${message})` : ''}.`,
|
|
216
|
-
'A read-only key can read your workspace but cannot create anything. Mint a key with write scope in Settings > Developer & API if you need the create tools.',
|
|
226
|
+
'A read-only key can read your workspace but cannot create anything. Mint a key with write scope in Settings > Connect > Developer & API if you need the create tools.',
|
|
217
227
|
].join('\n');
|
|
218
228
|
}
|
|
219
229
|
if (res.status === 429) {
|
|
@@ -436,12 +446,12 @@ async function cmdInstall(key, name) {
|
|
|
436
446
|
fail(`I read "${name}" as the connector name, not as a key. A key starts with kmh_live_.`);
|
|
437
447
|
fail('');
|
|
438
448
|
}
|
|
439
|
-
fail('Create one in KM Hub under Settings > Developer & API.');
|
|
449
|
+
fail('Create one in KM Hub under Settings > Connect > Developer & API.');
|
|
440
450
|
return 2;
|
|
441
451
|
}
|
|
442
452
|
if (!KEY_RE.test(key)) {
|
|
443
453
|
fail('That does not look like a KM Hub API key.');
|
|
444
|
-
fail('A key starts with kmh_live_ and is followed by hex. Copy it again from Settings > Developer & API.');
|
|
454
|
+
fail('A key starts with kmh_live_ and is followed by hex. Copy it again from Settings > Connect > Developer & API.');
|
|
445
455
|
return 2;
|
|
446
456
|
}
|
|
447
457
|
if (!NAME_RE.test(name)) {
|
|
@@ -487,6 +497,9 @@ async function cmdInstall(key, name) {
|
|
|
487
497
|
fail('If you are setting up Claude Desktop instead, put this in your claude_desktop_config.json:');
|
|
488
498
|
fail('');
|
|
489
499
|
fail(desktopConfigBlock(name, key));
|
|
500
|
+
fail('');
|
|
501
|
+
fail('Using Codex, Cursor or Grok Build instead? This tool only registers Claude Code.');
|
|
502
|
+
fail(`The KM Hub setup connects the app you pick: ${SETUP_URL}`);
|
|
490
503
|
return 1;
|
|
491
504
|
}
|
|
492
505
|
|
|
@@ -521,7 +534,7 @@ async function cmdInstall(key, name) {
|
|
|
521
534
|
say('');
|
|
522
535
|
say('Two things worth knowing:');
|
|
523
536
|
say(` 1. The key is stored in your Claude Code config. If it ever leaks, revoke it in KM Hub`);
|
|
524
|
-
say(' under Settings > Developer & API and run this install again with a fresh one.');
|
|
537
|
+
say(' under Settings > Connect > Developer & API and run this install again with a fresh one.');
|
|
525
538
|
say(` 2. The connector is launched with npx, so restarting Claude Code picks up new builds.`);
|
|
526
539
|
say(` Run npx ${PKG_NAME} doctor if anything ever looks wrong.`);
|
|
527
540
|
return 0;
|
|
@@ -743,7 +756,7 @@ async function cmdDoctor(argKey, name) {
|
|
|
743
756
|
'fail',
|
|
744
757
|
'API key',
|
|
745
758
|
`the value from ${source} is not shaped like a KM Hub key`,
|
|
746
|
-
'A key starts with kmh_live_ and is followed by hex. Copy it again from Settings > Developer & API.',
|
|
759
|
+
'A key starts with kmh_live_ and is followed by hex. Copy it again from Settings > Connect > Developer & API.',
|
|
747
760
|
);
|
|
748
761
|
} else {
|
|
749
762
|
record('ok', 'API key', `${maskKey(key)} from ${source}`);
|