@burdenoff/mcp-libs 2026.825.3 → 2026.902.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.
@@ -665,7 +665,10 @@ function registerTopicTools(server, ctx, track) {
665
665
  {
666
666
  title: "Archive Topic",
667
667
  description: "Archive (soft-delete) a topic. Returns true on success.",
668
- inputSchema: { id: zod.z.string().describe("Topic ID") }
668
+ inputSchema: { id: zod.z.string().describe("Topic ID") },
669
+ // BOFF-6784: name doesn't match the `delete` heuristic, so declare the
670
+ // destructive annotation explicitly so the confirmation gate catches it.
671
+ annotations: { destructiveHint: true }
669
672
  },
670
673
  async ({ id }) => {
671
674
  try {
@@ -947,7 +950,10 @@ function registerArchiveTools(server, ctx, track) {
947
950
  {
948
951
  title: "Archive Archive Item",
949
952
  description: "Archive (soft-delete) an archive item. Returns true on success.",
950
- inputSchema: { id: zod.z.string().describe("Archive item ID") }
953
+ inputSchema: { id: zod.z.string().describe("Archive item ID") },
954
+ // BOFF-6784: `archive` is not matched by the name-based `delete`
955
+ // heuristic, so declare the destructive annotation explicitly.
956
+ annotations: { destructiveHint: true }
951
957
  },
952
958
  async ({ id }) => {
953
959
  try {
@@ -1194,7 +1200,10 @@ function registerDiscussionTools(server, ctx, track) {
1194
1200
  {
1195
1201
  title: "Lock Discussion",
1196
1202
  description: "Lock a discussion thread to prevent further replies.",
1197
- inputSchema: { id: zod.z.string().describe("Discussion ID") }
1203
+ inputSchema: { id: zod.z.string().describe("Discussion ID") },
1204
+ // BOFF-6784: locking is an irreversible state change from an MCP
1205
+ // perspective; treat it as destructive so the confirmation gate applies.
1206
+ annotations: { destructiveHint: true }
1198
1207
  },
1199
1208
  async ({ id }) => {
1200
1209
  try {
@@ -1265,7 +1274,10 @@ function registerReplyTools(server, ctx, track) {
1265
1274
  inputSchema: {
1266
1275
  id: zod.z.string().describe("Reply ID"),
1267
1276
  status: ModerationStatusEnum.describe("New moderation status")
1268
- }
1277
+ },
1278
+ // BOFF-6784: moderation can remove/suppress user-generated content;
1279
+ // declare destructive so the confirmation gate catches it.
1280
+ annotations: { destructiveHint: true }
1269
1281
  },
1270
1282
  async ({ id, status }) => {
1271
1283
  try {