@burdenoff/mcp-libs 2026.819.1 → 2026.820.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.
|
@@ -317,7 +317,8 @@ function registerProgramTools(server, ctx, track) {
|
|
|
317
317
|
{
|
|
318
318
|
title: "Get Training Program",
|
|
319
319
|
description: "Fetch a single Mybodyshield training program by ID, including its nested workouts and exercises.",
|
|
320
|
-
inputSchema: { id: z.string().describe("Program ID") }
|
|
320
|
+
inputSchema: { id: z.string().describe("Program ID") },
|
|
321
|
+
annotations: { readOnlyHint: true }
|
|
321
322
|
},
|
|
322
323
|
async ({ id }) => {
|
|
323
324
|
try {
|
|
@@ -343,7 +344,8 @@ function registerProgramTools(server, ctx, track) {
|
|
|
343
344
|
limit: z.number().int().optional().describe("Page size (default 50)"),
|
|
344
345
|
offset: z.number().int().optional().describe("Pagination offset (default 0)"),
|
|
345
346
|
cursor: z.string().optional().describe("Opaque pagination cursor")
|
|
346
|
-
}
|
|
347
|
+
},
|
|
348
|
+
annotations: { readOnlyHint: true }
|
|
347
349
|
},
|
|
348
350
|
async ({ memberId, status, limit, offset, cursor }) => {
|
|
349
351
|
try {
|
|
@@ -537,7 +539,8 @@ function registerWorkoutTools(server, ctx, track) {
|
|
|
537
539
|
{
|
|
538
540
|
title: "List Program Workouts",
|
|
539
541
|
description: "List the workouts for a program (ordered), each with its nested exercises.",
|
|
540
|
-
inputSchema: { programId: z.string().describe("Program ID") }
|
|
542
|
+
inputSchema: { programId: z.string().describe("Program ID") },
|
|
543
|
+
annotations: { readOnlyHint: true }
|
|
541
544
|
},
|
|
542
545
|
async ({ programId }) => {
|
|
543
546
|
try {
|
|
@@ -652,7 +655,8 @@ function registerSessionTools(server, ctx, track) {
|
|
|
652
655
|
{
|
|
653
656
|
title: "Get Workout Session",
|
|
654
657
|
description: "Fetch a single workout session by ID, including its logged sets.",
|
|
655
|
-
inputSchema: { id: z.string().describe("Workout session ID") }
|
|
658
|
+
inputSchema: { id: z.string().describe("Workout session ID") },
|
|
659
|
+
annotations: { readOnlyHint: true }
|
|
656
660
|
},
|
|
657
661
|
async ({ id }) => {
|
|
658
662
|
try {
|
|
@@ -678,7 +682,8 @@ function registerSessionTools(server, ctx, track) {
|
|
|
678
682
|
limit: z.number().int().optional().describe("Page size (default 50)"),
|
|
679
683
|
offset: z.number().int().optional().describe("Pagination offset (default 0)"),
|
|
680
684
|
cursor: z.string().optional().describe("Opaque pagination cursor")
|
|
681
|
-
}
|
|
685
|
+
},
|
|
686
|
+
annotations: { readOnlyHint: true }
|
|
682
687
|
},
|
|
683
688
|
async ({ programId, status, limit, offset, cursor }) => {
|
|
684
689
|
try {
|
|
@@ -804,7 +809,8 @@ function registerNutritionTools(server, ctx, track) {
|
|
|
804
809
|
{
|
|
805
810
|
title: "Get Nutrition Plan",
|
|
806
811
|
description: "Fetch a single nutrition plan by ID, including its logged meals.",
|
|
807
|
-
inputSchema: { id: z.string().describe("Nutrition plan ID") }
|
|
812
|
+
inputSchema: { id: z.string().describe("Nutrition plan ID") },
|
|
813
|
+
annotations: { readOnlyHint: true }
|
|
808
814
|
},
|
|
809
815
|
async ({ id }) => {
|
|
810
816
|
try {
|
|
@@ -826,7 +832,8 @@ function registerNutritionTools(server, ctx, track) {
|
|
|
826
832
|
description: "Fetch the active nutrition plan for a member (defaults to the calling actor when memberId is omitted). Returns null when there's no active plan.",
|
|
827
833
|
inputSchema: {
|
|
828
834
|
memberId: z.string().optional().describe("Member (user) ID (default: calling actor)")
|
|
829
|
-
}
|
|
835
|
+
},
|
|
836
|
+
annotations: { readOnlyHint: true }
|
|
830
837
|
},
|
|
831
838
|
async ({ memberId }) => {
|
|
832
839
|
try {
|
|
@@ -955,7 +962,11 @@ function registerNutritionTools(server, ctx, track) {
|
|
|
955
962
|
{
|
|
956
963
|
title: "Activate Nutrition Plan",
|
|
957
964
|
description: "Make a nutrition plan the active plan for its member (deactivating any other active plan).",
|
|
958
|
-
inputSchema: { id: z.string().describe("Nutrition plan ID") }
|
|
965
|
+
inputSchema: { id: z.string().describe("Nutrition plan ID") },
|
|
966
|
+
// BOFF-3859: activation implicitly deactivates the prior active plan, so
|
|
967
|
+
// this is a destructive side-effect mutation despite the absence of a
|
|
968
|
+
// `delete` segment in the tool name.
|
|
969
|
+
annotations: { destructiveHint: true }
|
|
959
970
|
},
|
|
960
971
|
async ({ id }) => {
|
|
961
972
|
try {
|
|
@@ -977,7 +988,8 @@ function registerNutritionTools(server, ctx, track) {
|
|
|
977
988
|
inputSchema: {
|
|
978
989
|
memberId: z.string().optional().describe("Member (user) ID (default: calling actor)"),
|
|
979
990
|
date: z.string().optional().describe("Day to roll up (ISO-8601 DateTime; default: today)")
|
|
980
|
-
}
|
|
991
|
+
},
|
|
992
|
+
annotations: { readOnlyHint: true }
|
|
981
993
|
},
|
|
982
994
|
async ({ memberId, date }) => {
|
|
983
995
|
try {
|
|
@@ -1004,7 +1016,8 @@ function registerMealTools(server, ctx, track) {
|
|
|
1004
1016
|
limit: z.number().int().optional().describe("Page size (default 50)"),
|
|
1005
1017
|
offset: z.number().int().optional().describe("Pagination offset (default 0)"),
|
|
1006
1018
|
cursor: z.string().optional().describe("Opaque pagination cursor")
|
|
1007
|
-
}
|
|
1019
|
+
},
|
|
1020
|
+
annotations: { readOnlyHint: true }
|
|
1008
1021
|
},
|
|
1009
1022
|
async ({ planId, mealType, limit, offset, cursor }) => {
|
|
1010
1023
|
try {
|
|
@@ -1078,7 +1091,11 @@ function registerMealTools(server, ctx, track) {
|
|
|
1078
1091
|
{
|
|
1079
1092
|
title: "Delete Meal Log",
|
|
1080
1093
|
description: "Delete a logged meal by ID. Returns true on success.",
|
|
1081
|
-
inputSchema: { id: z.string().describe("Meal log ID") }
|
|
1094
|
+
inputSchema: { id: z.string().describe("Meal log ID") },
|
|
1095
|
+
// BOFF-3859: hard delete of a logged meal. The name heuristic already
|
|
1096
|
+
// treats `*_delete` as destructive, but we declare it explicitly for the
|
|
1097
|
+
// audit trail.
|
|
1098
|
+
annotations: { destructiveHint: true }
|
|
1082
1099
|
},
|
|
1083
1100
|
async ({ id }) => {
|
|
1084
1101
|
try {
|
|
@@ -1101,7 +1118,8 @@ function registerGoalTools(server, ctx, track) {
|
|
|
1101
1118
|
{
|
|
1102
1119
|
title: "Get Goal",
|
|
1103
1120
|
description: "Fetch a single goal by ID.",
|
|
1104
|
-
inputSchema: { id: z.string().describe("Goal ID") }
|
|
1121
|
+
inputSchema: { id: z.string().describe("Goal ID") },
|
|
1122
|
+
annotations: { readOnlyHint: true }
|
|
1105
1123
|
},
|
|
1106
1124
|
async ({ id }) => {
|
|
1107
1125
|
try {
|
|
@@ -1127,7 +1145,8 @@ function registerGoalTools(server, ctx, track) {
|
|
|
1127
1145
|
limit: z.number().int().optional().describe("Page size (default 50)"),
|
|
1128
1146
|
offset: z.number().int().optional().describe("Pagination offset (default 0)"),
|
|
1129
1147
|
cursor: z.string().optional().describe("Opaque pagination cursor")
|
|
1130
|
-
}
|
|
1148
|
+
},
|
|
1149
|
+
annotations: { readOnlyHint: true }
|
|
1131
1150
|
},
|
|
1132
1151
|
async ({ memberId, status, limit, offset, cursor }) => {
|
|
1133
1152
|
try {
|
|
@@ -1275,7 +1294,8 @@ function registerMetricTools(server, ctx, track) {
|
|
|
1275
1294
|
limit: z.number().int().optional().describe("Page size (default 50)"),
|
|
1276
1295
|
offset: z.number().int().optional().describe("Pagination offset (default 0)"),
|
|
1277
1296
|
cursor: z.string().optional().describe("Opaque pagination cursor")
|
|
1278
|
-
}
|
|
1297
|
+
},
|
|
1298
|
+
annotations: { readOnlyHint: true }
|
|
1279
1299
|
},
|
|
1280
1300
|
async ({ memberId, type, limit, offset, cursor }) => {
|
|
1281
1301
|
try {
|
|
@@ -1336,7 +1356,8 @@ function registerRecoveryTools(server, ctx, track) {
|
|
|
1336
1356
|
inputSchema: {
|
|
1337
1357
|
memberId: z.string().optional().describe("Filter by member (user) ID"),
|
|
1338
1358
|
metric: RecoveryMetricEnum.optional().describe("Filter by recovery metric")
|
|
1339
|
-
}
|
|
1359
|
+
},
|
|
1360
|
+
annotations: { readOnlyHint: true }
|
|
1340
1361
|
},
|
|
1341
1362
|
async ({ memberId, metric }) => {
|
|
1342
1363
|
try {
|
|
@@ -1393,7 +1414,8 @@ function registerCoachingTools(server, ctx, track) {
|
|
|
1393
1414
|
inputSchema: {
|
|
1394
1415
|
memberId: z.string().optional().describe("Filter by member (user) ID"),
|
|
1395
1416
|
status: CoachingStatusEnum.optional().describe("Filter by coaching status")
|
|
1396
|
-
}
|
|
1417
|
+
},
|
|
1418
|
+
annotations: { readOnlyHint: true }
|
|
1397
1419
|
},
|
|
1398
1420
|
async ({ memberId, status }) => {
|
|
1399
1421
|
try {
|
|
@@ -1479,7 +1501,8 @@ function registerHealthTools(server, ctx, track) {
|
|
|
1479
1501
|
{
|
|
1480
1502
|
title: "Mybodyshield Health Check",
|
|
1481
1503
|
description: "Public liveness/identity probe for the Mybodyshield subgraph (mybHealth). Requires no authentication.",
|
|
1482
|
-
inputSchema: {}
|
|
1504
|
+
inputSchema: {},
|
|
1505
|
+
annotations: { readOnlyHint: true }
|
|
1483
1506
|
},
|
|
1484
1507
|
async () => {
|
|
1485
1508
|
try {
|