@burdenoff/mcp-libs 2026.802.1 → 2026.804.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.
@@ -504,7 +504,12 @@ function registerCircleTools(server, ctx, track) {
504
504
  {
505
505
  title: "Archive Circle",
506
506
  description: "Archive (soft-delete) a circle. Returns true on success.",
507
- inputSchema: { id: z.string().describe("Circle ID") }
507
+ inputSchema: { id: z.string().describe("Circle ID") },
508
+ // BOFF-5868/BOFF-3907: the fleet destructiveHint inference (tool-name.ts)
509
+ // only matches a `delete` name segment, so an irreversible `archive` call
510
+ // needs an explicit annotation to be caught by the confirmation gate that
511
+ // comradecircle-mcp/src/index.ts enables via enforceDestructiveConfirmation.
512
+ annotations: { destructiveHint: true }
508
513
  },
509
514
  async ({ id }) => {
510
515
  try {
@@ -641,7 +646,12 @@ function registerMembershipTools(server, ctx, track) {
641
646
  {
642
647
  title: "Leave Circle",
643
648
  description: "Leave a circle as the calling member. Returns true on success.",
644
- inputSchema: { circleId: z.string().describe("Circle ID to leave") }
649
+ inputSchema: { circleId: z.string().describe("Circle ID to leave") },
650
+ // BOFF-5868/BOFF-3907: `leave` is not caught by the fleet's name-based
651
+ // destructiveHint inference. Gated conservatively — a sole OWNER leaving
652
+ // orphans the circle, and an unattended agent leaving communities on the
653
+ // user's behalf is exactly the outcome the confirmation gate exists for.
654
+ annotations: { destructiveHint: true }
645
655
  },
646
656
  async ({ circleId }) => {
647
657
  try {
@@ -925,7 +935,10 @@ function registerPostTools(server, ctx, track) {
925
935
  {
926
936
  title: "Remove Post",
927
937
  description: "Remove (soft-delete) a post. Returns true on success.",
928
- inputSchema: { id: z.string().describe("Post ID") }
938
+ inputSchema: { id: z.string().describe("Post ID") },
939
+ // BOFF-5868/BOFF-3907: see circles_archive — `remove` is not caught by
940
+ // the fleet's name-based destructiveHint inference.
941
+ annotations: { destructiveHint: true }
929
942
  },
930
943
  async ({ id }) => {
931
944
  try {