@davidwoods/skylight-mcp 1.7.0 → 1.8.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 (61) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +635 -584
  3. package/THIRD_PARTY_NOTICES.md +38 -38
  4. package/dist/api/client.d.ts +5 -0
  5. package/dist/api/client.d.ts.map +1 -1
  6. package/dist/api/client.js +9 -2
  7. package/dist/api/client.js.map +1 -1
  8. package/dist/api/credential-store.d.ts.map +1 -1
  9. package/dist/api/credential-store.js +2 -1
  10. package/dist/api/credential-store.js.map +1 -1
  11. package/dist/api/endpoints/categories.d.ts +6 -6
  12. package/dist/api/endpoints/categories.d.ts.map +1 -1
  13. package/dist/api/endpoints/categories.js +6 -13
  14. package/dist/api/endpoints/categories.js.map +1 -1
  15. package/dist/api/endpoints/chores.d.ts +8 -0
  16. package/dist/api/endpoints/chores.d.ts.map +1 -1
  17. package/dist/api/endpoints/chores.js +9 -0
  18. package/dist/api/endpoints/chores.js.map +1 -1
  19. package/dist/api/endpoints/taskbox.d.ts +8 -0
  20. package/dist/api/endpoints/taskbox.d.ts.map +1 -1
  21. package/dist/api/endpoints/taskbox.js +17 -0
  22. package/dist/api/endpoints/taskbox.js.map +1 -1
  23. package/dist/api/types.d.ts +14 -0
  24. package/dist/api/types.d.ts.map +1 -1
  25. package/dist/cli.d.ts.map +1 -1
  26. package/dist/cli.js +9 -8
  27. package/dist/cli.js.map +1 -1
  28. package/dist/config.js +23 -23
  29. package/dist/doctor.d.ts +10 -0
  30. package/dist/doctor.d.ts.map +1 -1
  31. package/dist/doctor.js +23 -7
  32. package/dist/doctor.js.map +1 -1
  33. package/dist/tools/calendar.d.ts +5 -0
  34. package/dist/tools/calendar.d.ts.map +1 -1
  35. package/dist/tools/calendar.js +107 -71
  36. package/dist/tools/calendar.js.map +1 -1
  37. package/dist/tools/chores.d.ts.map +1 -1
  38. package/dist/tools/chores.js +53 -81
  39. package/dist/tools/chores.js.map +1 -1
  40. package/dist/tools/family.js +17 -17
  41. package/dist/tools/lists.js +85 -85
  42. package/dist/tools/meals.js +102 -102
  43. package/dist/tools/messages.d.ts.map +1 -1
  44. package/dist/tools/messages.js +37 -49
  45. package/dist/tools/messages.js.map +1 -1
  46. package/dist/tools/misc.js +14 -14
  47. package/dist/tools/photos.js +6 -6
  48. package/dist/tools/planning.d.ts.map +1 -1
  49. package/dist/tools/planning.js +24 -23
  50. package/dist/tools/planning.js.map +1 -1
  51. package/dist/tools/registry.d.ts.map +1 -1
  52. package/dist/tools/registry.js +1 -0
  53. package/dist/tools/registry.js.map +1 -1
  54. package/dist/tools/rewards.d.ts.map +1 -1
  55. package/dist/tools/rewards.js +74 -90
  56. package/dist/tools/rewards.js.map +1 -1
  57. package/dist/tools/tasks.d.ts.map +1 -1
  58. package/dist/tools/tasks.js +45 -10
  59. package/dist/tools/tasks.js.map +1 -1
  60. package/dist/utils/errors.js +16 -16
  61. package/package.json +78 -78
@@ -1,17 +1,17 @@
1
1
  import { attributesOf } from "../api/endpoints/shape.js";
2
2
  import { z } from "zod";
3
3
  import { getRewards, getRewardPoints, createReward, updateReward, deleteReward, redeemReward, unredeemReward, } from "../api/endpoints/rewards.js";
4
- import { findCategoryByName } from "../api/endpoints/categories.js";
4
+ import { resolveProfile } from "../api/endpoints/categories.js";
5
5
  import { formatErrorForMcp } from "../utils/errors.js";
6
6
  export function registerRewardTools(server) {
7
7
  // get_rewards tool
8
- server.tool("get_rewards", `Get available rewards that can be redeemed with reward points.
9
-
10
- For family gamification - shows rewards that family members can earn.
11
-
12
- Use this to answer:
13
- - "What rewards can we redeem?"
14
- - "What can the kids earn?"
8
+ server.tool("get_rewards", `Get available rewards that can be redeemed with reward points.
9
+
10
+ For family gamification - shows rewards that family members can earn.
11
+
12
+ Use this to answer:
13
+ - "What rewards can we redeem?"
14
+ - "What can the kids earn?"
15
15
  - "Show available rewards"`, {
16
16
  redeemedSince: z
17
17
  .string()
@@ -66,13 +66,13 @@ Use this to answer:
66
66
  }
67
67
  });
68
68
  // get_reward_points tool
69
- server.tool("get_reward_points", `Get reward points balance for family members.
70
-
71
- Shows how many reward points each family member has earned.
72
-
73
- Use this to answer:
74
- - "How many points does [name] have?"
75
- - "Show reward points balance"
69
+ server.tool("get_reward_points", `Get reward points balance for family members.
70
+
71
+ Shows how many reward points each family member has earned.
72
+
73
+ Use this to answer:
74
+ - "How many points does [name] have?"
75
+ - "Show reward points balance"
76
76
  - "Who has the most points?"`, {}, async () => {
77
77
  try {
78
78
  const points = await getRewardPoints();
@@ -120,20 +120,20 @@ Use this to answer:
120
120
  }
121
121
  });
122
122
  // create_reward tool
123
- server.tool("create_reward", `Create a new reward that can be redeemed with points (Plus subscription required).
124
-
125
- Use this when:
126
- - Adding a new reward: "Create a reward for 30 minutes of screen time"
127
- - Setting up family incentives: "Add a pizza night reward worth 100 points"
128
-
129
- Parameters:
130
- - name (required): Reward name (e.g., "30 min Screen Time")
131
- - pointValue (required): Points needed to redeem this reward
132
- - description: Additional details about the reward
133
- - emojiIcon: Emoji to display with the reward
134
- - assignee: Family member name to assign this reward to
135
- - respawnOnRedemption: If true, reward can be redeemed multiple times
136
-
123
+ server.tool("create_reward", `Create a new reward that can be redeemed with points (Plus subscription required).
124
+
125
+ Use this when:
126
+ - Adding a new reward: "Create a reward for 30 minutes of screen time"
127
+ - Setting up family incentives: "Add a pizza night reward worth 100 points"
128
+
129
+ Parameters:
130
+ - name (required): Reward name (e.g., "30 min Screen Time")
131
+ - pointValue (required): Points needed to redeem this reward
132
+ - description: Additional details about the reward
133
+ - emojiIcon: Emoji to display with the reward
134
+ - assignee: Family member name to assign this reward to
135
+ - respawnOnRedemption: If true, reward can be redeemed multiple times
136
+
137
137
  Returns: The created reward details.`, {
138
138
  name: z.string().describe("Reward name (e.g., '30 min Screen Time')"),
139
139
  pointValue: z.number().describe("Points needed to redeem this reward"),
@@ -144,16 +144,8 @@ Returns: The created reward details.`, {
144
144
  }, async ({ name, pointValue, description, emojiIcon, assignee, respawnOnRedemption }) => {
145
145
  try {
146
146
  let categoryIds;
147
- if (assignee) {
148
- const category = await findCategoryByName(assignee);
149
- if (!category) {
150
- return {
151
- content: [{ type: "text", text: `Could not find family member "${assignee}"` }],
152
- isError: true,
153
- };
154
- }
155
- categoryIds = [category.id];
156
- }
147
+ if (assignee)
148
+ categoryIds = [(await resolveProfile(assignee)).id];
157
149
  const reward = await createReward({
158
150
  name,
159
151
  pointValue,
@@ -179,19 +171,19 @@ Returns: The created reward details.`, {
179
171
  }
180
172
  });
181
173
  // update_reward tool
182
- server.tool("update_reward", `Update an existing reward (Plus subscription required).
183
-
184
- Use this when:
185
- - Changing point value: "Make the screen time reward cost 50 points"
186
- - Updating reward details: "Add a description to the pizza reward"
187
-
188
- Parameters:
189
- - rewardId (required): ID of the reward (from get_rewards)
190
- - name: New reward name
191
- - pointValue: New point cost
192
- - description: Updated description
193
- - emojiIcon: Updated emoji
194
-
174
+ server.tool("update_reward", `Update an existing reward (Plus subscription required).
175
+
176
+ Use this when:
177
+ - Changing point value: "Make the screen time reward cost 50 points"
178
+ - Updating reward details: "Add a description to the pizza reward"
179
+
180
+ Parameters:
181
+ - rewardId (required): ID of the reward (from get_rewards)
182
+ - name: New reward name
183
+ - pointValue: New point cost
184
+ - description: Updated description
185
+ - emojiIcon: Updated emoji
186
+
195
187
  Returns: The updated reward details.`, {
196
188
  rewardId: z.string().describe("ID of the reward to update"),
197
189
  name: z.string().optional().describe("New reward name"),
@@ -230,15 +222,15 @@ Returns: The updated reward details.`, {
230
222
  }
231
223
  });
232
224
  // delete_reward tool
233
- server.tool("delete_reward", `Delete a reward (Plus subscription required).
234
-
235
- Use this when:
236
- - Removing an old reward
237
- - Cleaning up unused rewards
238
-
239
- Parameters:
240
- - rewardId (required): ID of the reward to delete (from get_rewards)
241
-
225
+ server.tool("delete_reward", `Delete a reward (Plus subscription required).
226
+
227
+ Use this when:
228
+ - Removing an old reward
229
+ - Cleaning up unused rewards
230
+
231
+ Parameters:
232
+ - rewardId (required): ID of the reward to delete (from get_rewards)
233
+
242
234
  Note: This permanently removes the reward.`, {
243
235
  rewardId: z.string().describe("ID of the reward to delete"),
244
236
  }, async ({ rewardId }) => {
@@ -261,32 +253,24 @@ Note: This permanently removes the reward.`, {
261
253
  }
262
254
  });
263
255
  // redeem_reward tool
264
- server.tool("redeem_reward", `Redeem a reward using points (Plus subscription required).
265
-
266
- Use this when:
267
- - A family member wants to cash in points: "Redeem the screen time reward for Johnny"
268
- - Claiming an earned reward
269
-
270
- Parameters:
271
- - rewardId (required): ID of the reward to redeem (from get_rewards)
272
- - assignee: Family member redeeming the reward (uses their points)
273
-
256
+ server.tool("redeem_reward", `Redeem a reward using points (Plus subscription required).
257
+
258
+ Use this when:
259
+ - A family member wants to cash in points: "Redeem the screen time reward for Johnny"
260
+ - Claiming an earned reward
261
+
262
+ Parameters:
263
+ - rewardId (required): ID of the reward to redeem (from get_rewards)
264
+ - assignee: Family member redeeming the reward (uses their points)
265
+
274
266
  Returns: The redeemed reward details.`, {
275
267
  rewardId: z.string().describe("ID of the reward to redeem"),
276
268
  assignee: z.string().optional().describe("Family member redeeming the reward"),
277
269
  }, async ({ rewardId, assignee }) => {
278
270
  try {
279
271
  let categoryId;
280
- if (assignee) {
281
- const category = await findCategoryByName(assignee);
282
- if (!category) {
283
- return {
284
- content: [{ type: "text", text: `Could not find family member "${assignee}"` }],
285
- isError: true,
286
- };
287
- }
288
- categoryId = category.id;
289
- }
272
+ if (assignee)
273
+ categoryId = (await resolveProfile(assignee)).id;
290
274
  const reward = await redeemReward(rewardId, categoryId);
291
275
  return {
292
276
  content: [
@@ -305,15 +289,15 @@ Returns: The redeemed reward details.`, {
305
289
  }
306
290
  });
307
291
  // unredeem_reward tool
308
- server.tool("unredeem_reward", `Cancel a reward redemption (Plus subscription required).
309
-
310
- Use this when:
311
- - A redemption was made by mistake
312
- - Undoing a reward claim
313
-
314
- Parameters:
315
- - rewardId (required): ID of the reward to unredeem
316
-
292
+ server.tool("unredeem_reward", `Cancel a reward redemption (Plus subscription required).
293
+
294
+ Use this when:
295
+ - A redemption was made by mistake
296
+ - Undoing a reward claim
297
+
298
+ Parameters:
299
+ - rewardId (required): ID of the reward to unredeem
300
+
317
301
  Returns: The unredeemed reward details.`, {
318
302
  rewardId: z.string().describe("ID of the reward to unredeem"),
319
303
  }, async ({ rewardId }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../src/tools/rewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,mBAAmB;IACnB,MAAM,CAAC,IAAI,CACT,aAAa,EACb;;;;;;;2BAOuB,EACvB;QACE,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;gBAC/B,aAAa,EAAE,aAAa;aAC7B,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mBAAmB;yBAC1B;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,OAAO;iBACvB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACd,MAAM,KAAK,GAAG,CAAC,iBAAiB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;gBAE9C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;gBAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,UAAU,EAAE;qBAC5C;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;qBAC/B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,yBAAyB;IACzB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB;;;;;;;6BAOyB,EACzB,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;YAEvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yBAAyB;yBAChC;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,MAAM;iBACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,KAAK,GAAG,CAAC,iBAAiB,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;gBAE7C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,qBAAqB,UAAU,EAAE;qBACxC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;qBAC/B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,eAAe,EACf;;;;;;;;;;;;;;qCAciC,EACjC;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC9E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAClF,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACtG,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,EAAE;QACpF,IAAI,CAAC;YACH,IAAI,WAAiC,CAAC;YACtC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iCAAiC,QAAQ,GAAG,EAAE,CAAC;wBACxF,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,WAAW,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAChC,IAAI;gBACJ,UAAU;gBACV,WAAW;gBACX,SAAS;gBACT,WAAW;gBACX,mBAAmB;aACpB,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,mBAAmB,IAAI,WAAW,UAAU,gBAAgB,MAAM,CAAC,EAAE,GAAG;qBAC/E;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,eAAe,EACf;;;;;;;;;;;;;qCAaiC,EACjC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACvD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC7F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACrF,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACvF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,EAAE;QACpF,IAAI,CAAC;YACH,MAAM,OAAO,GAAuC,EAAE,CAAC;YACvD,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YAC5C,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YAC9D,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;YACjE,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3D,IAAI,mBAAmB,KAAK,SAAS;gBAAE,OAAO,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAEzF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB,MAAM,CAAC,EAAE,GAAG;qBAC1C;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,eAAe,EACf;;;;;;;;;2CASuC,EACvC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB,QAAQ,GAAG;qBACzC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,eAAe,EACf;;;;;;;;;;sCAUkC,EAClC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KAC/E,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,IAAI,UAA8B,CAAC;YACnC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iCAAiC,QAAQ,GAAG,EAAE,CAAC;wBACxF,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC3B,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAExD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;qBAChF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB;;;;;;;;;wCASoC,EACpC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC9D,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,0BAA0B,MAAM,CAAC,EAAE,GAAG;qBAC7C;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../src/tools/rewards.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwEzD"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6GzD"}
@@ -1,17 +1,52 @@
1
1
  import { z } from "zod";
2
- import { createTaskBoxItem } from "../api/endpoints/taskbox.js";
2
+ import { createTaskBoxItem, listTaskBoxItems } from "../api/endpoints/taskbox.js";
3
3
  import { formatErrorForMcp } from "../utils/errors.js";
4
4
  export function registerTaskTools(server) {
5
+ // get_task_box tool
6
+ server.tool("get_task_box", `List the Skylight task box.
7
+
8
+ The task box is a library of reusable chore and routine templates (for example "Take out trash" or "Brush teeth"), not scheduled work. Items have no assignee and no date; scheduling one creates a chore, which get_chores and get_week_overview show.
9
+
10
+ Use this when the user asks what is in the task box, or before adding a task to avoid a duplicate.`, {}, async () => {
11
+ try {
12
+ const items = await listTaskBoxItems();
13
+ if (items.length === 0) {
14
+ return { content: [{ type: "text", text: "The task box is empty." }] };
15
+ }
16
+ const line = (item) => {
17
+ const a = item.attributes;
18
+ const extras = [];
19
+ if (a.reward_points)
20
+ extras.push(`${a.reward_points} points`);
21
+ const emoji = a.emoji_icon ? `${a.emoji_icon} ` : "";
22
+ return `- ${emoji}${a.summary}${extras.length ? ` (${extras.join(", ")})` : ""}`;
23
+ };
24
+ const chores = items.filter((i) => !i.attributes.routine);
25
+ const routines = items.filter((i) => i.attributes.routine);
26
+ const parts = [`Task box: ${items.length} items`];
27
+ if (chores.length)
28
+ parts.push("", "Chores:", ...chores.map(line));
29
+ if (routines.length)
30
+ parts.push("", "Routines:", ...routines.map(line));
31
+ return { content: [{ type: "text", text: parts.join("\n") }] };
32
+ }
33
+ catch (error) {
34
+ return {
35
+ content: [{ type: "text", text: formatErrorForMcp(error) }],
36
+ isError: true,
37
+ };
38
+ }
39
+ });
5
40
  // create_task tool
6
- server.tool("create_task", `Add a task to the Skylight task box.
7
-
8
- The task box holds unscheduled tasks that can later be assigned to specific dates.
9
-
10
- Use this when the user says:
11
- - "Add XYZ to my task list"
12
- - "Remind me to do ABC" (without a specific date)
13
- - "Put 'clean garage' on the task box"
14
-
41
+ server.tool("create_task", `Add a task to the Skylight task box.
42
+
43
+ The task box holds unscheduled tasks that can later be assigned to specific dates.
44
+
45
+ Use this when the user says:
46
+ - "Add XYZ to my task list"
47
+ - "Remind me to do ABC" (without a specific date)
48
+ - "Put 'clean garage' on the task box"
49
+
15
50
  The task will appear on the Skylight display in the task box.`, {
16
51
  summary: z.string().describe("Task description"),
17
52
  emoji: z
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,mBAAmB;IACnB,MAAM,CAAC,IAAI,CACT,aAAa,EACb;;;;;;;;;8DAS0D,EAC1D;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4CAA4C,CAAC;QACzD,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,OAAO,EAAE,CAAC;aACP,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,yBAAyB,CAAC;KACvC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;gBACnC,OAAO;gBACP,SAAS,EAAE,KAAK;gBAChB,YAAY;gBACZ,OAAO,EAAE,OAAO,IAAI,KAAK;aAC1B,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAElE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;qBACvB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;qBAC/B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
@@ -64,31 +64,31 @@ export class ParseError extends SkylightError {
64
64
  */
65
65
  export function formatErrorForMcp(error) {
66
66
  if (error instanceof AuthenticationError) {
67
- return `Authentication Error: ${error.message}
68
-
69
- Your Skylight token may have expired. To fix this:
70
- 1. If using email/password auth, retry with valid SKYLIGHT_EMAIL and SKYLIGHT_PASSWORD
71
- 2. If using a manual token, capture fresh API traffic using a proxy tool
72
- 3. Update your SKYLIGHT_TOKEN environment variable if you are using manual token auth
73
-
67
+ return `Authentication Error: ${error.message}
68
+
69
+ Your Skylight token may have expired. To fix this:
70
+ 1. If using email/password auth, retry with valid SKYLIGHT_EMAIL and SKYLIGHT_PASSWORD
71
+ 2. If using a manual token, capture fresh API traffic using a proxy tool
72
+ 3. Update your SKYLIGHT_TOKEN environment variable if you are using manual token auth
73
+
74
74
  See the auth documentation for detailed steps.`;
75
75
  }
76
76
  if (error instanceof NotFoundError) {
77
- return `Not Found: ${error.message}
78
-
79
- This could mean:
80
- - The requested item doesn't exist
81
- - Your frame ID is incorrect
77
+ return `Not Found: ${error.message}
78
+
79
+ This could mean:
80
+ - The requested item doesn't exist
81
+ - Your frame ID is incorrect
82
82
  - The item was deleted from Skylight`;
83
83
  }
84
84
  if (error instanceof RateLimitError) {
85
- return `Rate Limited: ${error.message}
86
-
85
+ return `Rate Limited: ${error.message}
86
+
87
87
  The Skylight API is temporarily limiting requests. Please wait a moment and try again.`;
88
88
  }
89
89
  if (error instanceof ConfigurationError) {
90
- return `Configuration Error: ${error.message}
91
-
90
+ return `Configuration Error: ${error.message}
91
+
92
92
  Please check your environment variables are set correctly.`;
93
93
  }
94
94
  if (error instanceof SkylightError) {
package/package.json CHANGED
@@ -1,78 +1,78 @@
1
- {
2
- "name": "@davidwoods/skylight-mcp",
3
- "version": "1.7.0",
4
- "description": "Unofficial MCP server for Skylight Calendar: local (stdio) and hosted (Cloudflare Workers), with browser-paste OAuth sign-in and an encrypted credential store",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "bin": {
8
- "skylight-mcp": "dist/index.js"
9
- },
10
- "files": [
11
- "dist",
12
- "README.md",
13
- "LICENSE",
14
- "THIRD_PARTY_NOTICES.md"
15
- ],
16
- "scripts": {
17
- "build": "tsc",
18
- "start": "node dist/index.js",
19
- "dev": "tsx watch src/index.ts",
20
- "test": "vitest",
21
- "test:coverage": "vitest --coverage",
22
- "lint": "eslint src/",
23
- "typecheck": "tsc --noEmit",
24
- "prepare": "npm run build",
25
- "generate:types": "openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts",
26
- "typecheck:worker": "tsc -p tsconfig.worker.json",
27
- "worker:dev": "wrangler dev",
28
- "worker:deploy": "wrangler deploy",
29
- "worker:deploy:local": "wrangler deploy -c wrangler.local.jsonc",
30
- "worker:setup": "node scripts/setup-worker.mjs",
31
- "prepublishOnly": "npm run typecheck && npm run lint && vitest run && npm run build",
32
- "test:live": "vitest run --config vitest.live.config.ts"
33
- },
34
- "keywords": [
35
- "mcp",
36
- "skylight",
37
- "calendar",
38
- "model-context-protocol",
39
- "claude",
40
- "ai",
41
- "family",
42
- "chores"
43
- ],
44
- "author": "David Woods",
45
- "license": "MIT",
46
- "repository": {
47
- "type": "git",
48
- "url": "git+https://github.com/dwooods/skylight-mcp.git"
49
- },
50
- "dependencies": {
51
- "@cloudflare/workers-oauth-provider": "^1.2.4",
52
- "@modelcontextprotocol/sdk": "^1.32.2",
53
- "zod": "^4.6.7"
54
- },
55
- "devDependencies": {
56
- "@cloudflare/workers-types": "^5.20261029.1",
57
- "@types/node": "^22.20.5",
58
- "@typescript-eslint/eslint-plugin": "^7.0.0",
59
- "@typescript-eslint/parser": "^7.0.0",
60
- "eslint": "^8.57.0",
61
- "openapi-typescript": "^7.0.0",
62
- "tsx": "^4.7.0",
63
- "typescript": "^5.4.5",
64
- "vite": "^8.3.5",
65
- "vitest": "^5.0.5",
66
- "wrangler": "^4.156.0"
67
- },
68
- "publishConfig": {
69
- "access": "public"
70
- },
71
- "engines": {
72
- "node": ">=20.0.0"
73
- },
74
- "homepage": "https://github.com/dwooods/skylight-mcp#readme",
75
- "bugs": {
76
- "url": "https://github.com/dwooods/skylight-mcp/issues"
77
- }
78
- }
1
+ {
2
+ "name": "@davidwoods/skylight-mcp",
3
+ "version": "1.8.1",
4
+ "description": "Unofficial MCP server for Skylight Calendar: local (stdio) and hosted (Cloudflare Workers), with browser-paste OAuth sign-in and an encrypted credential store",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "skylight-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE",
14
+ "THIRD_PARTY_NOTICES.md"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "start": "node dist/index.js",
19
+ "dev": "tsx watch src/index.ts",
20
+ "test": "vitest",
21
+ "test:coverage": "vitest --coverage",
22
+ "lint": "eslint src/",
23
+ "typecheck": "tsc --noEmit",
24
+ "prepare": "npm run build",
25
+ "generate:types": "openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts",
26
+ "typecheck:worker": "tsc -p tsconfig.worker.json",
27
+ "worker:dev": "wrangler dev",
28
+ "worker:deploy": "wrangler deploy",
29
+ "worker:deploy:local": "wrangler deploy -c wrangler.local.jsonc",
30
+ "worker:setup": "node scripts/setup-worker.mjs",
31
+ "prepublishOnly": "npm run typecheck && npm run lint && vitest run && npm run build",
32
+ "test:live": "vitest run --config vitest.live.config.ts"
33
+ },
34
+ "keywords": [
35
+ "mcp",
36
+ "skylight",
37
+ "calendar",
38
+ "model-context-protocol",
39
+ "claude",
40
+ "ai",
41
+ "family",
42
+ "chores"
43
+ ],
44
+ "author": "David Woods",
45
+ "license": "MIT",
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "git+https://github.com/dwooods/skylight-mcp.git"
49
+ },
50
+ "dependencies": {
51
+ "@cloudflare/workers-oauth-provider": "^1.2.4",
52
+ "@modelcontextprotocol/sdk": "^1.32.2",
53
+ "zod": "^4.6.7"
54
+ },
55
+ "devDependencies": {
56
+ "@cloudflare/workers-types": "^5.20261029.1",
57
+ "@types/node": "^22.20.5",
58
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
59
+ "@typescript-eslint/parser": "^7.0.0",
60
+ "eslint": "^8.57.0",
61
+ "openapi-typescript": "^7.0.0",
62
+ "tsx": "^4.7.0",
63
+ "typescript": "^5.4.5",
64
+ "vite": "^8.3.5",
65
+ "vitest": "^5.0.5",
66
+ "wrangler": "^4.156.0"
67
+ },
68
+ "publishConfig": {
69
+ "access": "public"
70
+ },
71
+ "engines": {
72
+ "node": ">=20.0.0"
73
+ },
74
+ "homepage": "https://github.com/dwooods/skylight-mcp#readme",
75
+ "bugs": {
76
+ "url": "https://github.com/dwooods/skylight-mcp/issues"
77
+ }
78
+ }