@burdenoff/mcp-libs 2026.704.1 → 2026.719.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 (184) hide show
  1. package/dist/{chunk-WWFVD7BO.js → chunk-RHWHUY5Y.js} +3 -3
  2. package/dist/{chunk-WWFVD7BO.js.map → chunk-RHWHUY5Y.js.map} +1 -1
  3. package/dist/{chunk-H2OYWLOA.js → chunk-YOSQUY3M.js} +101 -35
  4. package/dist/chunk-YOSQUY3M.js.map +1 -0
  5. package/dist/core/index.cjs +101 -32
  6. package/dist/core/index.cjs.map +1 -1
  7. package/dist/core/index.d.cts +1 -1
  8. package/dist/core/index.d.ts +1 -1
  9. package/dist/core/index.js +1 -1
  10. package/dist/index.cjs +97 -31
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/modules/adaptercloud/index.cjs +14 -14
  16. package/dist/modules/adaptercloud/index.cjs.map +1 -1
  17. package/dist/modules/adaptercloud/index.js +1 -1
  18. package/dist/modules/artistrybase/index.cjs +14 -14
  19. package/dist/modules/artistrybase/index.cjs.map +1 -1
  20. package/dist/modules/artistrybase/index.js +1 -1
  21. package/dist/modules/assethandler/index.cjs +14 -14
  22. package/dist/modules/assethandler/index.cjs.map +1 -1
  23. package/dist/modules/assethandler/index.js +1 -1
  24. package/dist/modules/atheletebridge/index.cjs +14 -14
  25. package/dist/modules/atheletebridge/index.cjs.map +1 -1
  26. package/dist/modules/atheletebridge/index.js +1 -1
  27. package/dist/modules/auth/index.cjs +14 -14
  28. package/dist/modules/auth/index.cjs.map +1 -1
  29. package/dist/modules/auth/index.js +3 -3
  30. package/dist/modules/billing/index.cjs +14 -14
  31. package/dist/modules/billing/index.cjs.map +1 -1
  32. package/dist/modules/billing/index.js +1 -1
  33. package/dist/modules/brainyrich/index.cjs +14 -14
  34. package/dist/modules/brainyrich/index.cjs.map +1 -1
  35. package/dist/modules/brainyrich/index.js +1 -1
  36. package/dist/modules/buildmyiq/index.cjs +14 -14
  37. package/dist/modules/buildmyiq/index.cjs.map +1 -1
  38. package/dist/modules/buildmyiq/index.js +1 -1
  39. package/dist/modules/channels/index.cjs +14 -14
  40. package/dist/modules/channels/index.cjs.map +1 -1
  41. package/dist/modules/channels/index.js +1 -1
  42. package/dist/modules/collabkin/index.cjs +14 -14
  43. package/dist/modules/collabkin/index.cjs.map +1 -1
  44. package/dist/modules/collabkin/index.js +1 -1
  45. package/dist/modules/comradecircle/index.cjs +14 -14
  46. package/dist/modules/comradecircle/index.cjs.map +1 -1
  47. package/dist/modules/comradecircle/index.js +1 -1
  48. package/dist/modules/conversations/index.cjs +14 -14
  49. package/dist/modules/conversations/index.cjs.map +1 -1
  50. package/dist/modules/conversations/index.js +1 -1
  51. package/dist/modules/coolandlovely/index.cjs +14 -14
  52. package/dist/modules/coolandlovely/index.cjs.map +1 -1
  53. package/dist/modules/coolandlovely/index.js +1 -1
  54. package/dist/modules/cosmicintersection/index.cjs +14 -14
  55. package/dist/modules/cosmicintersection/index.cjs.map +1 -1
  56. package/dist/modules/cosmicintersection/index.js +1 -1
  57. package/dist/modules/crewfoundry/index.cjs +14 -14
  58. package/dist/modules/crewfoundry/index.cjs.map +1 -1
  59. package/dist/modules/crewfoundry/index.js +1 -1
  60. package/dist/modules/devportal/index.cjs +14 -14
  61. package/dist/modules/devportal/index.cjs.map +1 -1
  62. package/dist/modules/devportal/index.js +1 -1
  63. package/dist/modules/ecoimpacthub/index.cjs +14 -14
  64. package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
  65. package/dist/modules/ecoimpacthub/index.js +1 -1
  66. package/dist/modules/eventfullymanaged/index.cjs +14 -14
  67. package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
  68. package/dist/modules/eventfullymanaged/index.js +1 -1
  69. package/dist/modules/export/index.cjs +14 -14
  70. package/dist/modules/export/index.cjs.map +1 -1
  71. package/dist/modules/export/index.js +1 -1
  72. package/dist/modules/files/index.cjs +14 -14
  73. package/dist/modules/files/index.cjs.map +1 -1
  74. package/dist/modules/files/index.js +1 -1
  75. package/dist/modules/ggnomad/index.cjs +14 -14
  76. package/dist/modules/ggnomad/index.cjs.map +1 -1
  77. package/dist/modules/ggnomad/index.js +1 -1
  78. package/dist/modules/govcitizenhub/index.cjs +14 -14
  79. package/dist/modules/govcitizenhub/index.cjs.map +1 -1
  80. package/dist/modules/govcitizenhub/index.js +1 -1
  81. package/dist/modules/groups/index.cjs +14 -14
  82. package/dist/modules/groups/index.cjs.map +1 -1
  83. package/dist/modules/groups/index.js +1 -1
  84. package/dist/modules/headshotmarketing/index.cjs +14 -14
  85. package/dist/modules/headshotmarketing/index.cjs.map +1 -1
  86. package/dist/modules/headshotmarketing/index.js +1 -1
  87. package/dist/modules/health/index.cjs +21 -19
  88. package/dist/modules/health/index.cjs.map +1 -1
  89. package/dist/modules/health/index.js +1 -1
  90. package/dist/modules/hookmovies/index.cjs +14 -14
  91. package/dist/modules/hookmovies/index.cjs.map +1 -1
  92. package/dist/modules/hookmovies/index.js +1 -1
  93. package/dist/modules/housingvista/index.cjs +14 -14
  94. package/dist/modules/housingvista/index.cjs.map +1 -1
  95. package/dist/modules/housingvista/index.js +1 -1
  96. package/dist/modules/integrations/index.cjs +14 -14
  97. package/dist/modules/integrations/index.cjs.map +1 -1
  98. package/dist/modules/integrations/index.js +1 -1
  99. package/dist/modules/intelwatchtower/index.cjs +14 -14
  100. package/dist/modules/intelwatchtower/index.cjs.map +1 -1
  101. package/dist/modules/intelwatchtower/index.js +1 -1
  102. package/dist/modules/kadaikodi/index.cjs +14 -14
  103. package/dist/modules/kadaikodi/index.cjs.map +1 -1
  104. package/dist/modules/kadaikodi/index.js +1 -1
  105. package/dist/modules/labsofscience/index.cjs +14 -14
  106. package/dist/modules/labsofscience/index.cjs.map +1 -1
  107. package/dist/modules/labsofscience/index.js +1 -1
  108. package/dist/modules/manufacturedops/index.cjs +14 -14
  109. package/dist/modules/manufacturedops/index.cjs.map +1 -1
  110. package/dist/modules/manufacturedops/index.js +1 -1
  111. package/dist/modules/movethewheels/index.cjs +14 -14
  112. package/dist/modules/movethewheels/index.cjs.map +1 -1
  113. package/dist/modules/movethewheels/index.js +1 -1
  114. package/dist/modules/mybodyshield/index.cjs +14 -14
  115. package/dist/modules/mybodyshield/index.cjs.map +1 -1
  116. package/dist/modules/mybodyshield/index.js +1 -1
  117. package/dist/modules/notifications/index.cjs +14 -14
  118. package/dist/modules/notifications/index.cjs.map +1 -1
  119. package/dist/modules/notifications/index.js +1 -1
  120. package/dist/modules/organizations/index.cjs +14 -14
  121. package/dist/modules/organizations/index.cjs.map +1 -1
  122. package/dist/modules/organizations/index.js +1 -1
  123. package/dist/modules/planmagnet/index.cjs +14 -14
  124. package/dist/modules/planmagnet/index.cjs.map +1 -1
  125. package/dist/modules/planmagnet/index.js +1 -1
  126. package/dist/modules/products/index.cjs +14 -14
  127. package/dist/modules/products/index.cjs.map +1 -1
  128. package/dist/modules/products/index.js +1 -1
  129. package/dist/modules/proserviceworld/index.cjs +14 -14
  130. package/dist/modules/proserviceworld/index.cjs.map +1 -1
  131. package/dist/modules/proserviceworld/index.js +1 -1
  132. package/dist/modules/rbac/index.cjs +14 -14
  133. package/dist/modules/rbac/index.cjs.map +1 -1
  134. package/dist/modules/rbac/index.js +1 -1
  135. package/dist/modules/sandbox/index.cjs +14 -14
  136. package/dist/modules/sandbox/index.cjs.map +1 -1
  137. package/dist/modules/sandbox/index.js +1 -1
  138. package/dist/modules/scheduler/index.cjs +14 -14
  139. package/dist/modules/scheduler/index.cjs.map +1 -1
  140. package/dist/modules/scheduler/index.js +1 -1
  141. package/dist/modules/security/index.cjs +14 -14
  142. package/dist/modules/security/index.cjs.map +1 -1
  143. package/dist/modules/security/index.js +1 -1
  144. package/dist/modules/semanticfed/index.cjs +14 -14
  145. package/dist/modules/semanticfed/index.cjs.map +1 -1
  146. package/dist/modules/semanticfed/index.js +1 -1
  147. package/dist/modules/store/index.cjs +14 -14
  148. package/dist/modules/store/index.cjs.map +1 -1
  149. package/dist/modules/store/index.js +1 -1
  150. package/dist/modules/subscriberbot/index.cjs +14 -14
  151. package/dist/modules/subscriberbot/index.cjs.map +1 -1
  152. package/dist/modules/subscriberbot/index.js +1 -1
  153. package/dist/modules/support/index.cjs +14 -14
  154. package/dist/modules/support/index.cjs.map +1 -1
  155. package/dist/modules/support/index.js +1 -1
  156. package/dist/modules/tags/index.cjs +14 -14
  157. package/dist/modules/tags/index.cjs.map +1 -1
  158. package/dist/modules/tags/index.js +1 -1
  159. package/dist/modules/technospam/index.cjs +14 -14
  160. package/dist/modules/technospam/index.cjs.map +1 -1
  161. package/dist/modules/technospam/index.js +1 -1
  162. package/dist/modules/theculturepost/index.cjs +14 -14
  163. package/dist/modules/theculturepost/index.cjs.map +1 -1
  164. package/dist/modules/theculturepost/index.js +1 -1
  165. package/dist/modules/theglobalfuel/index.cjs +14 -14
  166. package/dist/modules/theglobalfuel/index.cjs.map +1 -1
  167. package/dist/modules/theglobalfuel/index.js +1 -1
  168. package/dist/modules/timecampus/index.cjs +21 -16
  169. package/dist/modules/timecampus/index.cjs.map +1 -1
  170. package/dist/modules/timecampus/index.js +8 -3
  171. package/dist/modules/timecampus/index.js.map +1 -1
  172. package/dist/modules/tours/index.cjs +14 -14
  173. package/dist/modules/tours/index.cjs.map +1 -1
  174. package/dist/modules/tours/index.js +1 -1
  175. package/dist/modules/vibecontrols/index.cjs +14 -14
  176. package/dist/modules/vibecontrols/index.cjs.map +1 -1
  177. package/dist/modules/vibecontrols/index.js +2 -2
  178. package/dist/modules/workspaces/index.cjs +14 -14
  179. package/dist/modules/workspaces/index.cjs.map +1 -1
  180. package/dist/modules/workspaces/index.js +1 -1
  181. package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
  182. package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
  183. package/package.json +1 -1
  184. package/dist/chunk-H2OYWLOA.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -7,6 +7,7 @@ var graphqlRequest = require('graphql-request');
7
7
  var fetch = require('cross-fetch');
8
8
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
9
9
  var types_js = require('@modelcontextprotocol/sdk/types.js');
10
+ var zod = require('zod');
10
11
  var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
11
12
  var crypto = require('crypto');
12
13
  var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
@@ -657,6 +658,97 @@ function toServerCapabilities(caps) {
657
658
  return out;
658
659
  }
659
660
 
661
+ // src/core/tool-name.ts
662
+ var MAX_TOOL_NAME_LENGTH = 63;
663
+ function assertSafeName(name, kind) {
664
+ if (name.length > MAX_TOOL_NAME_LENGTH) {
665
+ throw new McpInternalError(
666
+ `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`
667
+ );
668
+ }
669
+ return name;
670
+ }
671
+ function mcpToolName(productName, ...parts) {
672
+ if (!productName) {
673
+ throw new McpInternalError("mcpToolName: productName is required");
674
+ }
675
+ const name = [productName, ...parts].filter(Boolean).join("_");
676
+ return assertSafeName(name);
677
+ }
678
+ function mcpResourceUri(productName, ...parts) {
679
+ if (!productName) {
680
+ throw new McpInternalError("mcpResourceUri: productName is required");
681
+ }
682
+ return `${productName}://${parts.filter(Boolean).join("/")}`;
683
+ }
684
+ function mcpPromptName(productName, ...parts) {
685
+ if (!productName) {
686
+ throw new McpInternalError("mcpPromptName: productName is required");
687
+ }
688
+ return [productName, ...parts].filter(Boolean).join("-");
689
+ }
690
+ var DESTRUCTIVE_NAME_SEGMENT = /(?:^|_)delete(?:_|$)/i;
691
+ var READ_ONLY_NAME_SEGMENT = /(?:^|_)(?:list|get|search|check|read|count|stats|by_date)(?:_|$)/i;
692
+ function inferDestructiveHint(toolName) {
693
+ return DESTRUCTIVE_NAME_SEGMENT.test(toolName);
694
+ }
695
+ function inferReadOnlyHint(toolName) {
696
+ return !inferDestructiveHint(toolName) && READ_ONLY_NAME_SEGMENT.test(toolName);
697
+ }
698
+
699
+ // src/core/tool-governance.ts
700
+ var CONFIRM_FIELD_DESCRIPTION = "Must be true to execute this destructive tool. The call is rejected (no changes made) if omitted or false.";
701
+ function resolveAnnotations(name, declared) {
702
+ const destructiveHint = declared?.destructiveHint ?? inferDestructiveHint(name);
703
+ const readOnlyHint = declared?.readOnlyHint ?? (destructiveHint ? false : inferReadOnlyHint(name));
704
+ return { ...declared, destructiveHint, readOnlyHint };
705
+ }
706
+ function unconfirmedDestructiveResult(name) {
707
+ return {
708
+ content: [
709
+ {
710
+ type: "text",
711
+ text: `'${name}' is a destructive action and was NOT executed. Re-call with confirm: true once you intend to proceed.`
712
+ }
713
+ ],
714
+ isError: true
715
+ };
716
+ }
717
+ function wrapDestructiveHandler(name, handler) {
718
+ return async (...callbackArgs) => {
719
+ const hasArgs = callbackArgs.length === 2;
720
+ const rawArgs = hasArgs ? callbackArgs[0] : {};
721
+ if (rawArgs["confirm"] !== true) {
722
+ return unconfirmedDestructiveResult(name);
723
+ }
724
+ const forwardedArgs = { ...rawArgs };
725
+ delete forwardedArgs["confirm"];
726
+ const forwardedCallbackArgs = hasArgs ? [forwardedArgs, callbackArgs[1]] : callbackArgs;
727
+ return handler(...forwardedCallbackArgs);
728
+ };
729
+ }
730
+ function wrapServerWithToolGovernance(server, options = {}) {
731
+ const enforceConfirmation = options.enforceDestructiveConfirmation ?? false;
732
+ const target = server;
733
+ const originalRegisterTool = target.registerTool.bind(target);
734
+ target.registerTool = (name, config, handler) => {
735
+ const annotations = resolveAnnotations(name, config.annotations);
736
+ if (!enforceConfirmation || !annotations.destructiveHint) {
737
+ return originalRegisterTool(name, { ...config, annotations }, handler);
738
+ }
739
+ const gatedInputSchema = {
740
+ ...config.inputSchema ?? {},
741
+ confirm: zod.z.boolean().optional().describe(CONFIRM_FIELD_DESCRIPTION)
742
+ };
743
+ return originalRegisterTool(
744
+ name,
745
+ { ...config, inputSchema: gatedInputSchema, annotations },
746
+ wrapDestructiveHandler(name, handler)
747
+ );
748
+ };
749
+ return server;
750
+ }
751
+
660
752
  // src/core/server.ts
661
753
  var MCP_TO_LOGGER_LEVEL = {
662
754
  debug: "debug",
@@ -680,6 +772,9 @@ function createMcpServer(ctx, modules, opts) {
680
772
  { name: opts.name, version: opts.version },
681
773
  { capabilities: toServerCapabilities(capabilities) }
682
774
  );
775
+ wrapServerWithToolGovernance(server, {
776
+ enforceDestructiveConfirmation: opts.enforceDestructiveConfirmation
777
+ });
683
778
  ctx._internal.serverRef.current = server;
684
779
  const inner = server.server ?? server;
685
780
  if (typeof inner.setRequestHandler === "function") {
@@ -754,7 +849,8 @@ function registerTool(server, ctx, name, metadata, handler) {
754
849
  const sdkConfig = {
755
850
  title: metadata.title,
756
851
  description: metadata.description,
757
- ...metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}
852
+ ...metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {},
853
+ ...metadata.annotations ? { annotations: metadata.annotations } : {}
758
854
  };
759
855
  const wrapped = async (...callbackArgs) => {
760
856
  const hasArgs = callbackArgs.length === 2;
@@ -805,36 +901,6 @@ function stringifyCause(cause) {
805
901
  return String(cause);
806
902
  }
807
903
  }
808
-
809
- // src/core/tool-name.ts
810
- var MAX_TOOL_NAME_LENGTH = 63;
811
- function assertSafeName(name, kind) {
812
- if (name.length > MAX_TOOL_NAME_LENGTH) {
813
- throw new McpInternalError(
814
- `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`
815
- );
816
- }
817
- return name;
818
- }
819
- function mcpToolName(productName, ...parts) {
820
- if (!productName) {
821
- throw new McpInternalError("mcpToolName: productName is required");
822
- }
823
- const name = [productName, ...parts].filter(Boolean).join("_");
824
- return assertSafeName(name);
825
- }
826
- function mcpResourceUri(productName, ...parts) {
827
- if (!productName) {
828
- throw new McpInternalError("mcpResourceUri: productName is required");
829
- }
830
- return `${productName}://${parts.filter(Boolean).join("/")}`;
831
- }
832
- function mcpPromptName(productName, ...parts) {
833
- if (!productName) {
834
- throw new McpInternalError("mcpPromptName: productName is required");
835
- }
836
- return [productName, ...parts].filter(Boolean).join("-");
837
- }
838
904
  async function startStdioServer(server, ctx, _opts = {}) {
839
905
  ctx.logger.info("Starting MCP server with stdio transport", {
840
906
  name: ctx.serverName,