@homespunapps/mcp 1.6.53 → 1.6.55
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/tools.js +13 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
package/dist/tools.js
CHANGED
|
@@ -411,6 +411,7 @@ const appsShape = {
|
|
|
411
411
|
.enum([
|
|
412
412
|
"list",
|
|
413
413
|
"show",
|
|
414
|
+
"audit",
|
|
414
415
|
"update",
|
|
415
416
|
"share_link_rotate",
|
|
416
417
|
"delete",
|
|
@@ -419,7 +420,11 @@ const appsShape = {
|
|
|
419
420
|
"domain_status",
|
|
420
421
|
"domain_remove",
|
|
421
422
|
])
|
|
422
|
-
.describe("list: the caller's owning human's apps. show/update/delete/wake: act on one app (app_id). share_link_rotate: rotate a 'link' app's share token, returning a new share_url (the old link stops working); also generates one if the app has none yet. domain_set/domain_status/domain_remove: manage the app's custom domains (app_id; domain_set also needs domain)."),
|
|
423
|
+
.describe("list: the caller's owning human's apps. show/update/delete/wake: act on one app (app_id). audit: read-only security review of every app the caller owns. share_link_rotate: rotate a 'link' app's share token, returning a new share_url (the old link stops working); also generates one if the app has none yet. domain_set/domain_status/domain_remove: manage the app's custom domains (app_id; domain_set also needs domain)."),
|
|
424
|
+
severity: z
|
|
425
|
+
.enum(["high", "medium", "low"])
|
|
426
|
+
.optional()
|
|
427
|
+
.describe("audit only. Return findings of this severity only. The response's `counts` always describe the whole audit, so filtering never hides that other findings exist."),
|
|
423
428
|
app_id: z
|
|
424
429
|
.string()
|
|
425
430
|
.optional()
|
|
@@ -1312,7 +1317,7 @@ export const TOOLS = [
|
|
|
1312
1317
|
},
|
|
1313
1318
|
{
|
|
1314
1319
|
name: "apps",
|
|
1315
|
-
description: "The v2 app lifecycle apart from creation and redeploy, which deploy_app covers. Actions: list returns the owning human's apps; show returns full detail including manifest, timezone and has_share_token; update changes visibility and timezone, the slug being immutable, and switching to 'link' returns a share_url once; share_link_rotate issues a new share token for a 'link' app, returning a new share_url and revoking the old link, and generates one if the app has none; delete is an idempotent soft-delete; wake wakes a dormant app and is otherwise a no-op that reports the actual status; domain_set binds a custom domain and returns the DNS records the domain owner must publish, where the first domain bound serves the app and every later one redirects to it, which is how apex plus www is configured; domain_status returns the serving domain and its `aliases`, live-refreshed against Cloudflare when that is enabled, with last_error carrying the reason a domain is not activating; domain_remove unbinds one domain, or all of them when no `domain` is given, and is idempotent.",
|
|
1320
|
+
description: "The v2 app lifecycle apart from creation and redeploy, which deploy_app covers. Actions: list returns the owning human's apps; show returns full detail including manifest, timezone and has_share_token; audit is a read-only security review of every app the caller owns, computed from each app's stored manifest, which is what makes it see apps that were deployed once and never redeployed (a deploy-time warning never reaches those). It reports collections whose declared permissions expose them, worst first: severity 'high' means an anonymous visitor can exploit it today, typically a collection that admits \"anyone\" to write with no separate 'update' list, so any visitor can overwrite rows other people created rather than only adding their own. It changes nothing; the fix is a redeploy declaring the missing list, and the right list differs per app, so read the app before proposing one. update changes visibility and timezone, the slug being immutable, and switching to 'link' returns a share_url once; share_link_rotate issues a new share token for a 'link' app, returning a new share_url and revoking the old link, and generates one if the app has none; delete is an idempotent soft-delete; wake wakes a dormant app and is otherwise a no-op that reports the actual status; domain_set binds a custom domain and returns the DNS records the domain owner must publish, where the first domain bound serves the app and every later one redirects to it, which is how apex plus www is configured; domain_status returns the serving domain and its `aliases`, live-refreshed against Cloudflare when that is enabled, with last_error carrying the reason a domain is not activating; domain_remove unbinds one domain, or all of them when no `domain` is given, and is idempotent.",
|
|
1316
1321
|
inputSchema: appsShape,
|
|
1317
1322
|
// Consolidated tool: read actions (list/show) + mutating ones (update/
|
|
1318
1323
|
// delete/wake). Hint reflects delete, the most-privileged action.
|
|
@@ -1350,6 +1355,12 @@ export const TOOLS = [
|
|
|
1350
1355
|
return invalidArgs("show requires `app_id`");
|
|
1351
1356
|
}
|
|
1352
1357
|
return jsonResult(await client.getApp(String(args["app_id"])));
|
|
1358
|
+
case "audit": {
|
|
1359
|
+
const opts = {};
|
|
1360
|
+
if (args["severity"] !== undefined)
|
|
1361
|
+
opts["severity"] = args["severity"];
|
|
1362
|
+
return jsonResult(await client.appAdvisories(opts));
|
|
1363
|
+
}
|
|
1353
1364
|
case "update": {
|
|
1354
1365
|
if (str(args, "app_id") === undefined) {
|
|
1355
1366
|
return invalidArgs("update requires `app_id`");
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.6.
|
|
1
|
+
export declare const VERSION = "1.6.55";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@homespunapps/mcp",
|
|
3
3
|
"mcpName": "dev.homespun/homespun",
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.55",
|
|
5
5
|
"description": "Model Context Protocol (stdio) server for Homespun: lets any MCP client (Claude Desktop, Cursor, …) deploy a multi-user web app with hosting, auth, a shared database and permissions included.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
49
|
-
"@homespunapps/core": "^1.6.
|
|
49
|
+
"@homespunapps/core": "^1.6.55",
|
|
50
50
|
"zod": "^4.4.3"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
package/server.json
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
"name": "dev.homespun/homespun",
|
|
4
4
|
"title": "Homespun",
|
|
5
5
|
"description": "Deploy a multi-user web app from your agent: hosting, auth, database, and permissions.",
|
|
6
|
-
"version": "1.6.
|
|
6
|
+
"version": "1.6.55",
|
|
7
7
|
"websiteUrl": "https://homespun.dev",
|
|
8
8
|
"packages": [
|
|
9
9
|
{
|
|
10
10
|
"registryType": "npm",
|
|
11
11
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
12
12
|
"identifier": "@homespunapps/mcp",
|
|
13
|
-
"version": "1.6.
|
|
13
|
+
"version": "1.6.55",
|
|
14
14
|
"transport": {
|
|
15
15
|
"type": "stdio"
|
|
16
16
|
},
|