@umbraco-cms/mcp-dev 18.0.1 → 18.1.0-rc

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.
@@ -1186,6 +1186,36 @@ export interface CreateDocumentOutput {
1186
1186
  id: string;
1187
1187
  }
1188
1188
 
1189
+ export interface CreateAndPublishDocumentInput {
1190
+ documentTypeId: string;
1191
+ parentId?: string;
1192
+ name: string;
1193
+ /**
1194
+ * Optional template ID to apply to the document. If omitted, the document type's default template is applied automatically. Provide a value only when you need a specific allowed template other than the default.
1195
+ */
1196
+ templateId?: string;
1197
+ /**
1198
+ * Array of culture codes. If not provided or empty array, will create single variant with null culture.
1199
+ */
1200
+ cultures?: string[];
1201
+ /**
1202
+ * Culture codes to publish immediately after creation. Must contain real culture codes only - wildcards ("*") and nulls are rejected by Umbraco. If omitted, defaults to publishing every culture in the cultures array, or an empty array (which publishes the single invariant variant) when the document type does not vary by culture.
1203
+ */
1204
+ culturesToPublish?: string[];
1205
+ values: {
1206
+ editorAlias: string;
1207
+ culture: string | null;
1208
+ segment: string | null;
1209
+ alias: string;
1210
+ value: unknown;
1211
+ }[];
1212
+ }
1213
+
1214
+ export interface CreateAndPublishDocumentOutput {
1215
+ message: string;
1216
+ id: string;
1217
+ }
1218
+
1189
1219
  export interface PostDocumentPublicAccessInput {
1190
1220
  id: string;
1191
1221
  data: {
@@ -1214,6 +1244,7 @@ export interface DeleteDocumentRecycleBinItemInput {
1214
1244
 
1215
1245
  export interface GetDocumentUrlsInput {
1216
1246
  id?: string[];
1247
+ culture?: string;
1217
1248
  }
1218
1249
 
1219
1250
  export interface GetDocumentUrlsOutput {
@@ -1387,6 +1418,21 @@ export interface SortDocumentInput {
1387
1418
  }[];
1388
1419
  }
1389
1420
 
1421
+ export interface SortDocumentChildrenInput {
1422
+ id: string;
1423
+ data: {
1424
+ culture?: string | null;
1425
+ field: "Name" | "CreateDate" | "UpdateDate";
1426
+ direction: "Ascending" | "Descending";
1427
+ };
1428
+ }
1429
+
1430
+ export interface SortDocumentRootChildrenInput {
1431
+ culture?: string | null;
1432
+ field: "Name" | "CreateDate" | "UpdateDate";
1433
+ direction: "Ascending" | "Descending";
1434
+ }
1435
+
1390
1436
  export interface UnpublishDocumentInput {
1391
1437
  id: string;
1392
1438
  data: {
@@ -1412,6 +1458,31 @@ export interface UpdateDocumentInput {
1412
1458
  name: string;
1413
1459
  }[];
1414
1460
  };
1461
+ /**
1462
+ * Must be set to true to proceed when 'data.values' is an empty array and the document currently has property values. Without this, the call is rejected to prevent accidentally wiping every property value - the exact mistake that motivated this guard. Not needed if the document has no existing values, or if 'data.values' is non-empty.
1463
+ */
1464
+ confirmClearValues?: boolean;
1465
+ }
1466
+
1467
+ export interface UpdateAndPublishDocumentInput {
1468
+ id: string;
1469
+ data: {
1470
+ culturesToPublish: string[];
1471
+ template?: null | {
1472
+ id: string;
1473
+ };
1474
+ values: {
1475
+ culture?: string | null;
1476
+ segment?: string | null;
1477
+ alias: string;
1478
+ value?: unknown;
1479
+ }[];
1480
+ variants: {
1481
+ culture?: string | null;
1482
+ segment?: string | null;
1483
+ name: string;
1484
+ }[];
1485
+ };
1415
1486
  }
1416
1487
 
1417
1488
  export interface UpdateDocumentPropertiesInput {
@@ -1477,6 +1548,35 @@ export interface UpdateDocumentPropertiesOutput {
1477
1548
  };
1478
1549
  }
1479
1550
 
1551
+ export interface UpdateDocumentNameInput {
1552
+ /**
1553
+ * The unique identifier of the document to rename
1554
+ */
1555
+ id: string;
1556
+ /**
1557
+ * The new name for the document (or the document variant matching the given culture)
1558
+ */
1559
+ name: string;
1560
+ /**
1561
+ * Optional culture code identifying which variant to rename (e.g., 'en-US'). Required when the document varies by culture and has more than one variant; omit for invariant documents.
1562
+ */
1563
+ culture?: string | null;
1564
+ }
1565
+
1566
+ export interface UpdateDocumentNameOutput {
1567
+ success: boolean;
1568
+ message: string;
1569
+ previousName: string;
1570
+ name: string;
1571
+ culture: string | null;
1572
+ /**
1573
+ * The updated document object
1574
+ */
1575
+ document: {
1576
+ [k: string]: unknown;
1577
+ };
1578
+ }
1579
+
1480
1580
  export interface UpdateBlockPropertyInput {
1481
1581
  /**
1482
1582
  * The document containing the block
@@ -3251,6 +3351,47 @@ export interface GetElementByIdOutput {
3251
3351
  }[];
3252
3352
  }
3253
3353
 
3354
+ export interface GetElementPublishedInput {
3355
+ id: string;
3356
+ }
3357
+
3358
+ export interface GetElementPublishedOutput {
3359
+ isTrashed: boolean;
3360
+ documentType: {
3361
+ id: string;
3362
+ icon: string;
3363
+ collection?: null | {
3364
+ id: string;
3365
+ };
3366
+ };
3367
+ id: string;
3368
+ flags: {
3369
+ alias: string;
3370
+ }[];
3371
+ values: {
3372
+ editorAlias: string;
3373
+ culture?: string | null;
3374
+ segment?: string | null;
3375
+ alias: string;
3376
+ value?: unknown;
3377
+ }[];
3378
+ variants: {
3379
+ id: string;
3380
+ flags: {
3381
+ alias: string;
3382
+ }[];
3383
+ state: "NotCreated" | "Draft" | "Published" | "PublishedPendingChanges" | "Trashed";
3384
+ publishDate?: string | null;
3385
+ scheduledPublishDate?: string | null;
3386
+ scheduledUnpublishDate?: string | null;
3387
+ createDate: string;
3388
+ updateDate: string;
3389
+ culture?: string | null;
3390
+ segment?: string | null;
3391
+ name: string;
3392
+ }[];
3393
+ }
3394
+
3254
3395
  export interface GetElementConfigurationInput {}
3255
3396
 
3256
3397
  export interface GetElementConfigurationOutput {
@@ -4111,6 +4252,31 @@ export interface CreateElementOutput {
4111
4252
  id: string;
4112
4253
  }
4113
4254
 
4255
+ export interface CreateAndPublishElementInput {
4256
+ documentTypeId: string;
4257
+ parentId?: string;
4258
+ name: string;
4259
+ /**
4260
+ * Array of culture codes. If not provided or empty array, will create single variant with null culture.
4261
+ */
4262
+ cultures?: string[];
4263
+ /**
4264
+ * Culture codes to publish immediately after creation. Must contain real culture codes only - wildcards ("*") and nulls are rejected by Umbraco. If omitted, defaults to publishing every culture in the cultures array, or an empty array (which publishes the single invariant variant) when the element type does not vary by culture.
4265
+ */
4266
+ culturesToPublish?: string[];
4267
+ values: {
4268
+ culture: string | null;
4269
+ segment: string | null;
4270
+ alias: string;
4271
+ value: unknown;
4272
+ }[];
4273
+ }
4274
+
4275
+ export interface CreateAndPublishElementOutput {
4276
+ message: string;
4277
+ id: string;
4278
+ }
4279
+
4114
4280
  export interface CopyElementInput {
4115
4281
  parentId?: string;
4116
4282
  idToCopy: string;
@@ -4163,6 +4329,24 @@ export interface UpdateElementInput {
4163
4329
  };
4164
4330
  }
4165
4331
 
4332
+ export interface UpdateAndPublishElementInput {
4333
+ id: string;
4334
+ data: {
4335
+ culturesToPublish: string[];
4336
+ values: {
4337
+ culture?: string | null;
4338
+ segment?: string | null;
4339
+ alias: string;
4340
+ value?: unknown;
4341
+ }[];
4342
+ variants: {
4343
+ culture?: string | null;
4344
+ segment?: string | null;
4345
+ name: string;
4346
+ }[];
4347
+ };
4348
+ }
4349
+
4166
4350
  export interface UpdateElementPropertiesInput {
4167
4351
  /**
4168
4352
  * The unique identifier of the element to update
@@ -4226,6 +4410,152 @@ export interface UpdateElementPropertiesOutput {
4226
4410
  };
4227
4411
  }
4228
4412
 
4413
+ export interface UpdateElementBlockPropertyInput {
4414
+ /**
4415
+ * The element containing the block
4416
+ */
4417
+ elementId: string;
4418
+ /**
4419
+ * Element property alias containing BlockList/BlockGrid
4420
+ */
4421
+ propertyAlias: string;
4422
+ /**
4423
+ * Optional culture for variant element properties
4424
+ */
4425
+ culture?: string | null;
4426
+ /**
4427
+ * Optional segment for variant element properties
4428
+ */
4429
+ segment?: string | null;
4430
+ /**
4431
+ * Array of block updates
4432
+ *
4433
+ * @minItems 1
4434
+ */
4435
+ updates: [
4436
+ {
4437
+ /**
4438
+ * The unique key (UUID) identifying the block
4439
+ */
4440
+ contentKey: string;
4441
+ /**
4442
+ * 'content' for contentData, 'settings' for settingsData
4443
+ */
4444
+ blockType: "content" | "settings";
4445
+ /**
4446
+ * Properties to update within this block
4447
+ *
4448
+ * @minItems 1
4449
+ */
4450
+ properties: [
4451
+ {
4452
+ /**
4453
+ * The property alias within the block to update
4454
+ */
4455
+ alias: string;
4456
+ /**
4457
+ * The new value for the property
4458
+ */
4459
+ value?: unknown | null;
4460
+ /**
4461
+ * Optional culture code for variant block properties
4462
+ */
4463
+ culture?: string | null;
4464
+ /**
4465
+ * Optional segment identifier for variant block properties
4466
+ */
4467
+ segment?: string | null;
4468
+ },
4469
+ ...{
4470
+ /**
4471
+ * The property alias within the block to update
4472
+ */
4473
+ alias: string;
4474
+ /**
4475
+ * The new value for the property
4476
+ */
4477
+ value?: unknown | null;
4478
+ /**
4479
+ * Optional culture code for variant block properties
4480
+ */
4481
+ culture?: string | null;
4482
+ /**
4483
+ * Optional segment identifier for variant block properties
4484
+ */
4485
+ segment?: string | null;
4486
+ }[]
4487
+ ];
4488
+ },
4489
+ ...{
4490
+ /**
4491
+ * The unique key (UUID) identifying the block
4492
+ */
4493
+ contentKey: string;
4494
+ /**
4495
+ * 'content' for contentData, 'settings' for settingsData
4496
+ */
4497
+ blockType: "content" | "settings";
4498
+ /**
4499
+ * Properties to update within this block
4500
+ *
4501
+ * @minItems 1
4502
+ */
4503
+ properties: [
4504
+ {
4505
+ /**
4506
+ * The property alias within the block to update
4507
+ */
4508
+ alias: string;
4509
+ /**
4510
+ * The new value for the property
4511
+ */
4512
+ value?: unknown | null;
4513
+ /**
4514
+ * Optional culture code for variant block properties
4515
+ */
4516
+ culture?: string | null;
4517
+ /**
4518
+ * Optional segment identifier for variant block properties
4519
+ */
4520
+ segment?: string | null;
4521
+ },
4522
+ ...{
4523
+ /**
4524
+ * The property alias within the block to update
4525
+ */
4526
+ alias: string;
4527
+ /**
4528
+ * The new value for the property
4529
+ */
4530
+ value?: unknown | null;
4531
+ /**
4532
+ * Optional culture code for variant block properties
4533
+ */
4534
+ culture?: string | null;
4535
+ /**
4536
+ * Optional segment identifier for variant block properties
4537
+ */
4538
+ segment?: string | null;
4539
+ }[]
4540
+ ];
4541
+ }[]
4542
+ ];
4543
+ }
4544
+
4545
+ export interface UpdateElementBlockPropertyOutput {
4546
+ success: boolean;
4547
+ message: string;
4548
+ results: {
4549
+ success: boolean;
4550
+ contentKey: string;
4551
+ message: string;
4552
+ updatedCount?: number;
4553
+ addedCount?: number;
4554
+ warnings?: string[];
4555
+ errors?: string[];
4556
+ }[];
4557
+ }
4558
+
4229
4559
  export interface MoveElementInput {
4230
4560
  id: string;
4231
4561
  data: {
@@ -4748,6 +5078,7 @@ export interface GetManifestManifestOutput {
4748
5078
  name: string;
4749
5079
  id?: string | null;
4750
5080
  version?: string | null;
5081
+ cacheBuster?: string | null;
4751
5082
  extensions: unknown[];
4752
5083
  }[];
4753
5084
  }
@@ -4759,6 +5090,7 @@ export interface GetManifestManifestPrivateOutput {
4759
5090
  name: string;
4760
5091
  id?: string | null;
4761
5092
  version?: string | null;
5093
+ cacheBuster?: string | null;
4762
5094
  extensions: unknown[];
4763
5095
  }[];
4764
5096
  }
@@ -4770,6 +5102,7 @@ export interface GetManifestManifestPublicOutput {
4770
5102
  name: string;
4771
5103
  id?: string | null;
4772
5104
  version?: string | null;
5105
+ cacheBuster?: string | null;
4773
5106
  extensions: unknown[];
4774
5107
  }[];
4775
5108
  }
@@ -13410,6 +13743,19 @@ export interface SortMediaInput {
13410
13743
  }[];
13411
13744
  }
13412
13745
 
13746
+ export interface SortMediaChildrenInput {
13747
+ id: string;
13748
+ data: {
13749
+ field: "Name" | "CreateDate" | "UpdateDate";
13750
+ direction: "Ascending" | "Descending";
13751
+ };
13752
+ }
13753
+
13754
+ export interface SortMediaRootChildrenInput {
13755
+ field: "Name" | "CreateDate" | "UpdateDate";
13756
+ direction: "Ascending" | "Descending";
13757
+ }
13758
+
13413
13759
  export interface GetMediaByIdArrayInput {
13414
13760
  id?: string[];
13415
13761
  }
@@ -15890,10 +16236,6 @@ export interface GetRedirectStatusOutput {
15890
16236
  userIsAdmin: boolean;
15891
16237
  }
15892
16238
 
15893
- export interface UpdateRedirectStatusInput {
15894
- status?: "Enabled" | "Disabled";
15895
- }
15896
-
15897
16239
  export interface GetRelationByRelationTypeIdInput {
15898
16240
  id: string;
15899
16241
  /**
@@ -17143,6 +17485,46 @@ export interface GetUserByIdCalculateStartNodesOutput {
17143
17485
  hasElementRootAccess: boolean;
17144
17486
  }
17145
17487
 
17488
+ export interface GetUserBatchInput {
17489
+ id?: string[];
17490
+ }
17491
+
17492
+ export interface GetUserBatchOutput {
17493
+ total: number;
17494
+ items: {
17495
+ id: string;
17496
+ languageIsoCode?: string | null;
17497
+ documentStartNodeIds: {
17498
+ id: string;
17499
+ }[];
17500
+ hasDocumentRootAccess: boolean;
17501
+ mediaStartNodeIds: {
17502
+ id: string;
17503
+ }[];
17504
+ hasMediaRootAccess: boolean;
17505
+ elementStartNodeIds: {
17506
+ id: string;
17507
+ }[];
17508
+ hasElementRootAccess: boolean;
17509
+ avatarUrls: string[];
17510
+ state: "Active" | "Disabled" | "LockedOut" | "Invited" | "Inactive" | "All";
17511
+ failedLoginAttempts: number;
17512
+ createDate: string;
17513
+ updateDate: string;
17514
+ lastLoginDate?: string | null;
17515
+ lastLockoutDate?: string | null;
17516
+ lastPasswordChangeDate?: string | null;
17517
+ isAdmin: boolean;
17518
+ kind: "Default" | "Api";
17519
+ email: string;
17520
+ userName: string;
17521
+ name: string;
17522
+ userGroupIds: {
17523
+ id: string;
17524
+ }[];
17525
+ }[];
17526
+ }
17527
+
17146
17528
  export interface UploadUserAvatarByIdInput {
17147
17529
  id: string;
17148
17530
  file: {
@@ -17788,6 +18170,7 @@ export interface CmsTools {
17788
18170
  "get-document-type-schema": { input: GetDocumentTypeSchemaInput; output: GetDocumentTypeSchemaOutput };
17789
18171
  "copy-document": { input: CopyDocumentInput; output: CopyDocumentOutput };
17790
18172
  "create-document": { input: CreateDocumentInput; output: CreateDocumentOutput };
18173
+ "create-and-publish-document": { input: CreateAndPublishDocumentInput; output: CreateAndPublishDocumentOutput };
17791
18174
  "post-document-public-access": { input: PostDocumentPublicAccessInput; output: unknown };
17792
18175
  "delete-document": { input: DeleteDocumentInput; output: unknown };
17793
18176
  "delete-document-public-access": { input: DeleteDocumentPublicAccessInput; output: unknown };
@@ -17802,9 +18185,13 @@ export interface CmsTools {
17802
18185
  "publish-document": { input: PublishDocumentInput; output: unknown };
17803
18186
  "publish-document-with-descendants": { input: PublishDocumentWithDescendantsInput; output: unknown };
17804
18187
  "sort-document": { input: SortDocumentInput; output: unknown };
18188
+ "sort-document-children": { input: SortDocumentChildrenInput; output: unknown };
18189
+ "sort-document-root-children": { input: SortDocumentRootChildrenInput; output: unknown };
17805
18190
  "unpublish-document": { input: UnpublishDocumentInput; output: unknown };
17806
18191
  "update-document": { input: UpdateDocumentInput; output: unknown };
18192
+ "update-and-publish-document": { input: UpdateAndPublishDocumentInput; output: unknown };
17807
18193
  "update-document-properties": { input: UpdateDocumentPropertiesInput; output: UpdateDocumentPropertiesOutput };
18194
+ "update-document-name": { input: UpdateDocumentNameInput; output: UpdateDocumentNameOutput };
17808
18195
  "update-block-property": { input: UpdateBlockPropertyInput; output: UpdateBlockPropertyOutput };
17809
18196
  "put-document-domains": { input: PutDocumentDomainsInput; output: unknown };
17810
18197
  "put-document-notifications": { input: PutDocumentNotificationsInput; output: unknown };
@@ -17862,6 +18249,7 @@ export interface CmsTools {
17862
18249
  "update-document-version-prevent-cleanup": { input: UpdateDocumentVersionPreventCleanupInput; output: unknown };
17863
18250
  "create-document-version-rollback": { input: CreateDocumentVersionRollbackInput; output: unknown };
17864
18251
  "get-element-by-id": { input: GetElementByIdInput; output: GetElementByIdOutput };
18252
+ "get-element-published": { input: GetElementPublishedInput; output: GetElementPublishedOutput };
17865
18253
  "get-element-configuration": { input: GetElementConfigurationInput; output: GetElementConfigurationOutput };
17866
18254
  "get-element-audit-log": { input: GetElementAuditLogInput; output: GetElementAuditLogOutput };
17867
18255
  "get-element-are-referenced": { input: GetElementAreReferencedInput; output: GetElementAreReferencedOutput };
@@ -17883,11 +18271,14 @@ export interface CmsTools {
17883
18271
  "get-recycle-bin-element-children": { input: GetRecycleBinElementChildrenInput; output: GetRecycleBinElementChildrenOutput };
17884
18272
  "get-recycle-bin-element-siblings": { input: GetRecycleBinElementSiblingsInput; output: GetRecycleBinElementSiblingsOutput };
17885
18273
  "create-element": { input: CreateElementInput; output: CreateElementOutput };
18274
+ "create-and-publish-element": { input: CreateAndPublishElementInput; output: CreateAndPublishElementOutput };
17886
18275
  "copy-element": { input: CopyElementInput; output: CopyElementOutput };
17887
18276
  "validate-element": { input: ValidateElementInput; output: unknown };
17888
18277
  "rollback-element-version": { input: RollbackElementVersionInput; output: unknown };
17889
18278
  "update-element": { input: UpdateElementInput; output: unknown };
18279
+ "update-and-publish-element": { input: UpdateAndPublishElementInput; output: unknown };
17890
18280
  "update-element-properties": { input: UpdateElementPropertiesInput; output: UpdateElementPropertiesOutput };
18281
+ "update-element-block-property": { input: UpdateElementBlockPropertyInput; output: UpdateElementBlockPropertyOutput };
17891
18282
  "move-element": { input: MoveElementInput; output: unknown };
17892
18283
  "move-element-to-recycle-bin": { input: MoveElementToRecycleBinInput; output: unknown };
17893
18284
  "publish-element": { input: PublishElementInput; output: unknown };
@@ -17950,6 +18341,8 @@ export interface CmsTools {
17950
18341
  "validate-media": { input: ValidateMediaInput; output: unknown };
17951
18342
  "validate-media-update": { input: ValidateMediaUpdateInput; output: unknown };
17952
18343
  "sort-media": { input: SortMediaInput; output: unknown };
18344
+ "sort-media-children": { input: SortMediaChildrenInput; output: unknown };
18345
+ "sort-media-root-children": { input: SortMediaRootChildrenInput; output: unknown };
17953
18346
  "get-media-by-id-array": { input: GetMediaByIdArrayInput; output: GetMediaByIdArrayOutput };
17954
18347
  "move-media": { input: MoveMediaInput; output: unknown };
17955
18348
  "get-media-audit-log": { input: GetMediaAuditLogInput; output: GetMediaAuditLogOutput };
@@ -18051,7 +18444,6 @@ export interface CmsTools {
18051
18444
  "get-redirect-by-id": { input: GetRedirectByIdInput; output: GetRedirectByIdOutput };
18052
18445
  "delete-redirect": { input: DeleteRedirectInput; output: unknown };
18053
18446
  "get-redirect-status": { input: GetRedirectStatusInput; output: GetRedirectStatusOutput };
18054
- "update-redirect-status": { input: UpdateRedirectStatusInput; output: unknown };
18055
18447
  "get-relation-by-relation-type-id": { input: GetRelationByRelationTypeIdInput; output: GetRelationByRelationTypeIdOutput };
18056
18448
  "get-relation-type": { input: GetRelationTypeInput; output: GetRelationTypeOutput };
18057
18449
  "get-relation-type-by-id": { input: GetRelationTypeByIdInput; output: GetRelationTypeByIdOutput };
@@ -18124,6 +18516,7 @@ export interface CmsTools {
18124
18516
  "get-item-user": { input: GetItemUserInput; output: GetItemUserOutput };
18125
18517
  "get-user-configuration": { input: GetUserConfigurationInput; output: GetUserConfigurationOutput };
18126
18518
  "get-user-by-id-calculate-start-nodes": { input: GetUserByIdCalculateStartNodesInput; output: GetUserByIdCalculateStartNodesOutput };
18519
+ "get-user-batch": { input: GetUserBatchInput; output: GetUserBatchOutput };
18127
18520
  "upload-user-avatar-by-id": { input: UploadUserAvatarByIdInput; output: unknown };
18128
18521
  "delete-user-avatar-by-id": { input: DeleteUserAvatarByIdInput; output: unknown };
18129
18522
  "create-user-data": { input: CreateUserDataInput; output: CreateUserDataOutput };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umbraco-cms/mcp-dev",
3
- "version": "18.0.1",
3
+ "version": "18.1.0-rc",
4
4
  "type": "module",
5
5
  "description": "A model context protocol (MCP) server for Umbraco CMS",
6
6
  "main": "dist/index.js",
@@ -25,8 +25,11 @@
25
25
  "compile": "tsc --noEmit",
26
26
  "watch": "tsup --config tsup.config.ts --watch",
27
27
  "generate": "orval --config orval.config.ts",
28
- "inspect": "npx @modelcontextprotocol/inspector node dist/index.js",
28
+ "inspect": "npx @modelcontextprotocol/inspector@1 node dist/index.js",
29
29
  "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
30
+ "test:all": "npm run build && npm run test && npm run test:evals",
31
+ "test:one": "node --experimental-vm-modules node_modules/jest/bin/jest.js --runInBand --forceExit",
32
+ "test:changed": "node scripts/test-changed.mjs",
30
33
  "test:rerun-failures": "grep '^FAIL ' test-failures.log 2>/dev/null | sed 's/^FAIL //' | tr '\\n' ' ' | xargs -r node --experimental-vm-modules node_modules/jest/bin/jest.js --no-coverage || echo 'No failures to rerun (test-failures.log not found or empty)'",
31
34
  "test:evals": "node --experimental-vm-modules node_modules/jest/bin/jest.js --no-coverage --config tests/evals/jest.config.ts",
32
35
  "patch-publish-alpha": "npm version prerelease --preid=alpha && npm publish --tag alpha --access public",
@@ -36,6 +39,7 @@
36
39
  "test:e2e": "npx playwright test --config tests/cms-hosted-e2e/playwright.config.ts",
37
40
  "umbraco:bootstrap": "bash scripts/bootstrap-demo-site.sh",
38
41
  "umbraco:start": "bash scripts/bootstrap-demo-site.sh && dotnet run --project demo-site",
42
+ "start:umbraco": "npm run umbraco:start",
39
43
  "umbraco:stop": "lsof -ti :44391 | xargs kill 2>/dev/null; lsof -ti :56472 | xargs kill 2>/dev/null",
40
44
  "dev:hosted": "wrangler dev"
41
45
  },
@@ -68,8 +72,8 @@
68
72
  "@modelcontextprotocol/sdk": "^1.28.0",
69
73
  "@types/uuid": "^10.0.0",
70
74
  "@types/yargs": "^17.0.33",
71
- "@umbraco-cms/mcp-hosted": "^1.0.0-beta.31",
72
- "@umbraco-cms/mcp-server-sdk": "^1.0.0-beta.31",
75
+ "@umbraco-cms/mcp-hosted": "^1.0.0-beta.35",
76
+ "@umbraco-cms/mcp-server-sdk": "^1.0.0-beta.35",
73
77
  "dotenv": "^16.5.0",
74
78
  "form-data": "^4.0.4",
75
79
  "mime-types": "^3.0.1",
@@ -82,6 +86,7 @@
82
86
  "@anthropic-ai/claude-agent-sdk": "0.2.39",
83
87
  "@cloudflare/workers-oauth-provider": "^0.2.3",
84
88
  "@jest/types": "^29.6.3",
89
+ "@modelcontextprotocol/inspector": "^1.0.1",
85
90
  "@playwright/test": "^1.58.2",
86
91
  "@types/dotenv": "^6.1.1",
87
92
  "@types/jest": "^29.5.14",