@awesomate/hosting-mcp 0.31.0 → 0.32.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 CHANGED
@@ -41129,19 +41129,21 @@ server.registerTool(
41129
41129
  "awesomate_n8n_library",
41130
41130
  {
41131
41131
  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+). Workflows land INACTIVE; activation, testing and rollback of installed bundles arrive in the next release. 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.",
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+). 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
41133
  inputSchema: {
41134
- action: external_exports.enum(["list", "detail", "install_plan", "install", "redeem"]),
41134
+ action: external_exports.enum(["list", "detail", "install_plan", "install", "redeem", "installs", "activate", "test", "rollback"]),
41135
41135
  slug: external_exports.string().optional().describe("Bundle slug from list (detail, install_plan, install)"),
41136
41136
  token: external_exports.string().optional().describe("redeem only: the redeem token Awesomate handed over"),
41137
41137
  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)")
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
+ active: external_exports.boolean().optional().describe("activate only: false switches the bundle off (default true)")
41139
41140
  }
41140
41141
  },
41141
- async ({ action, slug, token, proceed_without, credential_choices }) => {
41142
+ async ({ action, slug, token, proceed_without, credential_choices, active }) => {
41142
41143
  try {
41143
41144
  const cfg = requireConfig();
41144
41145
  if (action === "list") return textResult(await hubGet(cfg, "/api/my-n8n/library"));
41146
+ if (action === "installs") return textResult(await hubGet(cfg, "/api/my-n8n/library/installs"));
41145
41147
  if (action === "redeem") {
41146
41148
  if (!token) return errorResult(new Error("token is required for redeem"));
41147
41149
  return textResult(await hubPost(cfg, "/api/my-n8n/library/redeem", { token }));
@@ -41150,6 +41152,9 @@ server.registerTool(
41150
41152
  const base = `/api/my-n8n/library/bundles/${encodeURIComponent(slug)}`;
41151
41153
  if (action === "detail") return textResult(await hubGet(cfg, base));
41152
41154
  if (action === "install_plan") return textResult(await hubPost(cfg, `${base}/install-plan`, {}));
41155
+ if (action === "activate") return textResult(await hubPost(cfg, `${base}/activate`, { active: active !== false }));
41156
+ if (action === "test") return textResult(await hubPost(cfg, `${base}/test`, {}));
41157
+ if (action === "rollback") return textResult(await hubPost(cfg, `${base}/rollback`, {}));
41153
41158
  return textResult(
41154
41159
  await hubPost(cfg, `${base}/install`, { proceed_without: proceed_without ?? [], credential_choices: credential_choices ?? {} })
41155
41160
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awesomate/hosting-mcp",
3
- "version": "0.31.0",
3
+ "version": "0.32.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",
@@ -1,5 +1,13 @@
1
1
  {
2
2
  "versions": [
3
+ {
4
+ "version": "0.32.0",
5
+ "highlights": [
6
+ "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",
7
+ "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",
8
+ "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"
9
+ ]
10
+ },
3
11
  {
4
12
  "version": "0.31.0",
5
13
  "highlights": [
@@ -93,7 +93,7 @@ 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
97
  | Create/alter data tables, write rows | `awesomate_n8n_datatable_write` |
98
98
  | Provision a Postgres DB + n8n credential | `awesomate_n8n_provision_pg` |
99
99
  | 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 +202,22 @@ loop: nothing is designed, the bundle is installed as curated.
202
202
  `ambiguous` needs their pick (`credential_choices`, type to credential id).
203
203
  - `blocked`: read `blockers` verbatim. A plan or consent block has a settings link; a
204
204
  connection block means their n8n key needs updating (see 0. First run).
205
- 4. `install`. Workflows land INACTIVE. Say so, and say that switching on, testing and
206
- rolling back from here arrive in the next release; until then the hub's Library page
207
- (`/templates`) does it. Do not try `awesomate_n8n_deploy activate` on them: installed
208
- templates are refused there as agency-managed.
209
- 5. A 403 whose `missingScopes` contains `n8n:deploy` means Essentials. Show the catalog,
205
+ 4. `install`. Read `outcome`: `installed`, `already_present` (nothing changed; say so),
206
+ `failed` (read results[].error). Workflows land INACTIVE.
207
+ 5. `activate` (with their OK). A workflow answering `setup_incomplete` has an empty or
208
+ missing credential named in `unresolved`; send them to fill it on their n8n
209
+ (`/home/credentials`), then activate again. Agents are live on install.
210
+ 6. `test`. Each template reports `passed`, `failed` (read the execution with
211
+ `awesomate_n8n_executions` debug, fix configuration, re-run) or `untested` (no recipe:
212
+ ask them to try it once). Real side effects run; say so before testing. After THREE
213
+ failed rounds on one template, stop and SUGGEST a support ticket; never send one unasked.
214
+ 7. `rollback` removes what their install created (never a reused workflow), with their OK.
215
+ 8. A 403 whose `missingScopes` contains `n8n:deploy` means Essentials. Show the catalog,
210
216
  say installing needs Support Plus, link `https://hub.awesomate.ai/billing`, and stop.
211
217
 
218
+ `installs` lists what is on the instance grouped by bundle; rows marked `installed_by:
219
+ agency` were pushed by Awesomate and are read-only here.
220
+
212
221
  `redeem` takes a token Awesomate handed over and installs what it unlocks, no visibility
213
222
  check; use it when the member has a token, otherwise use the catalog.
214
223