@antonytm/mcp-sitecore-server 0.11.0 → 0.12.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 (157) hide show
  1. package/README.md +3 -1
  2. package/dist/bundle.js +225 -131
  3. package/dist/register.js +49 -30
  4. package/dist/register.js.map +1 -1
  5. package/dist/tools/item-service/{composite → logic/composite}/get-item-descendants.d.ts +1 -1
  6. package/dist/tools/item-service/{composite → logic/composite}/get-item-descendants.js +2 -2
  7. package/dist/tools/item-service/logic/composite/get-item-descendants.js.map +1 -0
  8. package/dist/tools/item-service/{composite → logic/composite}/get-languages.d.ts +1 -1
  9. package/dist/tools/item-service/{composite → logic/composite}/get-languages.js +2 -2
  10. package/dist/tools/item-service/logic/composite/get-languages.js.map +1 -0
  11. package/dist/tools/item-service/{simple → logic/simple}/create-item.d.ts +1 -1
  12. package/dist/tools/item-service/{simple → logic/simple}/create-item.js +2 -2
  13. package/dist/tools/item-service/logic/simple/create-item.js.map +1 -0
  14. package/dist/tools/item-service/{simple → logic/simple}/delete-item.d.ts +1 -1
  15. package/dist/tools/item-service/{simple → logic/simple}/delete-item.js +2 -2
  16. package/dist/tools/item-service/logic/simple/delete-item.js.map +1 -0
  17. package/dist/tools/item-service/{simple → logic/simple}/edit-item.js +1 -1
  18. package/dist/tools/item-service/logic/simple/edit-item.js.map +1 -0
  19. package/dist/tools/item-service/{simple → logic/simple}/get-item-by-path.d.ts +1 -1
  20. package/dist/tools/item-service/{simple → logic/simple}/get-item-by-path.js +2 -2
  21. package/dist/tools/item-service/logic/simple/get-item-by-path.js.map +1 -0
  22. package/dist/tools/item-service/{simple → logic/simple}/get-item-children.d.ts +1 -1
  23. package/dist/tools/item-service/{simple → logic/simple}/get-item-children.js +2 -2
  24. package/dist/tools/item-service/logic/simple/get-item-children.js.map +1 -0
  25. package/dist/tools/item-service/{simple → logic/simple}/get-item.d.ts +1 -1
  26. package/dist/tools/item-service/{simple → logic/simple}/get-item.js +2 -2
  27. package/dist/tools/item-service/logic/simple/get-item.js.map +1 -0
  28. package/dist/tools/item-service/{simple → logic/simple}/run-stored-query.d.ts +1 -1
  29. package/dist/tools/item-service/{simple → logic/simple}/run-stored-query.js +2 -2
  30. package/dist/tools/item-service/logic/simple/run-stored-query.js.map +1 -0
  31. package/dist/tools/item-service/{simple → logic/simple}/run-stored-search.d.ts +1 -1
  32. package/dist/tools/item-service/{simple → logic/simple}/run-stored-search.js +2 -2
  33. package/dist/tools/item-service/logic/simple/run-stored-search.js.map +1 -0
  34. package/dist/tools/item-service/{simple → logic/simple}/search-items.d.ts +1 -1
  35. package/dist/tools/item-service/{simple → logic/simple}/search-items.js +2 -2
  36. package/dist/tools/item-service/logic/simple/search-items.js.map +1 -0
  37. package/dist/tools/item-service/{tool-registrations/composite/get-item-descendants.registration.js → tools/composite/get-item-descendants.js} +2 -2
  38. package/dist/tools/item-service/tools/composite/get-item-descendants.js.map +1 -0
  39. package/dist/tools/item-service/{tool-registrations/composite/get-languages.registration.js → tools/composite/get-languages.js} +2 -2
  40. package/dist/tools/item-service/tools/composite/get-languages.js.map +1 -0
  41. package/dist/tools/item-service/{tool-registrations/simple/create-item.registration.js → tools/simple/create-item.js} +2 -2
  42. package/dist/tools/item-service/tools/simple/create-item.js.map +1 -0
  43. package/dist/tools/item-service/{tool-registrations/simple/delete-item.registration.js → tools/simple/delete-item.js} +2 -2
  44. package/dist/tools/item-service/tools/simple/delete-item.js.map +1 -0
  45. package/dist/tools/item-service/{tool-registrations/simple/edit-item.registration.js → tools/simple/edit-item.js} +2 -2
  46. package/dist/tools/item-service/tools/simple/edit-item.js.map +1 -0
  47. package/dist/tools/item-service/{tool-registrations/simple/get-item-by-path.registration.js → tools/simple/get-item-by-path.js} +2 -2
  48. package/dist/tools/item-service/tools/simple/get-item-by-path.js.map +1 -0
  49. package/dist/tools/item-service/{tool-registrations/simple/get-item-children.registration.js → tools/simple/get-item-children.js} +2 -2
  50. package/dist/tools/item-service/tools/simple/get-item-children.js.map +1 -0
  51. package/dist/tools/item-service/{tool-registrations/simple/get-item.registration.js → tools/simple/get-item.js} +2 -2
  52. package/dist/tools/item-service/tools/simple/get-item.js.map +1 -0
  53. package/dist/tools/item-service/{tool-registrations/simple/run-stored-query.registration.js → tools/simple/run-stored-query.js} +2 -2
  54. package/dist/tools/item-service/tools/simple/run-stored-query.js.map +1 -0
  55. package/dist/tools/item-service/{tool-registrations/simple/run-stored-search.registration.js → tools/simple/run-stored-search.js} +2 -2
  56. package/dist/tools/item-service/tools/simple/run-stored-search.js.map +1 -0
  57. package/dist/tools/item-service/{tool-registrations/simple/search-items.registration.js → tools/simple/search-items.js} +2 -2
  58. package/dist/tools/item-service/tools/simple/search-items.js.map +1 -0
  59. package/dist/tools/powershell/simple/indexing/find-item.js +26 -1
  60. package/dist/tools/powershell/simple/indexing/find-item.js.map +1 -1
  61. package/dist/tools/powershell/simple/indexing/resume-search-index.d.ts +3 -0
  62. package/dist/tools/powershell/simple/indexing/resume-search-index.js +16 -0
  63. package/dist/tools/powershell/simple/indexing/resume-search-index.js.map +1 -0
  64. package/dist/tools/powershell/simple/{security/lock-item.d.ts → indexing/stop-search-index.d.ts} +1 -1
  65. package/dist/tools/powershell/simple/indexing/stop-search-index.js +16 -0
  66. package/dist/tools/powershell/simple/indexing/stop-search-index.js.map +1 -0
  67. package/dist/tools/powershell/simple/indexing/suspend-search-index.d.ts +3 -0
  68. package/dist/tools/powershell/simple/indexing/suspend-search-index.js +16 -0
  69. package/dist/tools/powershell/simple/indexing/suspend-search-index.js.map +1 -0
  70. package/dist/tools/powershell/simple/security/{unprotect-item.d.ts → get-all-domains.d.ts} +1 -1
  71. package/dist/tools/powershell/simple/security/get-all-domains.js +10 -0
  72. package/dist/tools/powershell/simple/security/get-all-domains.js.map +1 -0
  73. package/dist/tools/powershell/simple/security/{get-role.d.ts → get-current-user.d.ts} +1 -1
  74. package/dist/tools/powershell/simple/security/get-current-user.js +12 -0
  75. package/dist/tools/powershell/simple/security/get-current-user.js.map +1 -0
  76. package/dist/tools/powershell/simple/security/get-domain-by-name.d.ts +3 -0
  77. package/dist/tools/powershell/simple/security/{get-domain.js → get-domain-by-name.js} +2 -7
  78. package/dist/tools/powershell/simple/security/get-domain-by-name.js.map +1 -0
  79. package/dist/tools/powershell/simple/security/get-role-by-filter.d.ts +3 -0
  80. package/dist/tools/powershell/simple/security/{get-role.js → get-role-by-filter.js} +2 -11
  81. package/dist/tools/powershell/simple/security/get-role-by-filter.js.map +1 -0
  82. package/dist/tools/powershell/simple/security/get-role-by-identity.d.ts +3 -0
  83. package/dist/tools/powershell/simple/security/get-role-by-identity.js +15 -0
  84. package/dist/tools/powershell/simple/security/get-role-by-identity.js.map +1 -0
  85. package/dist/tools/powershell/simple/security/get-user-by-filter.d.ts +3 -0
  86. package/dist/tools/powershell/simple/security/get-user-by-filter.js +15 -0
  87. package/dist/tools/powershell/simple/security/get-user-by-filter.js.map +1 -0
  88. package/dist/tools/powershell/simple/security/get-user-by-identity.d.ts +3 -0
  89. package/dist/tools/powershell/simple/security/get-user-by-identity.js +15 -0
  90. package/dist/tools/powershell/simple/security/get-user-by-identity.js.map +1 -0
  91. package/dist/tools/powershell/simple/security/{get-domain.d.ts → lock-item-by-id.d.ts} +1 -1
  92. package/dist/tools/powershell/simple/security/lock-item-by-id.js +31 -0
  93. package/dist/tools/powershell/simple/security/lock-item-by-id.js.map +1 -0
  94. package/dist/tools/powershell/simple/security/{get-user.d.ts → lock-item-by-path.d.ts} +1 -1
  95. package/dist/tools/powershell/simple/security/{lock-item.js → lock-item-by-path.js} +2 -27
  96. package/dist/tools/powershell/simple/security/lock-item-by-path.js.map +1 -0
  97. package/dist/tools/powershell/simple/security/protect-item-by-id.d.ts +3 -0
  98. package/dist/tools/powershell/simple/security/protect-item-by-id.js +26 -0
  99. package/dist/tools/powershell/simple/security/protect-item-by-id.js.map +1 -0
  100. package/dist/tools/powershell/simple/security/protect-item-by-path.d.ts +3 -0
  101. package/dist/tools/powershell/simple/security/{protect-item.js → protect-item-by-path.js} +2 -22
  102. package/dist/tools/powershell/simple/security/protect-item-by-path.js.map +1 -0
  103. package/dist/tools/powershell/simple/security/unprotect-item-by-id.d.ts +3 -0
  104. package/dist/tools/powershell/simple/security/unprotect-item-by-id.js +26 -0
  105. package/dist/tools/powershell/simple/security/unprotect-item-by-id.js.map +1 -0
  106. package/dist/tools/powershell/simple/security/unprotect-item-by-path.d.ts +3 -0
  107. package/dist/tools/powershell/simple/security/{unprotect-item.js → unprotect-item-by-path.js} +2 -22
  108. package/dist/tools/powershell/simple/security/unprotect-item-by-path.js.map +1 -0
  109. package/package.json +1 -1
  110. package/dist/tools/item-service/composite/get-item-descendants.js.map +0 -1
  111. package/dist/tools/item-service/composite/get-languages.js.map +0 -1
  112. package/dist/tools/item-service/simple/create-item.js.map +0 -1
  113. package/dist/tools/item-service/simple/delete-item.js.map +0 -1
  114. package/dist/tools/item-service/simple/edit-item.js.map +0 -1
  115. package/dist/tools/item-service/simple/get-item-by-path.js.map +0 -1
  116. package/dist/tools/item-service/simple/get-item-children.js.map +0 -1
  117. package/dist/tools/item-service/simple/get-item.js.map +0 -1
  118. package/dist/tools/item-service/simple/run-stored-query.js.map +0 -1
  119. package/dist/tools/item-service/simple/run-stored-search.js.map +0 -1
  120. package/dist/tools/item-service/simple/search-items.js.map +0 -1
  121. package/dist/tools/item-service/tool-registrations/composite/get-item-descendants.registration.js.map +0 -1
  122. package/dist/tools/item-service/tool-registrations/composite/get-languages.registration.js.map +0 -1
  123. package/dist/tools/item-service/tool-registrations/simple/create-item.registration.js.map +0 -1
  124. package/dist/tools/item-service/tool-registrations/simple/delete-item.registration.js.map +0 -1
  125. package/dist/tools/item-service/tool-registrations/simple/edit-item.registration.js.map +0 -1
  126. package/dist/tools/item-service/tool-registrations/simple/get-item-by-path.registration.js.map +0 -1
  127. package/dist/tools/item-service/tool-registrations/simple/get-item-children.registration.js.map +0 -1
  128. package/dist/tools/item-service/tool-registrations/simple/get-item.registration.js.map +0 -1
  129. package/dist/tools/item-service/tool-registrations/simple/run-stored-query.registration.js.map +0 -1
  130. package/dist/tools/item-service/tool-registrations/simple/run-stored-search.registration.js.map +0 -1
  131. package/dist/tools/item-service/tool-registrations/simple/search-items.registration.js.map +0 -1
  132. package/dist/tools/powershell/simple/media/media-management.d.ts +0 -0
  133. package/dist/tools/powershell/simple/media/media-management.js +0 -2
  134. package/dist/tools/powershell/simple/media/media-management.js.map +0 -1
  135. package/dist/tools/powershell/simple/packages/package-management.d.ts +0 -0
  136. package/dist/tools/powershell/simple/packages/package-management.js +0 -2
  137. package/dist/tools/powershell/simple/packages/package-management.js.map +0 -1
  138. package/dist/tools/powershell/simple/security/get-domain.js.map +0 -1
  139. package/dist/tools/powershell/simple/security/get-role.js.map +0 -1
  140. package/dist/tools/powershell/simple/security/get-user.js +0 -31
  141. package/dist/tools/powershell/simple/security/get-user.js.map +0 -1
  142. package/dist/tools/powershell/simple/security/lock-item.js.map +0 -1
  143. package/dist/tools/powershell/simple/security/protect-item.d.ts +0 -3
  144. package/dist/tools/powershell/simple/security/protect-item.js.map +0 -1
  145. package/dist/tools/powershell/simple/security/unprotect-item.js.map +0 -1
  146. /package/dist/tools/item-service/{simple → logic/simple}/edit-item.d.ts +0 -0
  147. /package/dist/tools/item-service/{tool-registrations/composite/get-item-descendants.registration.d.ts → tools/composite/get-item-descendants.d.ts} +0 -0
  148. /package/dist/tools/item-service/{tool-registrations/composite/get-languages.registration.d.ts → tools/composite/get-languages.d.ts} +0 -0
  149. /package/dist/tools/item-service/{tool-registrations/simple/create-item.registration.d.ts → tools/simple/create-item.d.ts} +0 -0
  150. /package/dist/tools/item-service/{tool-registrations/simple/delete-item.registration.d.ts → tools/simple/delete-item.d.ts} +0 -0
  151. /package/dist/tools/item-service/{tool-registrations/simple/edit-item.registration.d.ts → tools/simple/edit-item.d.ts} +0 -0
  152. /package/dist/tools/item-service/{tool-registrations/simple/get-item-by-path.registration.d.ts → tools/simple/get-item-by-path.d.ts} +0 -0
  153. /package/dist/tools/item-service/{tool-registrations/simple/get-item-children.registration.d.ts → tools/simple/get-item-children.d.ts} +0 -0
  154. /package/dist/tools/item-service/{tool-registrations/simple/get-item.registration.d.ts → tools/simple/get-item.d.ts} +0 -0
  155. /package/dist/tools/item-service/{tool-registrations/simple/run-stored-query.registration.d.ts → tools/simple/run-stored-query.d.ts} +0 -0
  156. /package/dist/tools/item-service/{tool-registrations/simple/run-stored-search.registration.d.ts → tools/simple/run-stored-search.d.ts} +0 -0
  157. /package/dist/tools/item-service/{tool-registrations/simple/search-items.registration.d.ts → tools/simple/search-items.d.ts} +0 -0
package/README.md CHANGED
@@ -76,7 +76,9 @@
76
76
  - [x] Indexing
77
77
  - [x] `indexing-initialize-search-index`: initializes one or more search indexes
78
78
  - [x] `indexing-get-search-index`: returns a search index
79
- - [x] `indexing-find-item`: finds an item in a search index
79
+ - [x] `indexing-find-item`: finds an item in a search index - [x] `indexing-suspend-search-index`: suspends one or more running search indexes
80
+ - [x] `indexing-stop-search-index`: stops one or more running search indexes
81
+ - [x] `indexing-resume-search-index`: resumes one or more paused search indexes
80
82
  - [x] `indexing-initialize-search-index-item-by-id`: rebuilds the index for a given tree with the specified root item by ID and index name
81
83
  - [x] `indexing-initialize-search-index-item-by-path`: rebuilds the index for a given tree with the specified root item by path and index name
82
84
  - [x] `indexing-remove-search-index-item-by-id`: removes the item with the specified ID from the search index
package/dist/bundle.js CHANGED
@@ -24271,7 +24271,7 @@ async function runGenericPowershellCommand(config, command, options, outputForma
24271
24271
  };
24272
24272
  }
24273
24273
 
24274
- function getUserPowerShellTool(server, config) {
24274
+ function getUserByIdentityPowerShellTool(server, config) {
24275
24275
  server.tool("security-get-user-by-identity", "Get a Sitecore user by its name.", {
24276
24276
  identity: stringType(),
24277
24277
  }, async (params) => {
@@ -24281,6 +24281,9 @@ function getUserPowerShellTool(server, config) {
24281
24281
  };
24282
24282
  return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24283
24283
  });
24284
+ }
24285
+
24286
+ function getCurrentUserPowerShellTool(server, config) {
24284
24287
  server.tool("security-get-current-user", "Get the current Sitecore user.", {}, async () => {
24285
24288
  const command = `Get-User`;
24286
24289
  const options = {
@@ -24288,6 +24291,9 @@ function getUserPowerShellTool(server, config) {
24288
24291
  };
24289
24292
  return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24290
24293
  });
24294
+ }
24295
+
24296
+ function getUserByFilterPowerShellTool(server, config) {
24291
24297
  server.tool("security-get-user-by-filter", "Get a Sitecore users by filter.", {
24292
24298
  filter: stringType(),
24293
24299
  }, async (params) => {
@@ -24477,24 +24483,7 @@ function setUserPasswordPowerShellTool(server, config) {
24477
24483
  });
24478
24484
  }
24479
24485
 
24480
- function getDomainPowerShellTool(server, config) {
24481
- server.tool("security-get-domain-by-name", "Get a Sitecore domain by its name.", {
24482
- name: stringType(),
24483
- }, async (params) => {
24484
- const command = `Get-Domain`;
24485
- const options = {
24486
- "Name": params.name,
24487
- };
24488
- return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24489
- });
24490
- server.tool("security-get-domain", "Get all Sitecore domains.", {}, async () => {
24491
- const command = `Get-Domain`;
24492
- const options = {};
24493
- return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24494
- });
24495
- }
24496
-
24497
- function getRolePowerShellTool(server, config) {
24486
+ function getRoleByIdentityPowerShellTool(server, config) {
24498
24487
  server.tool("security-get-role-by-identity", "Get a Sitecore role by its identity.", {
24499
24488
  identity: stringType().describe("The identity of the role to retrieve (e.g. 'sitecore\\Author')"),
24500
24489
  }, async (params) => {
@@ -24504,6 +24493,9 @@ function getRolePowerShellTool(server, config) {
24504
24493
  };
24505
24494
  return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24506
24495
  });
24496
+ }
24497
+
24498
+ function getRoleByFilterPowerShellTool(server, config) {
24507
24499
  server.tool("security-get-role-by-filter", "Get Sitecore roles by filter criteria.", {
24508
24500
  filter: stringType().describe("The filter criteria to search for roles (e.g. 'sitecore\\*' or '*Author*')"),
24509
24501
  }, async (params) => {
@@ -24575,59 +24567,6 @@ function removeRoleMemberPowerShellTool(server, config) {
24575
24567
  });
24576
24568
  }
24577
24569
 
24578
- function lockItemPowerShellTool(server, config) {
24579
- server.tool("security-lock-item-by-path", "Lock a Sitecore item by its path.", {
24580
- path: stringType()
24581
- .describe("The path of the item to lock (e.g. /sitecore/content/Home)"),
24582
- force: booleanType()
24583
- .optional().describe("If set to true, will force the lock even if the item is locked by another user"),
24584
- passThru: booleanType().optional()
24585
- .describe("If set to true, passes the processed object back to the pipeline"),
24586
- database: stringType().optional()
24587
- .describe("The database containing the item (defaults to the context database)")
24588
- }, async (params) => {
24589
- const command = `Lock-Item`;
24590
- const options = {
24591
- "Path": params.path,
24592
- };
24593
- if (params.force) {
24594
- options["Force"] = "";
24595
- }
24596
- if (params.passThru) {
24597
- options["PassThru"] = "";
24598
- }
24599
- if (params.database) {
24600
- options["Database"] = params.database;
24601
- }
24602
- return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24603
- });
24604
- server.tool("security-lock-item-by-id", "Lock a Sitecore item by its ID.", {
24605
- id: stringType()
24606
- .describe("The ID of the item to lock"),
24607
- force: booleanType().optional()
24608
- .describe("If set to true, will force the lock even if the item is locked by another user"),
24609
- passThru: booleanType().optional()
24610
- .describe("If set to true, passes the processed object back to the pipeline"),
24611
- database: stringType().optional()
24612
- .describe("The database containing the item (defaults to the context database)")
24613
- }, async (params) => {
24614
- const command = `Lock-Item`;
24615
- const options = {
24616
- "Id": params.id,
24617
- };
24618
- if (params.force) {
24619
- options["Force"] = "";
24620
- }
24621
- if (params.passThru) {
24622
- options["PassThru"] = "";
24623
- }
24624
- if (params.database) {
24625
- options["Database"] = params.database;
24626
- }
24627
- return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24628
- });
24629
- }
24630
-
24631
24570
  function unlockItemPowerShellTool(server, config) {
24632
24571
  server.tool("security-unlock-item-by-id", "Unlocks a Sitecore item by its ID.", {
24633
24572
  id: stringType().describe("The ID of the item to unlock"),
@@ -24677,7 +24616,7 @@ function unlockItemPowerShellTool(server, config) {
24677
24616
  });
24678
24617
  }
24679
24618
 
24680
- function protectItemPowerShellTool(server, config) {
24619
+ function protectItemByPathPowerShellTool(server, config) {
24681
24620
  server.tool("security-protect-item-by-path", "Protect a Sitecore item by its path.", {
24682
24621
  path: stringType()
24683
24622
  .describe("The path of the item to protect (e.g. /sitecore/content/Home)"),
@@ -24698,6 +24637,9 @@ function protectItemPowerShellTool(server, config) {
24698
24637
  }
24699
24638
  return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24700
24639
  });
24640
+ }
24641
+
24642
+ function protectItemByIdPowerShellTool(server, config) {
24701
24643
  server.tool("security-protect-item-by-id", "Protect a Sitecore item by its ID.", {
24702
24644
  id: stringType()
24703
24645
  .describe("The ID of the item to protect"),
@@ -24720,49 +24662,6 @@ function protectItemPowerShellTool(server, config) {
24720
24662
  });
24721
24663
  }
24722
24664
 
24723
- function unprotectItemPowerShellTool(server, config) {
24724
- server.tool("security-unprotect-item-by-path", "Unprotect a Sitecore item by its path.", {
24725
- path: stringType()
24726
- .describe("The path of the item to unprotect (e.g. /sitecore/content/Home)"),
24727
- passThru: booleanType().optional()
24728
- .describe("If set to true, passes the processed object back to the pipeline"),
24729
- database: stringType().optional()
24730
- .describe("The database containing the item (defaults to the context database)")
24731
- }, async (params) => {
24732
- const command = `Unprotect-Item`;
24733
- const options = {
24734
- "Path": params.path,
24735
- };
24736
- if (params.passThru) {
24737
- options["PassThru"] = "";
24738
- }
24739
- if (params.database) {
24740
- options["Database"] = params.database;
24741
- }
24742
- return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24743
- });
24744
- server.tool("security-unprotect-item-by-id", "Unprotect a Sitecore item by its ID.", {
24745
- id: stringType()
24746
- .describe("The ID of the item to unprotect"),
24747
- passThru: booleanType().optional()
24748
- .describe("If set to true, passes the processed object back to the pipeline"),
24749
- database: stringType().optional()
24750
- .describe("The database containing the item (defaults to the context database)")
24751
- }, async (params) => {
24752
- const command = `Unprotect-Item`;
24753
- const options = {
24754
- "Id": params.id,
24755
- };
24756
- if (params.passThru) {
24757
- options["PassThru"] = "";
24758
- }
24759
- if (params.database) {
24760
- options["Database"] = params.database;
24761
- }
24762
- return safeMcpResponse(runGenericPowershellCommand(config, command, options));
24763
- });
24764
- }
24765
-
24766
24665
  function newRolePowerShellTool(server, config) {
24767
24666
  server.tool("security-new-role", "Creates a new Sitecore role.", {
24768
24667
  identity: stringType()
@@ -25289,6 +25188,7 @@ $managedSchema.SolrDynamicFields | ForEach-Object {$_.Name}
25289
25188
  const allFieldsDefault = [
25290
25189
  "dictionary_t", "name_t_en", "text1_t_fr", "author_t_en", "fallback_domain_sm", "currency2_t_fr", "link2_t_fr", "symbol1_t_en", "datasource_template_t_en", "stackatbreakpoint_t_en", "eyebrow_t_en", "name_t_fr", "data_source_t", "preview_publishing_target_b", "replacement_html_t_en", "datasource_template_t_de", "database_t_en", "currency2_t_en", "termname_t_ja", "site_collection_s", "command_t_de", "text1_t_en", "should_update_item_name_b", "culture_s", "size_t_da", "authority_url_t", "stackatbreakpoint_t_da", "stackatbreakpoint_t_de", "submitbutton_t", "quote_t_en", "default_language_t_en", "size_t_en", "command_name_t", "defaultfields_t_da", "method_t_en", "phrase_t", "socialicon3_t", "__display_name_t_zh", "command_t_en", "__base_template_sm", "max_result_t", "startlabel_t_da", "startlabel_t_de", "title1_t_en", "type_t", "subtitle1_t_ja", "text3_t", "_path", "keywords_t_en", "includestandardtemplatefields_b", "cmp_field_name_t", "serversiderenderingengineapplicationurl_t", "link2_t_en", "defaultfields_t_en", "amount1_t_ja", "method_t_da", "value1_tf", "title2_t_ja", "customize_page_t", "critical_error_t", "startlabel_t_en", "fatal_error_t", "comment_dialog_height_tl", "key_t", "control_type_sm", "description_t_en", "item_template_t_en", "cacheable_b", "field_t_zh", "value3_tf", "shared_b", "text1_t_ja", "cta1_t", "max_result_t_zh", "default_value_t_zh", "image2_t", "enabled_b", "workflow_sm", "datasource_template_t_fr", "socialicon1_t", "sociallink3_t_fr", "text2_t_ja", "content_hub_attribute_t", "name_t_da", "script_t_zh", "_templates", "text1_t", "usecontextitem_b", "value_t", "showinsitemap_b", "name_t_de", "quick_action_bar_sm", "amount1_t_fr", "item_template_t", "symbol1_t", "itemnameproperty_t_en", "_version_", "webmethod_t", "cors_origins_t_en", "sociallink3_t_en", "parameters_t_ja", "header_prefix_t_en", "async_b", "validation_t_zh", "startlabel_t_ja", "appearance_evaluator_type_t", "description_t", "cmp_field_name_t_en", "backgroundimage_t", "photo_t", "webmethod_t_zh", "sociallink2_t_en", "time_span_tl", "componentquery_t", "answer_t_fr", "ispointofinterest_b", "subtitle2_t_ja", "longitude_tf", "footer_template_t_en", "tagline_t", "error_t_ja", "icon_t_en", "__quick_actions_sm", "header_prefix_t", "path_t_en", "placeholder_key_t_ja", "site_type_s", "socialicon3_t_en", "answer_t_en", "default_simulator_sm", "componentname_t_zh", "stackatbreakpoint_t", "parsedlanguage_s", "eyebrow_t", "datasource_template_t_ja", "symbol3_t", "sociallink3_t_ja", "sociallink1_t", "agent_t", "path_t_de", "validationtext_t_zh", "client_side_hook_s", "_language", "termname_t_en", "link2_t_ja", "error_t_de", "subtitle2_t_en", "allowedcontrollers_t_en", "open_properties_after_add_t", "license_t_en", "authorimage_t", "content_t", "__shared_revision_t_ja", "buttonlabel_t", "isbucket_text_s", "termname_t_fr", "dimensions_t", "mime_type_t", "subtitle2_t_fr", "minterm_tl", "authorimage_t_en", "search_filter_t", "_displayname", "error_t_en", "answer_t_ja", "namespace_t", "script_t", "position_t_ja", "__solr_norm_field_name_s", "validator_bar_sm", "path_t_ja", "title2_t_en", "reference_sm", "error_t_fr", "sociallink3_t", "command_t_ja", "_uniqueid", "_isclone", "subjectlabel_t", "screen_offset_t", "text5_t", "title2_t_fr", "reset_blank_b", "default_comment_dialog_height_tl", "foregroundimage_t", "datasource_location_t_de", "open_properties_after_add_t_zh", "amount1_t", "minimum_number_of_items_tf", "title1_t", "engine_type_name_t_en", "caption1_t_en", "display_name_t_en", "image5_t_fr", "collapsed_by_default_b", "subtext1_t_ja", "parsedcreatedby_s", "regional_iso_code_t", "mime_type_t_hy", "field_t_en", "engine_type_name_t", "buttonstyle_s", "_version", "position_t_en", "module_version_t_en", "command_t", "field_t_da", "title_t_zh", "charset_t_en", "field_t_de", "rendering_contents_resolver_sm", "imagedescription_t_en", "title3_t_en", "link5_t", "position_t_fr", "target_database_t_en", "settingsfolder_sm", "text3_t_ja", "sociallink1_t_en", "exclude_templates_sm", "sitecore_field_name_sm", "type_t_zh", "parameters_t_da", "width_t_en", "currency_t_ja", "engine_type_name_t_de", "title3_t_fr", "title_t", "encoding_t", "sociallink1_t_fr", "comment_template_sm", "image5_t_en", "currency1_t_ja", "submitbutton_t_ja", "parameters_t_de", "webmethod_t_da", "webmethod_t_de", "subtext1_t_en", "preservelanguage_b", "engine_type_name_t_ja", "default_comment_template_sm", "submitbutton_t_fr", "opening_search_results_s", "initial_state_sm", "thumbnail_t_en", "image5_t_ja", "validation_t", "title3_t", "image1_t_fr", "parameters_t_en", "max_result_t_ja", "thumbnail_t_fr", "header_template_t_en", "subtext1_t", "abstract_t_en", "default_language_t", "footnote_t", "published_by_t_en", "parameters_t_fr", "subtext1_t_fr", "image1_t_en", "controller_t_de", "header_t", "placeholder_key_t", "field_t", "validationtext_t", "iso_t", "category_t_en", "title3_t_ja", "displayname_t_en", "lastscript_t_da", "text3_t_en", "_database", "istemplate_b", "support_t", "alt_t", "sociallink1_t_ja", "message_t_en", "add_to_s", "symbol3_t_en", "__boost", "currency1_t_fr", "page_design_s", "caption1_t", "fallback_device_sm", "module_version_t", "submitbutton_t_en", "text3_t_fr", "width_t_hy", "backgroundcolor_s", "dictionary_t_en", "heading_t", "lastscript_t_en", "final_b", "termname_t", "currency2_t", "footnote_t_en", "currency1_t_en", "startlabel_t_zh", "__semantics", "url_t_en", "promotext_t_de", "showfilters_b", "amount1_t_en", "value1_t_ja", "promotext_t_da", "question_t_ja", "branchesfolder_sm", "extension_t_en", "max_result_t_en", "authorposition_t_en", "lastscript_t_fr", "link1_t", "value1_t", "footnote_t_fr", "webmethod_t_ja", "link_t", "throttle_strategy_sm", "subtext3_t", "promotext_t_en", "placeholder_t", "login_rendering_sm", "image1_t_ja", "error_t_zh", "max_result_t_fr", "validation_t_ja", "controller_t_en", "copyright_t_fr", "_template", "content_hub_attribute_t_en", "phrase_t_ja", "itemselectorquery_t_zh", "endlabel_t_zh", "subtitle3_t", "authorname_t", "componentquery_t_de", "placeholder_key_t_zh", "__enable_item_fallback_b", "copyright_t_en", "savelastscript_b", "image_t", "field_t_ja", "fatal_error_t_ja", "componentname_t_ja", "link3_t_ja", "bio_t", "image5_t", "subtitle4_t_ja", "extension_t_da", "componentquery_t_en", "validationtext_t_ja", "max_result_t_de", "assembly_t", "buttonlabel_t_en", "validate_button_sm", "lastscript_t_ja", "controller_t_ja", "validation_t_en", "stackatbreakpoint_t_ja", "enable_datasource_query_b", "subtitle1_t_en", "default_b", "webmethod_t_en", "__shared_revision_t_zh", "_templatename", "question_t_en", "value1_t_fr", "name_t_ja", "componentname_t_fr", "tag_t", "size_t_hy", "fatal_error_t_de", "link3_t", "checkbox_b", "question_t_fr", "value_t_en", "datasource_template_t", "author_t", "layout_t_en", "value1_t_en", "__validate_button_validation_rules_sm", "data_source_t_en", "subtitle1_t", "editable_b", "path_t_zh", "_parent", "componentname_t_de", "command_t_zh", "fatal_error_t_fr", "datetime_t", "link3_t_en", "phrase_t_fr", "authorposition_t", "navigationtitle_t_zh", "validation_t_de", "componentquery_t_ja", "tag_parent_sm", "_indexname", "emaillabel_t_en", "subtitle1_t_fr", "ignore_dictionary_translations_b", "fatal_error_t_en", "extension_t_hy", "componentname_t_en", "phrase_t_en", "link3_t_fr", "heading_t_en", "controller_action_t", "height_t", "__enforce_version_presence_b", "text5_t_ja", "license_t", "message_t", "isrendering_b", "messagelabel_t", "image3_t_en", "display_text_t_de", "__smallcreateddate_tdt", "title_t_ja", "persistentsessionid_t", "error_t", "text2_t", "caption3_t_en", "subtext3_t_ja", "haschildren_b", "movielabel_t_en", "cta2_t_en", "placeholder_t_en", "unversioned_b", "bio_t_fr", "type_t_ja", "category_t", "heading_t_da", "display_text_t_en", "language_t", "heading_t_de", "background_image_t", "promotext_t_ja", "navigationtitle_t_en", "_latestversion", "header_t_en", "_fullpath", "bio_t_en", "include_templates_sm", "exclude_items_t", "agent_t_ja", "rootitem_sm", "__workflow_state", "navigationtitle_t_da", "image1_t", "subjectlabel_t_en", "navigationtitle_t_de", "__display_name_t", "subtext2_t_en", "command_name_t_en", "charset_t", "itemselectorquery_t_da", "subtitle_t", "itemselectorquery_t_de", "controller_action_t_ja", "socialicon2_t", "exported_function_name_t_en", "engine_type_name_t_zh", "validationtext_t_de", "position_t", "heading_t_ja", "query_t_en", "list_name_t", "__unversioned_revision_t", "event_name_t", "allowed_number_of_requests_tl", "maxamount_tl", "maxterm_tl", "datasource_location_t_zh", "screen_offset_t_en", "_indextimestamp", "agent_t_de", "__publishing_groups_sm", "type_t_fr", "script_sm", "role_name_t_fr", "footnote_t_ja", "symbol2_t", "default_value_t", "image4_t_ja", "question_t", "text4_t_en", "__unversioned_revision_t_ja", "currency1_t", "query_t_da", "bio_t_ja", "itemselectorquery_t", "search_filter_t_en", "agent_t_en", "type_t_en", "render_as_html_b", "extension_t", "currency_t", "socialstitle_t_fr", "value2_tf", "rating_tf", "promotext_t_fr", "subtitle4_t_en", "type_t_de", "validationtext_t_en", "serversiderenderingengineconfigurl_t_zh", "quote_t", "cta2_t", "control_type_parameters_t", "exclude_from_text_search_b", "itemselectorquery_t_en", "image3_t", "subtitle4_t_fr", "theme_t", "control_type_t", "type_t_da", "use_alternate_content_b", "socialstitle_t_en", "image4_t_en", "regional_iso_code_t_en", "method_t", "query_string_t_en", "datasource_location_t", "__unversioned_revision_t_de", "__should_not_organize_in_bucket_b", "__unversioned_revision_t_da", "critical_error_t_zh", "caption2_t_en", "title4_t_en", "enable_language_fallback_b", "thumbnail_t_ja", "messagelabel_t_en", "thumbnail_t", "cta1_t_fr", "blob_b", "image4_t_fr", "link_t_ja", "text4_t_ja", "foregroundimage_t_fr", "interestrate_tf", "support_t_en", "sitecore_attribute_t_en", "controller_action_t_en", "title4_t_fr", "cacheclearingbehavior_s", "screen_height_tf", "next_state_sm", "display_text_t", "template_sm", "encoding_t_en", "sizerange_s", "image2_t_fr", "bucket_sm", "foregroundimage_t_en", "header_template_t", "title4_t", "itemselectorquery_t_ja", "excerpt_t", "text4_t_fr", "fallback_language_s", "endlabel_t_ja", "caption3_t", "serversiderenderingengineconfigurl_t", "imagedescription_t", "backgroundimage_t_en", "image2_t_en", "global_b", "__unversioned_revision_t_en", "background_image_t_en", "role_name_t_en", "command_sm", "fatal_error_t_zh", "cta1_t_en", "overwrite_b", "content_t_ja", "backgroundimage_t_fr", "mime_type_t_da", "parameters_template_sm", "name_t_zh", "assembly_t_en", "subtext3_t_fr", "size_t", "server_script_path_t", "sociallink2_t", "tagprefix_t", "email_t_en", "non_leaf_node_option_sm", "hostwidth_tf", "stackatbreakpoint_t_zh", "code_t", "display_name_t", "text4_t", "socialicon1_t_en", "code_page_t", "display_text_t_ja", "includeserverurlinmediaurls_b", "exclude_items_t_en", "list_name_t_en", "mime_type_t_en", "controller_t_zh", "query_t", "theme_t_en", "navigationtitle_t_fr", "subtext3_t_en", "eventname_t", "replacement_html_t", "server_script_path_t_en", "authority_url_t_en", "content_t_en", "link4_t_en", "auto_remove_b", "navigationtitle_t_ja", "image2_t_ja", "controller_action_t_de", "currency_t_en", "sitetemplate_sm", "solution_t", "numberofitems_tl", "content_t_fr", "client_t_en", "placeholders_sm", "__insert_rules_sm", "componentquery_t_zh", "currency_t_fr", "alt_t_en", "backgroundimage_t_ja", "allowed_controls_sm", "_name", "use_thread_b", "placeholder_key_t_de", "_haslayout_b", "script_t_da", "answer_t", "control_type_t_en", "sitecore_attribute_t", "subtitle3_t_ja", "amount2_t_fr", "database_t", "height_t_en", "event_name_t_en", "navigationtitle_t", "appearance_evaluator_type_t_en", "__created_by_s", "displayname_t", "link4_t_fr", "__display_name_t_fr", "datasource_location_t_en", "default_value_t_en", "script_t_de", "group_sm", "__shared_revision_t_fr", "amount2_t_en", "endlabel_t", "excerpt_t_en", "__shared_revision_t_de", "__shared_revision_t_da", "subtitle_t_ja", "datasource_location_t_fr", "agent_t_zh", "link_t_en", "__display_name_t_ja", "persistentsessionid_t_da", "publish_to_experience_edge_b", "script_t_en", "control_t", "link4_t", "excerpt_t_fr", "suppress_comment_b", "eventtypes_sm", "__quick_action_bar_validation_rules_sm", "__shared_revision_t_en", "iso_t_en", "componentname_t", "persistentsessionid_t_en", "path_t", "defaultfields_t", "__solr_field_type_s", "cors_origins_t", "_group", "script_t_fr", "heading_t_zh", "subtitle3_t_fr", "open_properties_after_add_t_de", "critical_error_t_en", "__validator_bar_validation_rules_sm", "page_editor_buttons_sm", "dimensions_t_en", "published_by_t", "__display_name_t_da", "default_value_t_ja", "render_engine_type_sm", "height_t_hy", "endlabel_t_da", "caption2_t", "title4_t_ja", "logoimage_t_en", "critical_error_t_fr", "link4_t_ja", "controller_action_t_zh", "link_t_fr", "_datasource", "control_t_en", "sociallink2_t_ja", "datasource_location_t_ja", "image_t_en", "endlabel_t_de", "tagprefix_t_en", "promotext_t_zh", "exported_function_name_t", "role_name_t", "tagline_t_en", "liveautocompletion_b", "script_t_ja", "amount2_t", "title2_t", "sociallink2_t_fr", "__display_name_t_en", "copyright_t", "email_t", "link5_t_ja", "serversiderenderingengineconfigurl_t_ja", "datetime_t_en", "endlabel_t_en", "fontfamily_s", "image_t_fr", "subtitle_t_fr", "placeholder_key_t_en", "__display_name_t_de", "footer_template_t", "subtext2_t", "logoimage_t", "dimensions_t_hy", "excerpt_t_ja", "serialization_type_sm", "target_database_t", "__unversioned_revision_t_zh", "icon_s", "icon_t", "__autothumbnails_b", "critical_error_t_de", "subtitle_t_en", "name_t", "url_t", "parsedupdatedby_s", "socialstitle_t", "critical_error_t_ja", "serversiderenderingengineconfigurl_t_de", "link1_t_en", "code_page_t_en", "customize_page_t_en", "allowedcontrollers_t", "subtitle4_t", "parameters_t_zh", "abstract_t", "keywords_t", "key_t_ja", "solution_t_en", "minamount_tl", "enable_shared_language_fallback_b", "client_t", "addfieldeditorbutton_b", "link1_t_fr", "problem_t_en", "image4_t", "title1_t_ja", "authorname_t_en", "parameters_t", "_creator", "text2_t_fr", "symbol2_t_en", "eventname_t_en", "calculateddimension_sm", "open_properties_after_add_t_fr", "text2_t_en", "image_t_ja", "itemnameproperty_t", "link5_t_fr", "tag_name_option_sm", "foregroundcolor_s", "namespace_t_en", "emaillabel_t", "datasource_template_t_zh", "controller_t", "serversiderenderingengineconfigurl_t_en", "open_properties_after_add_t_en", "subtitle3_t_en", "promotext_t", "image3_t_ja", "photo_t_ja", "latitude_tf", "movielabel_t", "link5_t_en", "site_sm", "amount2_t_ja", "text5_t_en", "currency2_t_ja", "__smallupdateddate_tdt", "subtitle2_t", "key_t_fr", "query_string_t", "subtext2_t_fr", "title_t_en", "layout_t", "tag_t_en", "__shared_revision_t", "fontsize_tf", "text5_t_fr", "control_type_parameters_t_en", "display_text_t_zh", "title_t_fr", "problem_t", "code_t_en", "language_t_en", "scale_sm", "startlabel_t", "title1_t_fr", "screen_width_tf", "link1_t_ja", "socialicon2_t_en", "__standard_values_sm", "width_t", "bankfee_tf", "lastscript_t", "photo_t_fr", "link2_t", "authorization_sm", "title_t_da", "serversiderenderingengineapplicationurl_t_en", "key_t_en", "open_properties_after_add_t_ja", "default_value_t_de", "image3_t_fr", "tags_sm", "title_t_de", "photo_t_en", "subtext2_t_ja_x000A_"
25291
25190
  ];
25191
+ const languages = ["En"];
25292
25192
  const iso8601DateRegex = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
25293
25193
  async function findItemPowerShellTool(server, config) {
25294
25194
  const client = new PowershellClient(config.powershell.serverUrl, config.powershell.username, config.powershell.password, config.powershell.domain);
@@ -25352,11 +25252,35 @@ async function findItemPowerShellTool(server, config) {
25352
25252
  }).join(", ");
25353
25253
  const command = `Find-Item -Index "${params.index}" -Criteria @(${criteria}) -First ${params.first} -Skip ${params.skip} `;
25354
25254
  return safeMcpResponse(client.executeScriptJson(command, {}).then((result) => {
25355
- JSON.parse(result).Obj;
25255
+ const items = JSON.parse(result).Obj;
25256
+ const simplifiedItems = items.map((item) => {
25257
+ let newItem = {};
25258
+ newItem.ItemId = item.ItemId.ToString;
25259
+ newItem.Name = item.Name;
25260
+ newItem.Path = item.Path;
25261
+ newItem.TemplateId = item.TemplateId.ToString;
25262
+ newItem.TemplateName = item.TemplateName;
25263
+ params.criteria.forEach((c) => {
25264
+ let f = false;
25265
+ for (const language of languages) {
25266
+ if (c.field.endsWith(`_${language.toLowerCase()}`)) {
25267
+ f = true;
25268
+ newItem[c.field] = item.Fields[language].find((x) => x.Key === c.field.replace(`_${language.toLowerCase()}`, ""))["Value"];
25269
+ break;
25270
+ }
25271
+ }
25272
+ if (!f) {
25273
+ // Field was not found, probably it is not a text language field
25274
+ // Use values from EN version
25275
+ newItem[c.field] = item.Fields["En"].find((x) => x.Key === c.field)["Value"];
25276
+ }
25277
+ });
25278
+ return newItem;
25279
+ });
25356
25280
  return {
25357
25281
  content: [{
25358
25282
  type: "text",
25359
- text: result === "{}" ? "No items found." : result
25283
+ text: result === "{}" ? "No items found." : JSON.stringify(simplifiedItems, null, 2)
25360
25284
  }]
25361
25285
  };
25362
25286
  }, (error) => {
@@ -25365,6 +25289,45 @@ async function findItemPowerShellTool(server, config) {
25365
25289
  });
25366
25290
  }
25367
25291
 
25292
+ function resumeSearchIndexPowerShellTool(server, config) {
25293
+ server.tool("indexing-resume-search-index", "Resume one or more Sitecore search indexes. If no name is provided, all paused indexes will be resumed.", {
25294
+ name: stringType().optional().describe("The name of the index to resume. If not provided, all paused indexes will be resumed."),
25295
+ }, async (params) => {
25296
+ const command = `Resume-SearchIndex`;
25297
+ const options = {};
25298
+ if (params.name) {
25299
+ options["Name"] = params.name;
25300
+ }
25301
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25302
+ });
25303
+ }
25304
+
25305
+ function suspendSearchIndexPowerShellTool(server, config) {
25306
+ server.tool("indexing-suspend-search-index", "Suspend one or more Sitecore search indexes. If no name is provided, all running indexes will be suspended.", {
25307
+ name: stringType().optional().describe("The name of the index to suspend. If not provided, all running indexes will be suspended."),
25308
+ }, async (params) => {
25309
+ const command = `Suspend-SearchIndex`;
25310
+ const options = {};
25311
+ if (params.name) {
25312
+ options["Name"] = params.name;
25313
+ }
25314
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25315
+ });
25316
+ }
25317
+
25318
+ function stopSearchIndexPowerShellTool(server, config) {
25319
+ server.tool("indexing-stop-search-index", "Stop one or more Sitecore search indexes. If no name is provided, all running indexes will be stopped.", {
25320
+ name: stringType().optional().describe("The name of the index to stop. If not provided, all running indexes will be stopped."),
25321
+ }, async (params) => {
25322
+ const command = `Stop-SearchIndex`;
25323
+ const options = {};
25324
+ if (params.name) {
25325
+ options["Name"] = params.name;
25326
+ }
25327
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25328
+ });
25329
+ }
25330
+
25368
25331
  function prepareArgsString(parameters) {
25369
25332
  let scriptWithParameters = "";
25370
25333
  if (parameters) {
@@ -25518,6 +25481,128 @@ function removeSearchIndexItemByPathPowerShellTool(server, config) {
25518
25481
  });
25519
25482
  }
25520
25483
 
25484
+ function lockItemByIdPowerShellTool(server, config) {
25485
+ server.tool("security-lock-item-by-id", "Lock a Sitecore item by its ID.", {
25486
+ id: stringType()
25487
+ .describe("The ID of the item to lock"),
25488
+ force: booleanType().optional()
25489
+ .describe("If set to true, will force the lock even if the item is locked by another user"),
25490
+ passThru: booleanType().optional()
25491
+ .describe("If set to true, passes the processed object back to the pipeline"),
25492
+ database: stringType().optional()
25493
+ .describe("The database containing the item (defaults to the context database)")
25494
+ }, async (params) => {
25495
+ const command = `Lock-Item`;
25496
+ const options = {
25497
+ "Id": params.id,
25498
+ };
25499
+ if (params.force) {
25500
+ options["Force"] = "";
25501
+ }
25502
+ if (params.passThru) {
25503
+ options["PassThru"] = "";
25504
+ }
25505
+ if (params.database) {
25506
+ options["Database"] = params.database;
25507
+ }
25508
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25509
+ });
25510
+ }
25511
+
25512
+ function lockItemByPathPowerShellTool(server, config) {
25513
+ server.tool("security-lock-item-by-path", "Lock a Sitecore item by its path.", {
25514
+ path: stringType()
25515
+ .describe("The path of the item to lock (e.g. /sitecore/content/Home)"),
25516
+ force: booleanType()
25517
+ .optional().describe("If set to true, will force the lock even if the item is locked by another user"),
25518
+ passThru: booleanType().optional()
25519
+ .describe("If set to true, passes the processed object back to the pipeline"),
25520
+ database: stringType().optional()
25521
+ .describe("The database containing the item (defaults to the context database)")
25522
+ }, async (params) => {
25523
+ const command = `Lock-Item`;
25524
+ const options = {
25525
+ "Path": params.path,
25526
+ };
25527
+ if (params.force) {
25528
+ options["Force"] = "";
25529
+ }
25530
+ if (params.passThru) {
25531
+ options["PassThru"] = "";
25532
+ }
25533
+ if (params.database) {
25534
+ options["Database"] = params.database;
25535
+ }
25536
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25537
+ });
25538
+ }
25539
+
25540
+ function unprotectItemByIdPowerShellTool(server, config) {
25541
+ server.tool("security-unprotect-item-by-id", "Unprotect a Sitecore item by its ID.", {
25542
+ id: stringType()
25543
+ .describe("The ID of the item to unprotect"),
25544
+ passThru: booleanType().optional()
25545
+ .describe("If set to true, passes the processed object back to the pipeline"),
25546
+ database: stringType().optional()
25547
+ .describe("The database containing the item (defaults to the context database)")
25548
+ }, async (params) => {
25549
+ const command = `Unprotect-Item`;
25550
+ const options = {
25551
+ "Id": params.id,
25552
+ };
25553
+ if (params.passThru) {
25554
+ options["PassThru"] = "";
25555
+ }
25556
+ if (params.database) {
25557
+ options["Database"] = params.database;
25558
+ }
25559
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25560
+ });
25561
+ }
25562
+
25563
+ function unprotectItemByPathPowerShellTool(server, config) {
25564
+ server.tool("security-unprotect-item-by-path", "Unprotect a Sitecore item by its path.", {
25565
+ path: stringType()
25566
+ .describe("The path of the item to unprotect (e.g. /sitecore/content/Home)"),
25567
+ passThru: booleanType().optional()
25568
+ .describe("If set to true, passes the processed object back to the pipeline"),
25569
+ database: stringType().optional()
25570
+ .describe("The database containing the item (defaults to the context database)")
25571
+ }, async (params) => {
25572
+ const command = `Unprotect-Item`;
25573
+ const options = {
25574
+ "Path": params.path,
25575
+ };
25576
+ if (params.passThru) {
25577
+ options["PassThru"] = "";
25578
+ }
25579
+ if (params.database) {
25580
+ options["Database"] = params.database;
25581
+ }
25582
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25583
+ });
25584
+ }
25585
+
25586
+ function getDomainByNamePowerShellTool(server, config) {
25587
+ server.tool("security-get-domain-by-name", "Get a Sitecore domain by its name.", {
25588
+ name: stringType(),
25589
+ }, async (params) => {
25590
+ const command = `Get-Domain`;
25591
+ const options = {
25592
+ "Name": params.name,
25593
+ };
25594
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25595
+ });
25596
+ }
25597
+
25598
+ function getAllDomainsPowerShellTool(server, config) {
25599
+ server.tool("security-get-domain", "Get all Sitecore domains.", {}, async () => {
25600
+ const command = `Get-Domain`;
25601
+ const options = {};
25602
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25603
+ });
25604
+ }
25605
+
25521
25606
  async function register(array, server, config) {
25522
25607
  for (const register of array) {
25523
25608
  await register(server, config);
@@ -25525,7 +25610,8 @@ async function register(array, server, config) {
25525
25610
  }
25526
25611
  async function registerAll(server, config) {
25527
25612
  await register([
25528
- registerGraphQL, //Item Service
25613
+ registerGraphQL,
25614
+ //Item Service
25529
25615
  //Simple Item Service Tools
25530
25616
  getItemTool,
25531
25617
  getItemChildrenTool,
@@ -25538,10 +25624,13 @@ async function registerAll(server, config) {
25538
25624
  runStoredSearchTool,
25539
25625
  //Composite Item Service Tools
25540
25626
  getItemDescendantsTool,
25541
- getLanguagesTool, //PowerShell tools
25627
+ getLanguagesTool,
25628
+ //PowerShell tools
25542
25629
  //Security
25543
25630
  //Simple Security PowerShell Tools
25544
- getUserPowerShellTool,
25631
+ getUserByIdentityPowerShellTool,
25632
+ getCurrentUserPowerShellTool,
25633
+ getUserByFilterPowerShellTool,
25545
25634
  newUserPowerShellTool,
25546
25635
  removeUserPowerShellTool,
25547
25636
  disableUserPowerShellTool,
@@ -25549,15 +25638,20 @@ async function registerAll(server, config) {
25549
25638
  unlockUserPowerShellTool,
25550
25639
  setUserPowerShellTool,
25551
25640
  setUserPasswordPowerShellTool,
25552
- getDomainPowerShellTool,
25553
- getRolePowerShellTool,
25641
+ getDomainByNamePowerShellTool,
25642
+ getAllDomainsPowerShellTool,
25643
+ getRoleByIdentityPowerShellTool,
25644
+ getRoleByFilterPowerShellTool,
25554
25645
  getRoleMemberPowerShellTool,
25555
25646
  addRoleMemberPowerShellTool,
25556
25647
  removeRoleMemberPowerShellTool,
25557
- lockItemPowerShellTool,
25648
+ lockItemByIdPowerShellTool,
25649
+ lockItemByPathPowerShellTool,
25558
25650
  unlockItemPowerShellTool,
25559
- protectItemPowerShellTool,
25560
- unprotectItemPowerShellTool,
25651
+ protectItemByPathPowerShellTool,
25652
+ protectItemByIdPowerShellTool,
25653
+ unprotectItemByIdPowerShellTool,
25654
+ unprotectItemByPathPowerShellTool,
25561
25655
  newRolePowerShellTool,
25562
25656
  removeRolePowerShellTool,
25563
25657
  newDomainPowerShellTool,
@@ -25571,11 +25665,11 @@ async function registerAll(server, config) {
25571
25665
  setItemAclByIdPowerShellTool,
25572
25666
  setItemAclByPathPowerShellTool,
25573
25667
  //Provider
25574
- getItemPowerShellTool,
25575
- //Indexing PowerShell Tools
25576
- initializeSearchIndexPowerShellTool,
25577
- getSearchIndexPowerShellTool,
25578
- findItemPowerShellTool,
25668
+ getItemPowerShellTool, //Indexing PowerShell Tools
25669
+ initializeSearchIndexPowerShellTool, getSearchIndexPowerShellTool, findItemPowerShellTool,
25670
+ resumeSearchIndexPowerShellTool,
25671
+ suspendSearchIndexPowerShellTool,
25672
+ stopSearchIndexPowerShellTool,
25579
25673
  //Composite Indexing PowerShell Tools
25580
25674
  initializeSearchIndexingItemByIdPowerShellTool,
25581
25675
  initializeSearchIndexingItemByPathPowerShellTool,