@lumibase/mcp-server 0.23.0 → 0.24.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.
Files changed (3) hide show
  1. package/dist/index.cjs +529 -136
  2. package/dist/index.js +529 -136
  3. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -613,6 +613,14 @@ function registerAgentTools(server, client) {
613
613
  { description: "List recent runs of a flow.", inputSchema: { id: idPathSegmentSchema } },
614
614
  async ({ id }) => run(() => client.get(`/flows/${encodePathSegment(id)}/runs`))
615
615
  );
616
+ server.registerTool(
617
+ "get_flow_run",
618
+ {
619
+ description: "Get a single flow run by id (status, per-step results, error) for diagnosis.",
620
+ inputSchema: { id: idPathSegmentSchema, runId: idPathSegmentSchema }
621
+ },
622
+ async ({ id, runId }) => run(() => client.get(`/flows/${encodePathSegment(id)}/runs/${encodePathSegment(runId)}`))
623
+ );
616
624
  }
617
625
 
618
626
  // src/tools/api-keys.ts
@@ -998,6 +1006,22 @@ function registerContentConfigTools(server, client) {
998
1006
  createSchema: presetSchema.shape,
999
1007
  updateSchema: presetSchema.partial().shape
1000
1008
  });
1009
+ server.registerTool(
1010
+ "get_effective_preset",
1011
+ {
1012
+ description: "Resolve the effective default view for a collection (user > role-chain > global precedence).",
1013
+ inputSchema: { collection: import_zod9.z.string().min(1) }
1014
+ },
1015
+ async ({ collection }) => run(() => client.get(`/presets/effective?collection=${encodeURIComponent(collection)}`))
1016
+ );
1017
+ server.registerTool(
1018
+ "list_preset_bookmarks",
1019
+ {
1020
+ description: "List the named preset bookmarks visible to the principal for a collection (with scope).",
1021
+ inputSchema: { collection: import_zod9.z.string().min(1) }
1022
+ },
1023
+ async ({ collection }) => run(() => client.get(`/presets/bookmarks?collection=${encodeURIComponent(collection)}`))
1024
+ );
1001
1025
  registerCrud(server, client, {
1002
1026
  basePath: "/translations",
1003
1027
  resource: "translation",
@@ -1053,18 +1077,134 @@ function registerContentConfigTools(server, client) {
1053
1077
  );
1054
1078
  }
1055
1079
 
1056
- // src/tools/extensions.ts
1080
+ // src/tools/deployments.ts
1057
1081
  var import_zod10 = require("zod");
1082
+ function registerDeploymentTools(server, client) {
1083
+ server.registerTool(
1084
+ "list_deployment_targets",
1085
+ {
1086
+ description: "List configured deployment targets (Vercel/Netlify connections) for the site.",
1087
+ inputSchema: {}
1088
+ },
1089
+ async () => run(() => client.get("/deployments/targets"))
1090
+ );
1091
+ server.registerTool(
1092
+ "list_deployments",
1093
+ {
1094
+ description: "List recent deployments, optionally filtered by target or status.",
1095
+ inputSchema: {
1096
+ targetId: import_zod10.z.string().optional(),
1097
+ status: import_zod10.z.string().optional().describe("queued | building | ready | error | canceled."),
1098
+ limit: import_zod10.z.number().int().min(1).max(200).optional()
1099
+ }
1100
+ },
1101
+ async (args) => run(
1102
+ () => client.get(
1103
+ `/deployments${buildQs(args)}`
1104
+ )
1105
+ )
1106
+ );
1107
+ server.registerTool(
1108
+ "get_deployment",
1109
+ {
1110
+ description: "Get a single deployment\u2019s status and details by id.",
1111
+ inputSchema: { id: idPathSegmentSchema }
1112
+ },
1113
+ async ({ id }) => run(() => client.get(`/deployments/${encodePathSegment(id)}`))
1114
+ );
1115
+ server.registerTool(
1116
+ "get_deployment_logs",
1117
+ {
1118
+ description: "Fetch the build/deploy logs for a deployment (for diagnosing a failed build).",
1119
+ inputSchema: { id: idPathSegmentSchema }
1120
+ },
1121
+ async ({ id }) => run(() => client.get(`/deployments/${encodePathSegment(id)}/logs`))
1122
+ );
1123
+ }
1124
+
1125
+ // src/tools/editorial.ts
1126
+ var import_zod11 = require("zod");
1127
+ function registerEditorialTools(server, client) {
1128
+ server.registerTool(
1129
+ "list_reviews",
1130
+ {
1131
+ description: "List the editorial review queue, optionally filtered by status or assignee.",
1132
+ inputSchema: {
1133
+ status: import_zod11.z.enum(["pending", "approved", "rejected"]).optional(),
1134
+ assignedTo: import_zod11.z.string().max(128).optional()
1135
+ }
1136
+ },
1137
+ async (args) => run(
1138
+ () => client.get(
1139
+ `/editorial/reviews${buildQs(args)}`
1140
+ )
1141
+ )
1142
+ );
1143
+ server.registerTool(
1144
+ "submit_review",
1145
+ {
1146
+ description: "Submit an item for editorial review, optionally assigning a reviewer.",
1147
+ inputSchema: {
1148
+ collection: collectionNameSchema,
1149
+ id: idPathSegmentSchema,
1150
+ assignedTo: import_zod11.z.string().min(1).max(128).nullable().optional()
1151
+ }
1152
+ },
1153
+ async ({ collection, id, assignedTo }) => run(
1154
+ () => client.post(
1155
+ `/editorial/${encodePathSegment(collection)}/${encodePathSegment(id)}/submit-review`,
1156
+ { assignedTo }
1157
+ )
1158
+ )
1159
+ );
1160
+ server.registerTool(
1161
+ "approve_content",
1162
+ {
1163
+ description: "Approve an item in editorial review (a publish-gate decision). Optional reason is audited.",
1164
+ inputSchema: {
1165
+ collection: collectionNameSchema,
1166
+ id: idPathSegmentSchema,
1167
+ reason: import_zod11.z.string().max(2e3).optional()
1168
+ }
1169
+ },
1170
+ async ({ collection, id, reason }) => run(
1171
+ () => client.post(
1172
+ `/editorial/${encodePathSegment(collection)}/${encodePathSegment(id)}/approve`,
1173
+ { reason }
1174
+ )
1175
+ )
1176
+ );
1177
+ server.registerTool(
1178
+ "reject_content",
1179
+ {
1180
+ description: "Reject an item in editorial review. Optional reason is audited.",
1181
+ inputSchema: {
1182
+ collection: collectionNameSchema,
1183
+ id: idPathSegmentSchema,
1184
+ reason: import_zod11.z.string().max(2e3).optional()
1185
+ }
1186
+ },
1187
+ async ({ collection, id, reason }) => run(
1188
+ () => client.post(
1189
+ `/editorial/${encodePathSegment(collection)}/${encodePathSegment(id)}/reject`,
1190
+ { reason }
1191
+ )
1192
+ )
1193
+ );
1194
+ }
1195
+
1196
+ // src/tools/extensions.ts
1197
+ var import_zod12 = require("zod");
1058
1198
  var EXTENSION_TYPES = ["interface", "display", "layout", "panel", "module", "hook", "endpoint"];
1059
- var extensionSchema = import_zod10.z.object({
1060
- key: import_zod10.z.string().regex(/^[a-z0-9_:-]+$/).optional(),
1061
- name: import_zod10.z.string().min(1),
1062
- version: import_zod10.z.string().min(1),
1063
- type: import_zod10.z.enum(EXTENSION_TYPES),
1064
- enabled: import_zod10.z.boolean().optional(),
1065
- bundleUrl: import_zod10.z.string().min(1).describe("https:, http:, or data:text/javascript bundle URL."),
1066
- manifest: import_zod10.z.record(import_zod10.z.string()).optional(),
1067
- capabilities: import_zod10.z.array(import_zod10.z.string()).optional()
1199
+ var extensionSchema = import_zod12.z.object({
1200
+ key: import_zod12.z.string().regex(/^[a-z0-9_:-]+$/).optional(),
1201
+ name: import_zod12.z.string().min(1),
1202
+ version: import_zod12.z.string().min(1),
1203
+ type: import_zod12.z.enum(EXTENSION_TYPES),
1204
+ enabled: import_zod12.z.boolean().optional(),
1205
+ bundleUrl: import_zod12.z.string().min(1).describe("https:, http:, or data:text/javascript bundle URL."),
1206
+ manifest: import_zod12.z.record(import_zod12.z.string()).optional(),
1207
+ capabilities: import_zod12.z.array(import_zod12.z.string()).optional()
1068
1208
  });
1069
1209
  function registerExtensionTools(server, client) {
1070
1210
  server.registerTool(
@@ -1092,7 +1232,7 @@ function registerExtensionTools(server, client) {
1092
1232
  "uninstall_extension",
1093
1233
  {
1094
1234
  description: "Uninstall an extension from the site. DESTRUCTIVE \u2014 pass confirm=true.",
1095
- inputSchema: { id: idPathSegmentSchema, confirm: import_zod10.z.literal(true).describe(confirmDescription) }
1235
+ inputSchema: { id: idPathSegmentSchema, confirm: import_zod12.z.literal(true).describe(confirmDescription) }
1096
1236
  },
1097
1237
  async ({ id }) => run(async () => {
1098
1238
  await client.delete(`/extensions/${encodePathSegment(id)}`);
@@ -1104,12 +1244,12 @@ function registerExtensionTools(server, client) {
1104
1244
  {
1105
1245
  description: "Browse the published extension marketplace.",
1106
1246
  inputSchema: {
1107
- q: import_zod10.z.string().optional(),
1108
- category: import_zod10.z.string().optional(),
1109
- tags: import_zod10.z.string().optional().describe("Comma-separated tags."),
1110
- sort: import_zod10.z.string().optional(),
1111
- page: import_zod10.z.number().int().min(1).optional(),
1112
- perPage: import_zod10.z.number().int().min(1).optional()
1247
+ q: import_zod12.z.string().optional(),
1248
+ category: import_zod12.z.string().optional(),
1249
+ tags: import_zod12.z.string().optional().describe("Comma-separated tags."),
1250
+ sort: import_zod12.z.string().optional(),
1251
+ page: import_zod12.z.number().int().min(1).optional(),
1252
+ perPage: import_zod12.z.number().int().min(1).optional()
1113
1253
  }
1114
1254
  },
1115
1255
  async (args) => run(
@@ -1144,13 +1284,13 @@ function registerExtensionTools(server, client) {
1144
1284
  {
1145
1285
  description: "Publish an extension to the marketplace (signs + marks it published).",
1146
1286
  inputSchema: {
1147
- extensionId: import_zod10.z.string().min(1),
1148
- marketplaceSlug: import_zod10.z.string().min(1),
1149
- publisher: import_zod10.z.record(import_zod10.z.unknown()).optional(),
1150
- signature: import_zod10.z.string().optional(),
1151
- signatureAlg: import_zod10.z.string().optional(),
1152
- publisherKeyId: import_zod10.z.string().optional(),
1153
- bundleSha256: import_zod10.z.string().optional()
1287
+ extensionId: import_zod12.z.string().min(1),
1288
+ marketplaceSlug: import_zod12.z.string().min(1),
1289
+ publisher: import_zod12.z.record(import_zod12.z.unknown()).optional(),
1290
+ signature: import_zod12.z.string().optional(),
1291
+ signatureAlg: import_zod12.z.string().optional(),
1292
+ publisherKeyId: import_zod12.z.string().optional(),
1293
+ bundleSha256: import_zod12.z.string().optional()
1154
1294
  }
1155
1295
  },
1156
1296
  async (input) => run(() => client.post("/marketplace/publish", input))
@@ -1158,39 +1298,39 @@ function registerExtensionTools(server, client) {
1158
1298
  }
1159
1299
 
1160
1300
  // src/tools/fields.ts
1161
- var import_zod11 = require("zod");
1162
- var fieldInputSchema2 = import_zod11.z.object({
1163
- type: import_zod11.z.string().min(1).describe(
1301
+ var import_zod13 = require("zod");
1302
+ var fieldInputSchema2 = import_zod13.z.object({
1303
+ type: import_zod13.z.string().min(1).describe(
1164
1304
  "Storage type: string, text, integer, bigInteger, float, decimal, boolean, date, dateTime, time, json, uuid, csv, hash, alias"
1165
1305
  ),
1166
- interface: import_zod11.z.string().min(1).describe(
1306
+ interface: import_zod13.z.string().min(1).describe(
1167
1307
  "UI widget: input, textarea, select, toggle, datetime, file, image, repeater, relation-m2o, relation-o2m, relation-m2m, code, markdown, wysiwyg, \u2026"
1168
1308
  ),
1169
- display: import_zod11.z.string().optional(),
1170
- label: import_zod11.z.string().optional(),
1171
- note: import_zod11.z.string().optional(),
1172
- defaultValue: import_zod11.z.unknown().optional(),
1173
- nullable: import_zod11.z.boolean().optional().default(true),
1174
- unique: import_zod11.z.boolean().optional().default(false),
1175
- indexed: import_zod11.z.boolean().optional().default(false),
1176
- searchable: import_zod11.z.boolean().optional().default(false),
1177
- length: import_zod11.z.number().int().positive().optional(),
1178
- precision: import_zod11.z.number().int().positive().optional(),
1179
- scale: import_zod11.z.number().int().min(0).optional(),
1180
- special: import_zod11.z.array(import_zod11.z.string()).optional(),
1181
- options: import_zod11.z.record(import_zod11.z.unknown()).optional(),
1182
- displayOptions: import_zod11.z.record(import_zod11.z.unknown()).optional(),
1183
- conditions: import_zod11.z.array(import_zod11.z.unknown()).optional(),
1184
- required: import_zod11.z.boolean().optional().default(false),
1185
- readonly: import_zod11.z.boolean().optional().default(false),
1186
- hidden: import_zod11.z.boolean().optional().default(false),
1187
- encrypted: import_zod11.z.boolean().optional().default(false),
1188
- versioned: import_zod11.z.boolean().optional().default(false),
1189
- width: import_zod11.z.enum(["half", "full", "fill"]).optional().default("full"),
1190
- group: import_zod11.z.string().optional(),
1191
- sortOrder: import_zod11.z.number().int().optional(),
1309
+ display: import_zod13.z.string().optional(),
1310
+ label: import_zod13.z.string().optional(),
1311
+ note: import_zod13.z.string().optional(),
1312
+ defaultValue: import_zod13.z.unknown().optional(),
1313
+ nullable: import_zod13.z.boolean().optional().default(true),
1314
+ unique: import_zod13.z.boolean().optional().default(false),
1315
+ indexed: import_zod13.z.boolean().optional().default(false),
1316
+ searchable: import_zod13.z.boolean().optional().default(false),
1317
+ length: import_zod13.z.number().int().positive().optional(),
1318
+ precision: import_zod13.z.number().int().positive().optional(),
1319
+ scale: import_zod13.z.number().int().min(0).optional(),
1320
+ special: import_zod13.z.array(import_zod13.z.string()).optional(),
1321
+ options: import_zod13.z.record(import_zod13.z.unknown()).optional(),
1322
+ displayOptions: import_zod13.z.record(import_zod13.z.unknown()).optional(),
1323
+ conditions: import_zod13.z.array(import_zod13.z.unknown()).optional(),
1324
+ required: import_zod13.z.boolean().optional().default(false),
1325
+ readonly: import_zod13.z.boolean().optional().default(false),
1326
+ hidden: import_zod13.z.boolean().optional().default(false),
1327
+ encrypted: import_zod13.z.boolean().optional().default(false),
1328
+ versioned: import_zod13.z.boolean().optional().default(false),
1329
+ width: import_zod13.z.enum(["half", "full", "fill"]).optional().default("full"),
1330
+ group: import_zod13.z.string().optional(),
1331
+ sortOrder: import_zod13.z.number().int().optional(),
1192
1332
  renameFrom: fieldNameSchema.optional().describe("Previous field name if this is a rename operation"),
1193
- confirmRiskyChange: import_zod11.z.boolean().optional().describe("Set true to confirm type-change or destructive migration")
1333
+ confirmRiskyChange: import_zod13.z.boolean().optional().describe("Set true to confirm type-change or destructive migration")
1194
1334
  });
1195
1335
  function formatError3(err) {
1196
1336
  if (err instanceof LumiBaseApiError) {
@@ -1245,8 +1385,8 @@ function registerFieldTools(server, client) {
1245
1385
  inputSchema: {
1246
1386
  collection: collectionNameSchema,
1247
1387
  field_name: fieldNameSchema,
1248
- confirm: import_zod11.z.literal(true).describe("Must be true to confirm destructive operation"),
1249
- force: import_zod11.z.boolean().optional().describe("Force deletion even if risky (foreign keys, etc.)")
1388
+ confirm: import_zod13.z.literal(true).describe("Must be true to confirm destructive operation"),
1389
+ force: import_zod13.z.boolean().optional().describe("Force deletion even if risky (foreign keys, etc.)")
1250
1390
  }
1251
1391
  },
1252
1392
  async ({ collection, field_name, force }) => {
@@ -1265,8 +1405,91 @@ function registerFieldTools(server, client) {
1265
1405
  );
1266
1406
  }
1267
1407
 
1408
+ // src/tools/insights.ts
1409
+ var import_zod14 = require("zod");
1410
+ var AGGREGATES = ["count", "sum", "avg", "min", "max"];
1411
+ var dateRangeSchema = import_zod14.z.object({
1412
+ field: import_zod14.z.string().min(1),
1413
+ gte: import_zod14.z.string().optional(),
1414
+ lte: import_zod14.z.string().optional(),
1415
+ preset: import_zod14.z.string().optional()
1416
+ }).describe("Restrict the query to a date window on the given field.");
1417
+ var panelQueryShape = {
1418
+ collection: import_zod14.z.string().min(1),
1419
+ aggregate: import_zod14.z.enum(AGGREGATES).describe("Aggregate function. `field` is required for everything except `count`."),
1420
+ field: import_zod14.z.string().min(1).optional().describe("Field to aggregate (required unless aggregate=count)."),
1421
+ groupBy: import_zod14.z.string().min(1).optional().describe("Field to group rows by (produces a series)."),
1422
+ filter: import_zod14.z.record(import_zod14.z.unknown()).optional().describe('Directus-style condition rule, e.g. { status: { _eq: "published" } }.'),
1423
+ dateRange: dateRangeSchema.optional(),
1424
+ limit: import_zod14.z.number().int().min(1).max(1e3).optional().describe("Max grouped rows to return (default 50).")
1425
+ };
1426
+ function registerInsightsTools(server, client) {
1427
+ server.registerTool(
1428
+ "list_dashboards",
1429
+ {
1430
+ description: "List insight dashboards for the current site.",
1431
+ inputSchema: {}
1432
+ },
1433
+ async () => run(() => client.get("/dashboards"))
1434
+ );
1435
+ server.registerTool(
1436
+ "get_dashboard",
1437
+ {
1438
+ description: "Get a single dashboard by id.",
1439
+ inputSchema: { id: idPathSegmentSchema }
1440
+ },
1441
+ async ({ id }) => run(() => client.get(`/dashboards/${encodePathSegment(id)}`))
1442
+ );
1443
+ server.registerTool(
1444
+ "list_dashboard_panels",
1445
+ {
1446
+ description: "List the panels of a dashboard (their definitions, not the computed data).",
1447
+ inputSchema: { id: idPathSegmentSchema }
1448
+ },
1449
+ async ({ id }) => run(() => client.get(`/dashboards/${encodePathSegment(id)}/panels`))
1450
+ );
1451
+ server.registerTool(
1452
+ "run_panel",
1453
+ {
1454
+ description: "Run a saved panel and return its computed result. Optionally override the panel\u2019s filter or date range for this run only (does not modify the panel).",
1455
+ inputSchema: {
1456
+ dashboardId: idPathSegmentSchema,
1457
+ panelId: idPathSegmentSchema,
1458
+ filter: import_zod14.z.record(import_zod14.z.unknown()).optional().describe("Override the panel filter for this run (Directus-style condition rule)."),
1459
+ dateRange: dateRangeSchema.optional().describe("Override the panel date range for this run.")
1460
+ }
1461
+ },
1462
+ async ({ dashboardId, panelId, filter, dateRange }) => {
1463
+ const override = {};
1464
+ if (filter !== void 0) override["filter"] = filter;
1465
+ if (dateRange !== void 0) override["dateRange"] = dateRange;
1466
+ return run(
1467
+ () => client.post(
1468
+ `/dashboards/${encodePathSegment(dashboardId)}/panels/${encodePathSegment(panelId)}/data`,
1469
+ override
1470
+ )
1471
+ );
1472
+ }
1473
+ );
1474
+ server.registerTool(
1475
+ "query_insights",
1476
+ {
1477
+ description: "Ad-hoc aggregate query over a collection \u2014 no saved panel required. Answers operational questions (counts, sums, averages, breakdowns) directly. Read-only.",
1478
+ inputSchema: {
1479
+ dashboardId: idPathSegmentSchema.describe(
1480
+ "Any dashboard id you can access; the query runs ad-hoc and does not read that dashboard."
1481
+ ),
1482
+ ...panelQueryShape
1483
+ }
1484
+ },
1485
+ async ({ dashboardId, ...query }) => run(
1486
+ () => client.post(`/dashboards/${encodePathSegment(dashboardId)}/panels/preview`, query)
1487
+ )
1488
+ );
1489
+ }
1490
+
1268
1491
  // src/tools/items.ts
1269
- var import_zod12 = require("zod");
1492
+ var import_zod15 = require("zod");
1270
1493
  function formatError4(err) {
1271
1494
  if (err instanceof LumiBaseApiError) {
1272
1495
  return err.errors.map((e) => `[${e.code}] ${e.message}`).join("; ");
@@ -1288,12 +1511,12 @@ function registerItemTools(server, client) {
1288
1511
  description: "List items from a collection with optional filtering, sorting, and pagination.",
1289
1512
  inputSchema: {
1290
1513
  collection: collectionNameSchema,
1291
- limit: import_zod12.z.number().int().min(1).max(200).optional().default(25),
1292
- offset: import_zod12.z.number().int().min(0).optional().default(0),
1293
- status: import_zod12.z.enum(["draft", "published", "archived"]).optional(),
1294
- sort: import_zod12.z.string().optional().describe('Comma-separated field names; prefix with - for descending (e.g. "-created_at")'),
1295
- fields: import_zod12.z.string().optional().describe('Comma-separated field names to return (e.g. "id,title,status")'),
1296
- search: import_zod12.z.string().optional().describe("Full-text search across searchable fields")
1514
+ limit: import_zod15.z.number().int().min(1).max(200).optional().default(25),
1515
+ offset: import_zod15.z.number().int().min(0).optional().default(0),
1516
+ status: import_zod15.z.enum(["draft", "published", "archived"]).optional(),
1517
+ sort: import_zod15.z.string().optional().describe('Comma-separated field names; prefix with - for descending (e.g. "-created_at")'),
1518
+ fields: import_zod15.z.string().optional().describe('Comma-separated field names to return (e.g. "id,title,status")'),
1519
+ search: import_zod15.z.string().optional().describe("Full-text search across searchable fields")
1297
1520
  }
1298
1521
  },
1299
1522
  async ({ collection, ...params }) => {
@@ -1313,7 +1536,7 @@ function registerItemTools(server, client) {
1313
1536
  inputSchema: {
1314
1537
  collection: collectionNameSchema,
1315
1538
  id: idPathSegmentSchema,
1316
- fields: import_zod12.z.string().optional().describe("Comma-separated field names to return")
1539
+ fields: import_zod15.z.string().optional().describe("Comma-separated field names to return")
1317
1540
  }
1318
1541
  },
1319
1542
  async ({ collection, id, fields }) => {
@@ -1334,8 +1557,8 @@ function registerItemTools(server, client) {
1334
1557
  description: "Create a new item in a collection.",
1335
1558
  inputSchema: {
1336
1559
  collection: collectionNameSchema,
1337
- data: import_zod12.z.record(import_zod12.z.unknown()).describe("Field values for the new item"),
1338
- status: import_zod12.z.enum(["draft", "published"]).optional().default("draft")
1560
+ data: import_zod15.z.record(import_zod15.z.unknown()).describe("Field values for the new item"),
1561
+ status: import_zod15.z.enum(["draft", "published"]).optional().default("draft")
1339
1562
  }
1340
1563
  },
1341
1564
  async ({ collection, data: itemData, status }) => {
@@ -1357,7 +1580,7 @@ function registerItemTools(server, client) {
1357
1580
  inputSchema: {
1358
1581
  collection: collectionNameSchema,
1359
1582
  id: idPathSegmentSchema,
1360
- data: import_zod12.z.record(import_zod12.z.unknown()).describe("Fields to update")
1583
+ data: import_zod15.z.record(import_zod15.z.unknown()).describe("Fields to update")
1361
1584
  }
1362
1585
  },
1363
1586
  async ({ collection, id, data: itemData }) => {
@@ -1379,7 +1602,7 @@ function registerItemTools(server, client) {
1379
1602
  inputSchema: {
1380
1603
  collection: collectionNameSchema,
1381
1604
  id: idPathSegmentSchema,
1382
- confirm: import_zod12.z.literal(true).describe("Must be true to confirm deletion")
1605
+ confirm: import_zod15.z.literal(true).describe("Must be true to confirm deletion")
1383
1606
  }
1384
1607
  },
1385
1608
  async ({ collection, id }) => {
@@ -1393,16 +1616,137 @@ function registerItemTools(server, client) {
1393
1616
  );
1394
1617
  }
1395
1618
 
1619
+ // src/tools/releases.ts
1620
+ var import_zod16 = require("zod");
1621
+ var releaseItemSchema = import_zod16.z.object({
1622
+ collection: import_zod16.z.string().min(1),
1623
+ itemId: import_zod16.z.string().min(1),
1624
+ targetStatus: import_zod16.z.enum(["draft", "published", "archived"]).optional(),
1625
+ revisionId: import_zod16.z.string().nullable().optional()
1626
+ });
1627
+ function registerReleaseTools(server, client) {
1628
+ server.registerTool(
1629
+ "list_releases",
1630
+ {
1631
+ description: "List content releases for the site, optionally filtered by status.",
1632
+ inputSchema: {
1633
+ status: import_zod16.z.string().optional(),
1634
+ page: import_zod16.z.number().int().min(1).optional(),
1635
+ limit: import_zod16.z.number().int().min(1).max(200).optional()
1636
+ }
1637
+ },
1638
+ async (args) => run(
1639
+ () => client.get(
1640
+ `/releases${buildQs(args)}`
1641
+ )
1642
+ )
1643
+ );
1644
+ server.registerTool(
1645
+ "get_release",
1646
+ {
1647
+ description: "Get a single content release by id (with its staged items).",
1648
+ inputSchema: { id: idPathSegmentSchema }
1649
+ },
1650
+ async ({ id }) => run(() => client.get(`/releases/${encodePathSegment(id)}`))
1651
+ );
1652
+ server.registerTool(
1653
+ "create_release",
1654
+ {
1655
+ description: "Create a content release. Set publishAt for a scheduled release; omit for a manual one.",
1656
+ inputSchema: {
1657
+ name: import_zod16.z.string().min(1),
1658
+ description: import_zod16.z.string().nullable().optional(),
1659
+ atomicityMode: import_zod16.z.enum(["all_or_nothing", "best_effort"]).optional(),
1660
+ publishAt: import_zod16.z.string().nullable().optional().describe("ISO datetime to auto-publish, or null.")
1661
+ }
1662
+ },
1663
+ async (input) => run(() => client.post("/releases", input))
1664
+ );
1665
+ server.registerTool(
1666
+ "update_release",
1667
+ {
1668
+ description: "Update a release and/or stage/unstage items (partial PATCH).",
1669
+ inputSchema: {
1670
+ id: idPathSegmentSchema,
1671
+ name: import_zod16.z.string().min(1).optional(),
1672
+ description: import_zod16.z.string().nullable().optional(),
1673
+ atomicityMode: import_zod16.z.enum(["all_or_nothing", "best_effort"]).optional(),
1674
+ publishAt: import_zod16.z.string().nullable().optional(),
1675
+ addItems: import_zod16.z.array(releaseItemSchema).optional().describe("Items to stage into the release."),
1676
+ removeItems: import_zod16.z.array(import_zod16.z.object({ collection: import_zod16.z.string(), itemId: import_zod16.z.string() })).optional().describe("Items to unstage.")
1677
+ }
1678
+ },
1679
+ async ({ id, ...patch }) => run(() => client.patch(`/releases/${encodePathSegment(id)}`, patch))
1680
+ );
1681
+ server.registerTool(
1682
+ "publish_release",
1683
+ {
1684
+ description: "Publish a release now (applies every staged item\u2019s target status per the atomicity mode).",
1685
+ inputSchema: { id: idPathSegmentSchema }
1686
+ },
1687
+ async ({ id }) => run(() => client.post(`/releases/${encodePathSegment(id)}/publish`, {}))
1688
+ );
1689
+ server.registerTool(
1690
+ "delete_release",
1691
+ {
1692
+ description: "Delete a content release. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
1693
+ inputSchema: {
1694
+ id: idPathSegmentSchema,
1695
+ confirm: import_zod16.z.literal(true).describe(confirmDescription)
1696
+ }
1697
+ },
1698
+ async ({ id }) => run(async () => {
1699
+ await client.delete(`/releases/${encodePathSegment(id)}`);
1700
+ return okText(`Release "${id}" deleted.`);
1701
+ })
1702
+ );
1703
+ }
1704
+
1705
+ // src/tools/shares.ts
1706
+ var import_zod17 = require("zod");
1707
+ function registerShareTools(server, client) {
1708
+ server.registerTool(
1709
+ "create_share",
1710
+ {
1711
+ description: "Create a scoped public share link for a single item, viewed through a given role.",
1712
+ inputSchema: {
1713
+ collection: import_zod17.z.string().min(1),
1714
+ itemId: import_zod17.z.string().min(1),
1715
+ roleId: import_zod17.z.string().min(1).describe("Role whose permissions the link is viewed through."),
1716
+ password: import_zod17.z.string().min(1).optional(),
1717
+ validFrom: import_zod17.z.string().datetime().nullable().optional(),
1718
+ validUntil: import_zod17.z.string().datetime().nullable().optional(),
1719
+ maxUses: import_zod17.z.number().int().min(1).nullable().optional()
1720
+ }
1721
+ },
1722
+ async (input) => run(() => client.post("/shares", input))
1723
+ );
1724
+ server.registerTool(
1725
+ "revoke_share",
1726
+ {
1727
+ description: "Revoke a share link by id. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
1728
+ inputSchema: {
1729
+ id: idPathSegmentSchema,
1730
+ confirm: import_zod17.z.literal(true).describe(confirmDescription)
1731
+ }
1732
+ },
1733
+ async ({ id }) => run(async () => {
1734
+ await client.post(`/shares/${encodePathSegment(id)}/revoke`, {});
1735
+ return okText(`Share link "${id}" revoked.`);
1736
+ })
1737
+ );
1738
+ }
1739
+
1396
1740
  // src/tools/ops.ts
1397
- var import_zod13 = require("zod");
1741
+ var import_zod18 = require("zod");
1398
1742
  function registerOpsTools(server, client) {
1399
1743
  server.registerTool(
1400
1744
  "list_activity",
1401
1745
  {
1402
1746
  description: "List the site activity / audit trail (most recent first).",
1403
1747
  inputSchema: {
1404
- limit: import_zod13.z.number().int().min(1).max(500).optional(),
1405
- offset: import_zod13.z.number().int().min(0).optional()
1748
+ limit: import_zod18.z.number().int().min(1).max(500).optional(),
1749
+ offset: import_zod18.z.number().int().min(0).optional()
1406
1750
  }
1407
1751
  },
1408
1752
  async (args) => run(
@@ -1411,6 +1755,14 @@ function registerOpsTools(server, client) {
1411
1755
  )
1412
1756
  )
1413
1757
  );
1758
+ server.registerTool(
1759
+ "get_site",
1760
+ {
1761
+ description: "Get the current site\u2019s configuration record (name, domain, settings).",
1762
+ inputSchema: {}
1763
+ },
1764
+ async () => run(() => client.get("/site"))
1765
+ );
1414
1766
  server.registerTool(
1415
1767
  "get_health",
1416
1768
  { description: "Check the CMS health endpoint.", inputSchema: {} },
@@ -1424,7 +1776,7 @@ function registerOpsTools(server, client) {
1424
1776
  }
1425
1777
 
1426
1778
  // src/tools/permissions.ts
1427
- var import_zod14 = require("zod");
1779
+ var import_zod19 = require("zod");
1428
1780
  function registerPermissionTools(server, client) {
1429
1781
  server.registerTool(
1430
1782
  "get_my_permissions",
@@ -1439,9 +1791,9 @@ function registerPermissionTools(server, client) {
1439
1791
  {
1440
1792
  description: "Evaluate whether the current principal may perform an action on a collection (optionally against a specific item), returning { allowed, reason, fields }.",
1441
1793
  inputSchema: {
1442
- collection: import_zod14.z.string().min(1),
1443
- action: import_zod14.z.enum(["create", "read", "update", "delete", "share"]),
1444
- item: import_zod14.z.record(import_zod14.z.unknown()).optional().describe("Item payload to evaluate row-level rules against.")
1794
+ collection: import_zod19.z.string().min(1),
1795
+ action: import_zod19.z.enum(["create", "read", "update", "delete", "share"]),
1796
+ item: import_zod19.z.record(import_zod19.z.unknown()).optional().describe("Item payload to evaluate row-level rules against.")
1445
1797
  }
1446
1798
  },
1447
1799
  async (input) => run(() => client.post("/permissions/check", input))
@@ -1449,21 +1801,21 @@ function registerPermissionTools(server, client) {
1449
1801
  }
1450
1802
 
1451
1803
  // src/tools/relations.ts
1452
- var import_zod15 = require("zod");
1804
+ var import_zod20 = require("zod");
1453
1805
  var relationInputSchema = {
1454
- manyCollection: import_zod15.z.string().min(1).describe('Collection that holds the foreign key (the "many" side).'),
1455
- manyField: import_zod15.z.string().min(1).describe("Field on manyCollection that stores the relation."),
1456
- oneCollection: import_zod15.z.string().min(1).describe('Related collection (the "one" side).'),
1457
- oneField: import_zod15.z.string().nullable().optional(),
1458
- junctionCollection: import_zod15.z.string().nullable().optional().describe("Junction table for m2m relations."),
1459
- type: import_zod15.z.enum(["m2o", "o2m", "m2m", "m2a"]).optional(),
1460
- aliasField: import_zod15.z.string().nullable().optional(),
1461
- relatedDisplayTemplate: import_zod15.z.string().nullable().optional(),
1462
- junctionManyField: import_zod15.z.string().nullable().optional(),
1463
- junctionOneField: import_zod15.z.string().nullable().optional(),
1464
- sortField: import_zod15.z.string().nullable().optional(),
1465
- onDelete: import_zod15.z.enum(["restrict", "cascade", "set null", "no action"]).optional(),
1466
- meta: import_zod15.z.record(import_zod15.z.unknown()).optional()
1806
+ manyCollection: import_zod20.z.string().min(1).describe('Collection that holds the foreign key (the "many" side).'),
1807
+ manyField: import_zod20.z.string().min(1).describe("Field on manyCollection that stores the relation."),
1808
+ oneCollection: import_zod20.z.string().min(1).describe('Related collection (the "one" side).'),
1809
+ oneField: import_zod20.z.string().nullable().optional(),
1810
+ junctionCollection: import_zod20.z.string().nullable().optional().describe("Junction table for m2m relations."),
1811
+ type: import_zod20.z.enum(["m2o", "o2m", "m2m", "m2a"]).optional(),
1812
+ aliasField: import_zod20.z.string().nullable().optional(),
1813
+ relatedDisplayTemplate: import_zod20.z.string().nullable().optional(),
1814
+ junctionManyField: import_zod20.z.string().nullable().optional(),
1815
+ junctionOneField: import_zod20.z.string().nullable().optional(),
1816
+ sortField: import_zod20.z.string().nullable().optional(),
1817
+ onDelete: import_zod20.z.enum(["restrict", "cascade", "set null", "no action"]).optional(),
1818
+ meta: import_zod20.z.record(import_zod20.z.unknown()).optional()
1467
1819
  };
1468
1820
  function registerRelationTools(server, client) {
1469
1821
  server.registerTool(
@@ -1485,7 +1837,7 @@ function registerRelationTools(server, client) {
1485
1837
  description: "Delete a relation by id. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
1486
1838
  inputSchema: {
1487
1839
  id: idPathSegmentSchema,
1488
- confirm: import_zod15.z.literal(true).describe(confirmDescription)
1840
+ confirm: import_zod20.z.literal(true).describe(confirmDescription)
1489
1841
  }
1490
1842
  },
1491
1843
  async ({ id }) => run(async () => {
@@ -1496,19 +1848,19 @@ function registerRelationTools(server, client) {
1496
1848
  }
1497
1849
 
1498
1850
  // src/tools/search-media.ts
1499
- var import_zod16 = require("zod");
1851
+ var import_zod21 = require("zod");
1500
1852
  function registerSearchMediaTools(server, client) {
1501
1853
  server.registerTool(
1502
1854
  "search",
1503
1855
  {
1504
1856
  description: "Full-text search within a collection. Returns ranked hits from the search backend. The `collection` parameter is required.",
1505
1857
  inputSchema: {
1506
- q: import_zod16.z.string().min(1).describe("Query string."),
1507
- collection: import_zod16.z.string().min(1).describe("Collection to search."),
1508
- filter: import_zod16.z.string().optional().describe("Backend filter expression."),
1509
- sort: import_zod16.z.string().optional().describe("Comma-separated sort fields."),
1510
- limit: import_zod16.z.number().int().min(1).max(200).optional(),
1511
- offset: import_zod16.z.number().int().min(0).optional()
1858
+ q: import_zod21.z.string().min(1).describe("Query string."),
1859
+ collection: import_zod21.z.string().min(1).describe("Collection to search."),
1860
+ filter: import_zod21.z.string().optional().describe("Backend filter expression."),
1861
+ sort: import_zod21.z.string().optional().describe("Comma-separated sort fields."),
1862
+ limit: import_zod21.z.number().int().min(1).max(200).optional(),
1863
+ offset: import_zod21.z.number().int().min(0).optional()
1512
1864
  }
1513
1865
  },
1514
1866
  async (args) => run(
@@ -1521,7 +1873,7 @@ function registerSearchMediaTools(server, client) {
1521
1873
  "list_media",
1522
1874
  {
1523
1875
  description: "List media asset keys, optionally filtered by key prefix.",
1524
- inputSchema: { prefix: import_zod16.z.string().optional() }
1876
+ inputSchema: { prefix: import_zod21.z.string().optional() }
1525
1877
  },
1526
1878
  async ({ prefix }) => run(() => client.get(`/media${prefix ? `?prefix=${encodeURIComponent(prefix)}` : ""}`))
1527
1879
  );
@@ -1531,7 +1883,7 @@ function registerSearchMediaTools(server, client) {
1531
1883
  description: "Delete a media asset by key. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
1532
1884
  inputSchema: {
1533
1885
  key: mediaKeySchema.describe("Full storage key of the asset."),
1534
- confirm: import_zod16.z.literal(true).describe(confirmDescription)
1886
+ confirm: import_zod21.z.literal(true).describe(confirmDescription)
1535
1887
  }
1536
1888
  },
1537
1889
  async ({ key }) => run(async () => {
@@ -1539,18 +1891,26 @@ function registerSearchMediaTools(server, client) {
1539
1891
  return okText(`Media asset "${key}" deleted.`);
1540
1892
  })
1541
1893
  );
1894
+ server.registerTool(
1895
+ "list_transform_presets",
1896
+ {
1897
+ description: "List named image-transform presets available for media delivery (key + DSL).",
1898
+ inputSchema: {}
1899
+ },
1900
+ async () => run(() => client.get("/transform-presets"))
1901
+ );
1542
1902
  }
1543
1903
 
1544
1904
  // src/tools/translation-memory.ts
1545
- var import_zod17 = require("zod");
1905
+ var import_zod22 = require("zod");
1546
1906
  function registerTranslationMemoryTools(server, client) {
1547
1907
  server.registerTool(
1548
1908
  "list_tm",
1549
1909
  {
1550
1910
  description: "List translation-memory entries, optionally filtered by source/target language.",
1551
1911
  inputSchema: {
1552
- source: import_zod17.z.string().optional().describe("Source language code."),
1553
- target: import_zod17.z.string().optional().describe("Target language code.")
1912
+ source: import_zod22.z.string().optional().describe("Source language code."),
1913
+ target: import_zod22.z.string().optional().describe("Target language code.")
1554
1914
  }
1555
1915
  },
1556
1916
  async (args) => run(
@@ -1562,14 +1922,14 @@ function registerTranslationMemoryTools(server, client) {
1562
1922
  {
1563
1923
  description: "Add or update a translation-memory entry.",
1564
1924
  inputSchema: {
1565
- sourceLang: import_zod17.z.string().min(2),
1566
- targetLang: import_zod17.z.string().min(2),
1567
- sourceText: import_zod17.z.string().min(1),
1568
- targetText: import_zod17.z.string().min(1),
1569
- context: import_zod17.z.string().optional(),
1570
- quality: import_zod17.z.number().min(0).max(100).optional(),
1571
- source: import_zod17.z.enum(["human", "mt", "imported"]).optional(),
1572
- provider: import_zod17.z.string().optional()
1925
+ sourceLang: import_zod22.z.string().min(2),
1926
+ targetLang: import_zod22.z.string().min(2),
1927
+ sourceText: import_zod22.z.string().min(1),
1928
+ targetText: import_zod22.z.string().min(1),
1929
+ context: import_zod22.z.string().optional(),
1930
+ quality: import_zod22.z.number().min(0).max(100).optional(),
1931
+ source: import_zod22.z.enum(["human", "mt", "imported"]).optional(),
1932
+ provider: import_zod22.z.string().optional()
1573
1933
  }
1574
1934
  },
1575
1935
  async (input) => run(() => client.post("/tm", input))
@@ -1579,10 +1939,10 @@ function registerTranslationMemoryTools(server, client) {
1579
1939
  {
1580
1940
  description: "Fuzzy-match a query string against translation memory for a language pair.",
1581
1941
  inputSchema: {
1582
- query: import_zod17.z.string().min(1),
1583
- sourceLang: import_zod17.z.string().min(2),
1584
- targetLang: import_zod17.z.string().min(2),
1585
- threshold: import_zod17.z.number().min(0).max(100).optional().describe("Minimum match score (default 75).")
1942
+ query: import_zod22.z.string().min(1),
1943
+ sourceLang: import_zod22.z.string().min(2),
1944
+ targetLang: import_zod22.z.string().min(2),
1945
+ threshold: import_zod22.z.number().min(0).max(100).optional().describe("Minimum match score (default 75).")
1586
1946
  }
1587
1947
  },
1588
1948
  async (input) => run(() => client.post("/tm/lookup", input))
@@ -1592,18 +1952,46 @@ function registerTranslationMemoryTools(server, client) {
1592
1952
  {
1593
1953
  description: "Run the full translation pipeline (TM + glossary + MT provider) for a text.",
1594
1954
  inputSchema: {
1595
- text: import_zod17.z.string().min(1),
1596
- from: import_zod17.z.string().min(2),
1597
- to: import_zod17.z.string().min(2),
1598
- provider: import_zod17.z.string().optional()
1955
+ text: import_zod22.z.string().min(1),
1956
+ from: import_zod22.z.string().min(2),
1957
+ to: import_zod22.z.string().min(2),
1958
+ provider: import_zod22.z.string().optional()
1599
1959
  }
1600
1960
  },
1601
1961
  async (input) => run(() => client.post("/tm/translate", input))
1602
1962
  );
1963
+ server.registerTool(
1964
+ "update_tm",
1965
+ {
1966
+ description: "Edit an existing translation-memory entry (partial PATCH).",
1967
+ inputSchema: {
1968
+ id: idPathSegmentSchema,
1969
+ targetText: import_zod22.z.string().min(1).optional(),
1970
+ quality: import_zod22.z.number().min(0).max(100).optional(),
1971
+ context: import_zod22.z.string().nullable().optional(),
1972
+ source: import_zod22.z.enum(["human", "mt", "imported"]).optional()
1973
+ }
1974
+ },
1975
+ async ({ id, ...patch }) => run(() => client.patch(`/tm/${encodePathSegment(id)}`, patch))
1976
+ );
1977
+ server.registerTool(
1978
+ "delete_tm",
1979
+ {
1980
+ description: "Delete a translation-memory entry. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
1981
+ inputSchema: {
1982
+ id: idPathSegmentSchema,
1983
+ confirm: import_zod22.z.literal(true).describe(confirmDescription)
1984
+ }
1985
+ },
1986
+ async ({ id }) => run(async () => {
1987
+ await client.delete(`/tm/${encodePathSegment(id)}`);
1988
+ return okText(`Translation-memory entry "${id}" deleted.`);
1989
+ })
1990
+ );
1603
1991
  }
1604
1992
 
1605
1993
  // src/tools/users-teams.ts
1606
- var import_zod18 = require("zod");
1994
+ var import_zod23 = require("zod");
1607
1995
  function registerUsersTeamsTools(server, client) {
1608
1996
  server.registerTool(
1609
1997
  "list_users",
@@ -1620,8 +2008,8 @@ function registerUsersTeamsTools(server, client) {
1620
2008
  {
1621
2009
  description: "Invite a user to the site by email, optionally assigning a role. Sends an invite email.",
1622
2010
  inputSchema: {
1623
- email: import_zod18.z.string().email(),
1624
- roleId: import_zod18.z.string().optional()
2011
+ email: import_zod23.z.string().email(),
2012
+ roleId: import_zod23.z.string().optional()
1625
2013
  }
1626
2014
  },
1627
2015
  async (input) => run(() => client.post("/users/invite", input))
@@ -1632,8 +2020,8 @@ function registerUsersTeamsTools(server, client) {
1632
2020
  description: "Update a user's site membership (role and/or status).",
1633
2021
  inputSchema: {
1634
2022
  id: idPathSegmentSchema,
1635
- roleId: import_zod18.z.string().nullable().optional(),
1636
- status: import_zod18.z.string().optional().describe("e.g. active, suspended.")
2023
+ roleId: import_zod23.z.string().nullable().optional(),
2024
+ status: import_zod23.z.string().optional().describe("e.g. active, suspended.")
1637
2025
  }
1638
2026
  },
1639
2027
  async ({ id, ...patch }) => run(() => client.patch(`/users/${encodePathSegment(id)}`, patch))
@@ -1642,7 +2030,7 @@ function registerUsersTeamsTools(server, client) {
1642
2030
  "remove_user",
1643
2031
  {
1644
2032
  description: "Remove a user from the site. DESTRUCTIVE \u2014 pass confirm=true.",
1645
- inputSchema: { id: idPathSegmentSchema, confirm: import_zod18.z.literal(true).describe(confirmDescription) }
2033
+ inputSchema: { id: idPathSegmentSchema, confirm: import_zod23.z.literal(true).describe(confirmDescription) }
1646
2034
  },
1647
2035
  async ({ id }) => run(async () => {
1648
2036
  await client.delete(`/users/${encodePathSegment(id)}`);
@@ -1663,7 +2051,7 @@ function registerUsersTeamsTools(server, client) {
1663
2051
  "create_team",
1664
2052
  {
1665
2053
  description: "Create a team.",
1666
- inputSchema: { name: import_zod18.z.string().min(1).max(128), description: import_zod18.z.string().nullable().optional() }
2054
+ inputSchema: { name: import_zod23.z.string().min(1).max(128), description: import_zod23.z.string().nullable().optional() }
1667
2055
  },
1668
2056
  async (input) => run(() => client.post("/teams", input))
1669
2057
  );
@@ -1673,8 +2061,8 @@ function registerUsersTeamsTools(server, client) {
1673
2061
  description: "Update a team (partial PATCH).",
1674
2062
  inputSchema: {
1675
2063
  id: idPathSegmentSchema,
1676
- name: import_zod18.z.string().min(1).max(128).optional(),
1677
- description: import_zod18.z.string().nullable().optional()
2064
+ name: import_zod23.z.string().min(1).max(128).optional(),
2065
+ description: import_zod23.z.string().nullable().optional()
1678
2066
  }
1679
2067
  },
1680
2068
  async ({ id, ...patch }) => run(() => client.patch(`/teams/${encodePathSegment(id)}`, patch))
@@ -1683,7 +2071,7 @@ function registerUsersTeamsTools(server, client) {
1683
2071
  "delete_team",
1684
2072
  {
1685
2073
  description: "Delete a team. DESTRUCTIVE \u2014 pass confirm=true.",
1686
- inputSchema: { id: idPathSegmentSchema, confirm: import_zod18.z.literal(true).describe(confirmDescription) }
2074
+ inputSchema: { id: idPathSegmentSchema, confirm: import_zod23.z.literal(true).describe(confirmDescription) }
1687
2075
  },
1688
2076
  async ({ id }) => run(async () => {
1689
2077
  await client.delete(`/teams/${encodePathSegment(id)}`);
@@ -1710,7 +2098,7 @@ function registerUsersTeamsTools(server, client) {
1710
2098
  inputSchema: {
1711
2099
  id: idPathSegmentSchema.describe("Team id."),
1712
2100
  userId: idPathSegmentSchema,
1713
- confirm: import_zod18.z.literal(true).describe(confirmDescription)
2101
+ confirm: import_zod23.z.literal(true).describe(confirmDescription)
1714
2102
  }
1715
2103
  },
1716
2104
  async ({ id, userId }) => run(async () => {
@@ -1721,15 +2109,15 @@ function registerUsersTeamsTools(server, client) {
1721
2109
  }
1722
2110
 
1723
2111
  // src/tools/webhooks.ts
1724
- var import_zod19 = require("zod");
1725
- var webhookSchema = import_zod19.z.object({
1726
- name: import_zod19.z.string().min(1).max(255),
1727
- url: import_zod19.z.string().url(),
1728
- actions: import_zod19.z.array(import_zod19.z.string()).optional().describe("Item events that trigger the webhook (e.g. create, update, delete)."),
1729
- collections: import_zod19.z.array(import_zod19.z.string()).optional().describe("Collections to filter on (empty = all)."),
1730
- headers: import_zod19.z.record(import_zod19.z.string()).optional(),
1731
- status: import_zod19.z.enum(["active", "inactive"]).optional(),
1732
- secret: import_zod19.z.string().nullable().optional()
2112
+ var import_zod24 = require("zod");
2113
+ var webhookSchema = import_zod24.z.object({
2114
+ name: import_zod24.z.string().min(1).max(255),
2115
+ url: import_zod24.z.string().url(),
2116
+ actions: import_zod24.z.array(import_zod24.z.string()).optional().describe("Item events that trigger the webhook (e.g. create, update, delete)."),
2117
+ collections: import_zod24.z.array(import_zod24.z.string()).optional().describe("Collections to filter on (empty = all)."),
2118
+ headers: import_zod24.z.record(import_zod24.z.string()).optional(),
2119
+ status: import_zod24.z.enum(["active", "inactive"]).optional(),
2120
+ secret: import_zod24.z.string().nullable().optional()
1733
2121
  });
1734
2122
  function registerWebhookTools(server, client) {
1735
2123
  registerCrud(server, client, {
@@ -1752,6 +2140,10 @@ function registerAllTools(server, client) {
1752
2140
  registerContentConfigTools(server, client);
1753
2141
  registerSearchMediaTools(server, client);
1754
2142
  registerTranslationMemoryTools(server, client);
2143
+ registerInsightsTools(server, client);
2144
+ registerEditorialTools(server, client);
2145
+ registerReleaseTools(server, client);
2146
+ registerShareTools(server, client);
1755
2147
  registerPermissionTools(server, client);
1756
2148
  registerAccessTools(server, client);
1757
2149
  registerApiKeyTools(server, client);
@@ -1762,6 +2154,7 @@ function registerAllTools(server, client) {
1762
2154
  registerOpsTools(server, client);
1763
2155
  registerAdminTools(server, client);
1764
2156
  registerExtensionTools(server, client);
2157
+ registerDeploymentTools(server, client);
1765
2158
  }
1766
2159
 
1767
2160
  // src/index.ts