@awesomate/hosting-mcp 0.31.0 → 0.33.0
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/dist/index.js +48 -4
- package/package.json +1 -1
- package/skill/CHANGELOG.json +16 -0
- package/skill/awesomate-n8n/SKILL.md +25 -6
package/dist/index.js
CHANGED
|
@@ -40993,6 +40993,7 @@ var TITLES = {
|
|
|
40993
40993
|
awesomate_n8n_node_docs: "Get n8n node docs",
|
|
40994
40994
|
awesomate_n8n_deploy: "Deploy n8n workflow",
|
|
40995
40995
|
awesomate_n8n_library: "Install Awesomate templates",
|
|
40996
|
+
awesomate_book_session: "Book a session with Awesomate",
|
|
40996
40997
|
awesomate_n8n_test: "Test-fire n8n workflow",
|
|
40997
40998
|
awesomate_n8n_datatable_write: "Write to n8n data table",
|
|
40998
40999
|
awesomate_n8n_attach_to_app: "Attach n8n to app",
|
|
@@ -41129,19 +41130,21 @@ server.registerTool(
|
|
|
41129
41130
|
"awesomate_n8n_library",
|
|
41130
41131
|
{
|
|
41131
41132
|
annotations: annotate("awesomate_n8n_library", MUTATING),
|
|
41132
|
-
description: "The Awesomate template library for THIS account: ready-made n8n automations and AI agents that Awesomate curates, including bundles linked to the account's referrer (e.g. Business Blueprint members see Dale Beaumont's bundles). Actions: 'list' (every bundle the account may see, each with installed, plan_ok and credentials_missing; every plan), 'detail' (slug: the templates in the bundle, what each does, the credential types it needs and whether the account already has each; every plan), 'install_plan' (slug: runs the pre-install checks WITHOUT writing and returns ready | paused | blocked; paused carries a help card per missing credential with where to get it, the exact page on their n8n to create it and our help article; Support Plus+), 'install' (slug: installs; refused unless the plan is ready, or every missing OPTIONAL credential is named in proceed_without and every ambiguous one has a choice in credential_choices; Support Plus+), 'redeem' (token: installs what a redeem token unlocks; Support Plus+).
|
|
41133
|
+
description: "The Awesomate template library for THIS account: ready-made n8n automations and AI agents that Awesomate curates, including bundles linked to the account's referrer (e.g. Business Blueprint members see Dale Beaumont's bundles). Actions: 'list' (every bundle the account may see, each with installed, plan_ok and credentials_missing; every plan), 'detail' (slug: the templates in the bundle, what each does, the credential types it needs and whether the account already has each; every plan), 'install_plan' (slug: runs the pre-install checks WITHOUT writing and returns ready | paused | blocked; paused carries a help card per missing credential with where to get it, the exact page on their n8n to create it and our help article; Support Plus+), 'install' (slug: installs; refused unless the plan is ready, or every missing OPTIONAL credential is named in proceed_without and every ambiguous one has a choice in credential_choices; Support Plus+), 'redeem' (token: installs what a redeem token unlocks; Support Plus+). Then: 'installs' (what is on the instance, grouped by bundle), 'activate' (slug; switches the bundle's workflows on behind the same credential gate the hub uses: a workflow with an empty or missing credential answers setup_incomplete with the exact list; pass active:false to switch off), 'test' (slug; runs each template's test recipe and returns passed | failed | untested with the execution id; real side effects DO run, warn the client), 'rollback' (slug; removes what YOUR most recent install of this bundle created, never anything reused). Workflows land INACTIVE on install; activate is a separate, confirmed step. A 403 whose missingScopes contains n8n:deploy means the plan is Essentials: show the catalog, say installing needs Support Plus, and stop. Never create a credential for the client; send them to create_url and re-run install_plan afterwards.",
|
|
41133
41134
|
inputSchema: {
|
|
41134
|
-
action: external_exports.enum(["list", "detail", "install_plan", "install", "redeem"]),
|
|
41135
|
+
action: external_exports.enum(["list", "detail", "install_plan", "install", "redeem", "installs", "activate", "test", "rollback"]),
|
|
41135
41136
|
slug: external_exports.string().optional().describe("Bundle slug from list (detail, install_plan, install)"),
|
|
41136
41137
|
token: external_exports.string().optional().describe("redeem only: the redeem token Awesomate handed over"),
|
|
41137
41138
|
proceed_without: external_exports.array(external_exports.string()).optional().describe("install only: OPTIONAL credential types the client agreed to skip (from install_plan.optional_missing)"),
|
|
41138
|
-
credential_choices: external_exports.record(external_exports.string()).optional().describe("install only: credential type -> credential id the client chose for ambiguous types (from install_plan.ambiguous)")
|
|
41139
|
+
credential_choices: external_exports.record(external_exports.string()).optional().describe("install only: credential type -> credential id the client chose for ambiguous types (from install_plan.ambiguous)"),
|
|
41140
|
+
active: external_exports.boolean().optional().describe("activate only: false switches the bundle off (default true)")
|
|
41139
41141
|
}
|
|
41140
41142
|
},
|
|
41141
|
-
async ({ action, slug, token, proceed_without, credential_choices }) => {
|
|
41143
|
+
async ({ action, slug, token, proceed_without, credential_choices, active }) => {
|
|
41142
41144
|
try {
|
|
41143
41145
|
const cfg = requireConfig();
|
|
41144
41146
|
if (action === "list") return textResult(await hubGet(cfg, "/api/my-n8n/library"));
|
|
41147
|
+
if (action === "installs") return textResult(await hubGet(cfg, "/api/my-n8n/library/installs"));
|
|
41145
41148
|
if (action === "redeem") {
|
|
41146
41149
|
if (!token) return errorResult(new Error("token is required for redeem"));
|
|
41147
41150
|
return textResult(await hubPost(cfg, "/api/my-n8n/library/redeem", { token }));
|
|
@@ -41150,6 +41153,9 @@ server.registerTool(
|
|
|
41150
41153
|
const base = `/api/my-n8n/library/bundles/${encodeURIComponent(slug)}`;
|
|
41151
41154
|
if (action === "detail") return textResult(await hubGet(cfg, base));
|
|
41152
41155
|
if (action === "install_plan") return textResult(await hubPost(cfg, `${base}/install-plan`, {}));
|
|
41156
|
+
if (action === "activate") return textResult(await hubPost(cfg, `${base}/activate`, { active: active !== false }));
|
|
41157
|
+
if (action === "test") return textResult(await hubPost(cfg, `${base}/test`, {}));
|
|
41158
|
+
if (action === "rollback") return textResult(await hubPost(cfg, `${base}/rollback`, {}));
|
|
41153
41159
|
return textResult(
|
|
41154
41160
|
await hubPost(cfg, `${base}/install`, { proceed_without: proceed_without ?? [], credential_choices: credential_choices ?? {} })
|
|
41155
41161
|
);
|
|
@@ -41158,6 +41164,44 @@ server.registerTool(
|
|
|
41158
41164
|
}
|
|
41159
41165
|
}
|
|
41160
41166
|
);
|
|
41167
|
+
server.registerTool(
|
|
41168
|
+
"awesomate_book_session",
|
|
41169
|
+
{
|
|
41170
|
+
annotations: annotate("awesomate_book_session", MUTATING),
|
|
41171
|
+
description: "Book a session with the Awesomate team on the client's behalf, from their credits. Use it when a template needs a credential or setup the client would rather not do alone (the install_plan help card names it), or when three test-and-fix rounds have failed. Actions: 'session_types' (what can be booked, credit cost, whether bookable on their plan, and the intake questions each asks; call FIRST), 'slots' (session_type, optional from/to ISO dates: open times with host_team_member_id), 'book' (session_type, starts_at ISO, host_team_member_id, client_name, optional timezone and intake answers; spends the credits shown; get an explicit yes first and tell them the time in THEIR timezone), 'mine' (their upcoming and past sessions). 404 not_live means bookings are not switched on for clients yet: say so and offer a support ticket instead. 402 insufficient_credits: relay it honestly and link https://hub.awesomate.ai/billing.",
|
|
41172
|
+
inputSchema: {
|
|
41173
|
+
action: external_exports.enum(["session_types", "slots", "book", "mine"]),
|
|
41174
|
+
session_type: external_exports.string().optional().describe("slots and book: the session type key from session_types"),
|
|
41175
|
+
from: external_exports.string().optional().describe("slots: ISO date to search from (default now)"),
|
|
41176
|
+
to: external_exports.string().optional().describe("slots: ISO date to search to (default from + 14 days)"),
|
|
41177
|
+
starts_at: external_exports.string().optional().describe("book: the slot start, ISO timestamp exactly as returned by slots"),
|
|
41178
|
+
host_team_member_id: external_exports.number().optional().describe("book: the host id from the chosen slot"),
|
|
41179
|
+
client_name: external_exports.string().optional().describe("book: the name the host will greet"),
|
|
41180
|
+
timezone: external_exports.string().optional().describe("book: IANA timezone, e.g. Australia/Brisbane"),
|
|
41181
|
+
intake: external_exports.record(external_exports.unknown()).optional().describe("book: answers to the session type's intake questions")
|
|
41182
|
+
}
|
|
41183
|
+
},
|
|
41184
|
+
async ({ action, session_type, from, to, starts_at, host_team_member_id, client_name, timezone, intake }) => {
|
|
41185
|
+
try {
|
|
41186
|
+
const cfg = requireConfig();
|
|
41187
|
+
if (action === "session_types") return textResult(await hubGet(cfg, "/api/bookings/session-types"));
|
|
41188
|
+
if (action === "mine") return textResult(await hubGet(cfg, "/api/bookings"));
|
|
41189
|
+
if (!session_type) return errorResult(new Error(`session_type is required for ${action}`));
|
|
41190
|
+
if (action === "slots") {
|
|
41191
|
+
const q = new URLSearchParams({ session_type });
|
|
41192
|
+
if (from) q.set("from", String(Date.parse(from)));
|
|
41193
|
+
if (to) q.set("to", String(Date.parse(to)));
|
|
41194
|
+
return textResult(await hubGet(cfg, `/api/bookings/slots?${q.toString()}`));
|
|
41195
|
+
}
|
|
41196
|
+
if (!starts_at || !host_team_member_id) return errorResult(new Error("starts_at and host_team_member_id are required for book"));
|
|
41197
|
+
return textResult(
|
|
41198
|
+
await hubPost(cfg, "/api/bookings", { session_type, starts_at, host_team_member_id, client_name: client_name ?? "", timezone, intake: intake ?? {} })
|
|
41199
|
+
);
|
|
41200
|
+
} catch (err) {
|
|
41201
|
+
return errorResult(err);
|
|
41202
|
+
}
|
|
41203
|
+
}
|
|
41204
|
+
);
|
|
41161
41205
|
server.registerTool(
|
|
41162
41206
|
"awesomate_n8n_test",
|
|
41163
41207
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@awesomate/hosting-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"description": "Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
package/skill/CHANGELOG.json
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"versions": [
|
|
3
|
+
{
|
|
4
|
+
"version": "0.33.0",
|
|
5
|
+
"highlights": [
|
|
6
|
+
"When a template needs a credential you would rather not set up alone, Claude can book a session with the Awesomate team for you: awesomate_book_session shows what can be booked, the open times and the credit cost, and books with your yes",
|
|
7
|
+
"Stuck after three test-and-fix rounds on one template? Claude now suggests a support ticket, and if you say yes it sends one carrying the template, the failing execution and your own note",
|
|
8
|
+
"A missing credential's help card names what the template expects (Kie, not HTTP Bearer Auth), taken from the template's own markers"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"version": "0.32.0",
|
|
13
|
+
"highlights": [
|
|
14
|
+
"What you installed, you can run: awesomate_n8n_library now switches a bundle on (behind the same credential check the hub uses, so an empty credential names itself instead of failing silently), runs each template's test recipe, and rolls your install back",
|
|
15
|
+
"The catalog now reads a bundle as installed when its templates are on your n8n, however they got there; a bundle that was already present reports already_present instead of pretending to install",
|
|
16
|
+
"A missing credential's help card now carries the name the template expects, so a Kie key on a generic bearer type is called Kie, not HTTP Bearer Auth"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
3
19
|
{
|
|
4
20
|
"version": "0.31.0",
|
|
5
21
|
"highlights": [
|
|
@@ -93,7 +93,8 @@ the named node actually exists in the workflow before editing anything.
|
|
|
93
93
|
| Node schemas, node search, community templates, node-level validation | `awesomate_n8n_node_docs` |
|
|
94
94
|
| Validate / create draft / update draft / activate / promote / rollback / delete draft | `awesomate_n8n_deploy` |
|
|
95
95
|
| Fire a test payload at an active workflow | `awesomate_n8n_test` |
|
|
96
|
-
| Awesomate's template library: list, detail, install_plan (pauses on a missing credential), install, redeem | `awesomate_n8n_library` |
|
|
96
|
+
| Awesomate's template library: list, detail, install_plan (pauses on a missing credential), install, redeem, installs, activate, test, rollback | `awesomate_n8n_library` |
|
|
97
|
+
| Book a session with the Awesomate team from their credits (session_types, slots, book, mine) | `awesomate_book_session` |
|
|
97
98
|
| Create/alter data tables, write rows | `awesomate_n8n_datatable_write` |
|
|
98
99
|
| Provision a Postgres DB + n8n credential | `awesomate_n8n_provision_pg` |
|
|
99
100
|
| Wire a tested webhook workflow into one of their hosted apps (stores URL + secret on the app; returns the secret ONCE for the workflow's header check) | `awesomate_n8n_attach_to_app` |
|
|
@@ -202,13 +203,31 @@ loop: nothing is designed, the bundle is installed as curated.
|
|
|
202
203
|
`ambiguous` needs their pick (`credential_choices`, type to credential id).
|
|
203
204
|
- `blocked`: read `blockers` verbatim. A plan or consent block has a settings link; a
|
|
204
205
|
connection block means their n8n key needs updating (see 0. First run).
|
|
205
|
-
4. `install`.
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
206
|
+
4. `install`. Read `outcome`: `installed`, `already_present` (nothing changed; say so),
|
|
207
|
+
`failed` (read results[].error). Workflows land INACTIVE.
|
|
208
|
+
5. `activate` (with their OK). A workflow answering `setup_incomplete` has an empty or
|
|
209
|
+
missing credential named in `unresolved`; send them to fill it on their n8n
|
|
210
|
+
(`/home/credentials`), then activate again. Agents are live on install.
|
|
211
|
+
6. `test`. Each template reports `passed`, `failed` (read the execution with
|
|
212
|
+
`awesomate_n8n_executions` debug, fix configuration, re-run) or `untested` (no recipe:
|
|
213
|
+
ask them to try it once). Real side effects run; say so before testing.
|
|
214
|
+
|
|
215
|
+
**The stuck ladder** (a credential they cannot set up, or three failed test-and-fix rounds
|
|
216
|
+
on ONE template): (1) `awesomate_support ask` and the help card's articles; (2) offer a
|
|
217
|
+
session with the Awesomate team through `awesomate_book_session` (session_types first; it
|
|
218
|
+
costs the credits shown; book only on their yes; 404 not_live means bookings are not open
|
|
219
|
+
yet, go to 3); (3) SUGGEST a support ticket. Never send one unasked. If they say yes, ask
|
|
220
|
+
for a sentence in their own words, then `awesomate_support create_ticket` with category
|
|
221
|
+
'Workflow error', subject `<bundle>: <template> fails after install`, and a message that
|
|
222
|
+
carries the bundle and template slugs, the execution id and failing node from the last
|
|
223
|
+
test, what you tried, and their sentence verbatim. Never paste workflow JSON into a ticket.
|
|
224
|
+
7. `rollback` removes what their install created (never a reused workflow), with their OK.
|
|
225
|
+
8. A 403 whose `missingScopes` contains `n8n:deploy` means Essentials. Show the catalog,
|
|
210
226
|
say installing needs Support Plus, link `https://hub.awesomate.ai/billing`, and stop.
|
|
211
227
|
|
|
228
|
+
`installs` lists what is on the instance grouped by bundle; rows marked `installed_by:
|
|
229
|
+
agency` were pushed by Awesomate and are read-only here.
|
|
230
|
+
|
|
212
231
|
`redeem` takes a token Awesomate handed over and installs what it unlocks, no visibility
|
|
213
232
|
check; use it when the member has a token, otherwise use the catalog.
|
|
214
233
|
|