@starascendin/lifeos-mcp 0.7.57 → 0.7.59

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.
package/README.md CHANGED
@@ -103,6 +103,18 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
103
103
  - **get_daily_agenda** - Today's tasks, events, priorities
104
104
  - **get_weekly_agenda** - Week's tasks and events
105
105
 
106
+ ### Habits
107
+ - **get_habits** - List active habits with streaks and completion stats
108
+ - **get_habits_for_date** - Get scheduled habits and their state for one day
109
+ - **get_habit** - Get one habit with extended stats
110
+ - **create_habit** - Create a new habit
111
+ - **update_habit** - Update a habit's details or active state
112
+ - **archive_habit** - Archive a habit while preserving history
113
+ - **check_in_habit** - Mark a habit complete, incomplete, or skipped for a date
114
+ - **get_habit_check_ins** - Get one habit's check-in history
115
+ - **get_habit_categories** - List habit categories
116
+ - **create_habit_category** - Create a habit category
117
+
106
118
  ### Notes
107
119
  - **search_notes** - Search voice memos/notes
108
120
  - **get_recent_notes** - Get recent notes
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.7.57";
2
- export declare const BUILD_TIME = "2026-03-22T17:26:55.294Z";
1
+ export declare const VERSION = "0.7.59";
2
+ export declare const BUILD_TIME = "2026-04-13T20:44:32.551Z";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Regenerated on every build.
2
- export const VERSION = "0.7.57";
3
- export const BUILD_TIME = "2026-03-22T17:26:55.294Z";
2
+ export const VERSION = "0.7.59";
3
+ export const BUILD_TIME = "2026-04-13T20:44:32.551Z";
package/dist/index.js CHANGED
@@ -395,6 +395,11 @@ const TOOLS = [
395
395
  type: "number",
396
396
  description: "Story points / sprint points (optional)",
397
397
  },
398
+ labelIds: {
399
+ type: "array",
400
+ items: { type: "string" },
401
+ description: "Array of label IDs to set on the issue (replaces existing labels) (optional)",
402
+ },
398
403
  },
399
404
  required: ["issueIdOrIdentifier"],
400
405
  },
@@ -417,6 +422,106 @@ const TOOLS = [
417
422
  required: ["issueIdOrIdentifier"],
418
423
  },
419
424
  },
425
+ // Label Management Tools
426
+ {
427
+ name: "get_labels",
428
+ description: "Get all labels for the user. Can filter by project or get workspace-wide labels.",
429
+ inputSchema: {
430
+ type: "object",
431
+ properties: {
432
+ userId: {
433
+ type: "string",
434
+ description: "Override the default user ID (optional)",
435
+ },
436
+ projectId: {
437
+ type: "string",
438
+ description: "Filter by project ID (optional)",
439
+ },
440
+ includeWorkspaceLabels: {
441
+ type: "boolean",
442
+ description: "Include workspace-wide labels when filtering by project (default: false)",
443
+ },
444
+ },
445
+ },
446
+ },
447
+ {
448
+ name: "create_label",
449
+ description: "Create a new label with a name and color.",
450
+ inputSchema: {
451
+ type: "object",
452
+ properties: {
453
+ userId: {
454
+ type: "string",
455
+ description: "Override the default user ID (optional)",
456
+ },
457
+ name: {
458
+ type: "string",
459
+ description: "Label name (required)",
460
+ },
461
+ color: {
462
+ type: "string",
463
+ description: "Hex color code, e.g., #ef4444 (required)",
464
+ },
465
+ description: {
466
+ type: "string",
467
+ description: "Label description (optional)",
468
+ },
469
+ projectId: {
470
+ type: "string",
471
+ description: "Project ID to scope label to (optional - omit for workspace-wide)",
472
+ },
473
+ },
474
+ required: ["name", "color"],
475
+ },
476
+ },
477
+ {
478
+ name: "update_label",
479
+ description: "Update an existing label's name, color, or description.",
480
+ inputSchema: {
481
+ type: "object",
482
+ properties: {
483
+ userId: {
484
+ type: "string",
485
+ description: "Override the default user ID (optional)",
486
+ },
487
+ labelId: {
488
+ type: "string",
489
+ description: "Label ID (required)",
490
+ },
491
+ name: {
492
+ type: "string",
493
+ description: "Updated name (optional)",
494
+ },
495
+ color: {
496
+ type: "string",
497
+ description: "Updated hex color (optional)",
498
+ },
499
+ description: {
500
+ type: "string",
501
+ description: "Updated description (optional)",
502
+ },
503
+ },
504
+ required: ["labelId"],
505
+ },
506
+ },
507
+ {
508
+ name: "delete_label",
509
+ description: "Delete a label and remove it from all issues.",
510
+ inputSchema: {
511
+ type: "object",
512
+ properties: {
513
+ userId: {
514
+ type: "string",
515
+ description: "Override the default user ID (optional)",
516
+ },
517
+ labelId: {
518
+ type: "string",
519
+ description: "Label ID to delete (required)",
520
+ },
521
+ },
522
+ required: ["labelId"],
523
+ },
524
+ },
420
525
  // Cycle/Sprint Tools
421
526
  {
422
527
  name: "get_current_cycle",
@@ -4221,9 +4326,18 @@ const TOOLS = [
4221
4326
  environment: { type: "string", description: "Updated environment" },
4222
4327
  interactions: { type: "string", description: "Updated interactions" },
4223
4328
  objects: { type: "string", description: "Updated objects" },
4224
- usersInvolved: { type: "string", description: "Updated users involved" },
4225
- energyRating: { type: "number", description: "Updated energy rating 1-5" },
4226
- engagementRating: { type: "number", description: "Updated engagement rating 1-5" },
4329
+ usersInvolved: {
4330
+ type: "string",
4331
+ description: "Updated users involved",
4332
+ },
4333
+ energyRating: {
4334
+ type: "number",
4335
+ description: "Updated energy rating 1-5",
4336
+ },
4337
+ engagementRating: {
4338
+ type: "number",
4339
+ description: "Updated engagement rating 1-5",
4340
+ },
4227
4341
  flowRating: { type: "number", description: "Updated flow rating 1-5" },
4228
4342
  isWork: { type: "boolean", description: "Updated work flag" },
4229
4343
  isPlay: { type: "boolean", description: "Updated play flag" },
@@ -4383,10 +4497,22 @@ const TOOLS = [
4383
4497
  inputSchema: {
4384
4498
  type: "object",
4385
4499
  properties: {
4386
- work: { type: "number", description: "Work satisfaction 1-10 (required)" },
4387
- play: { type: "number", description: "Play satisfaction 1-10 (required)" },
4388
- love: { type: "number", description: "Love satisfaction 1-10 (required)" },
4389
- health: { type: "number", description: "Health satisfaction 1-10 (required)" },
4500
+ work: {
4501
+ type: "number",
4502
+ description: "Work satisfaction 1-10 (required)",
4503
+ },
4504
+ play: {
4505
+ type: "number",
4506
+ description: "Play satisfaction 1-10 (required)",
4507
+ },
4508
+ love: {
4509
+ type: "number",
4510
+ description: "Love satisfaction 1-10 (required)",
4511
+ },
4512
+ health: {
4513
+ type: "number",
4514
+ description: "Health satisfaction 1-10 (required)",
4515
+ },
4390
4516
  notes: { type: "string", description: "Optional reflection notes" },
4391
4517
  },
4392
4518
  required: ["work", "play", "love", "health"],
@@ -4414,13 +4540,19 @@ const TOOLS = [
4414
4540
  type: "object",
4415
4541
  properties: {
4416
4542
  title: { type: "string", description: "Experiment title (required)" },
4417
- hypothesis: { type: "string", description: "What you want to test/learn (required)" },
4543
+ hypothesis: {
4544
+ type: "string",
4545
+ description: "What you want to test/learn (required)",
4546
+ },
4418
4547
  type: {
4419
4548
  type: "string",
4420
4549
  enum: ["conversation", "experience", "side_project"],
4421
4550
  description: "Experiment type (required)",
4422
4551
  },
4423
- odysseyPlanId: { type: "string", description: "Link to an Odyssey Plan" },
4552
+ odysseyPlanId: {
4553
+ type: "string",
4554
+ description: "Link to an Odyssey Plan",
4555
+ },
4424
4556
  status: {
4425
4557
  type: "string",
4426
4558
  enum: ["planned", "in_progress", "completed"],
@@ -4443,8 +4575,16 @@ const TOOLS = [
4443
4575
  prototypeId: { type: "string", description: "Prototype ID (required)" },
4444
4576
  title: { type: "string", description: "Updated title" },
4445
4577
  hypothesis: { type: "string", description: "Updated hypothesis" },
4446
- type: { type: "string", enum: ["conversation", "experience", "side_project"], description: "Updated type" },
4447
- status: { type: "string", enum: ["planned", "in_progress", "completed"], description: "Updated status" },
4578
+ type: {
4579
+ type: "string",
4580
+ enum: ["conversation", "experience", "side_project"],
4581
+ description: "Updated type",
4582
+ },
4583
+ status: {
4584
+ type: "string",
4585
+ enum: ["planned", "in_progress", "completed"],
4586
+ description: "Updated status",
4587
+ },
4448
4588
  odysseyPlanId: { type: "string", description: "Link to Odyssey Plan" },
4449
4589
  whatYouDid: { type: "string", description: "What you did" },
4450
4590
  whatYouLearned: { type: "string", description: "What you learned" },
@@ -4461,7 +4601,10 @@ const TOOLS = [
4461
4601
  inputSchema: {
4462
4602
  type: "object",
4463
4603
  properties: {
4464
- prototypeId: { type: "string", description: "Prototype ID to delete (required)" },
4604
+ prototypeId: {
4605
+ type: "string",
4606
+ description: "Prototype ID to delete (required)",
4607
+ },
4465
4608
  },
4466
4609
  required: ["prototypeId"],
4467
4610
  },
@@ -4481,7 +4624,10 @@ const TOOLS = [
4481
4624
  inputSchema: {
4482
4625
  type: "object",
4483
4626
  properties: {
4484
- personName: { type: "string", description: "Person interviewed (required)" },
4627
+ personName: {
4628
+ type: "string",
4629
+ description: "Person interviewed (required)",
4630
+ },
4485
4631
  role: { type: "string", description: "Their role/title (required)" },
4486
4632
  company: { type: "string", description: "Their company" },
4487
4633
  odysseyPlanId: { type: "string", description: "Link to Odyssey Plan" },
@@ -4496,9 +4642,18 @@ const TOOLS = [
4496
4642
  description: "Key takeaways (required)",
4497
4643
  },
4498
4644
  followUp: { type: "string", description: "Follow-up actions" },
4499
- interviewDate: { type: "string", description: "Interview date ISO string (required)" },
4645
+ interviewDate: {
4646
+ type: "string",
4647
+ description: "Interview date ISO string (required)",
4648
+ },
4500
4649
  },
4501
- required: ["personName", "role", "questions", "keyTakeaways", "interviewDate"],
4650
+ required: [
4651
+ "personName",
4652
+ "role",
4653
+ "questions",
4654
+ "keyTakeaways",
4655
+ "interviewDate",
4656
+ ],
4502
4657
  },
4503
4658
  },
4504
4659
  {
@@ -4512,10 +4667,21 @@ const TOOLS = [
4512
4667
  role: { type: "string", description: "Updated role" },
4513
4668
  company: { type: "string", description: "Updated company" },
4514
4669
  odysseyPlanId: { type: "string", description: "Link to Odyssey Plan" },
4515
- questions: { type: "array", items: { type: "string" }, description: "Updated questions" },
4516
- keyTakeaways: { type: "array", items: { type: "string" }, description: "Updated takeaways" },
4670
+ questions: {
4671
+ type: "array",
4672
+ items: { type: "string" },
4673
+ description: "Updated questions",
4674
+ },
4675
+ keyTakeaways: {
4676
+ type: "array",
4677
+ items: { type: "string" },
4678
+ description: "Updated takeaways",
4679
+ },
4517
4680
  followUp: { type: "string", description: "Updated follow-up" },
4518
- interviewDate: { type: "string", description: "Updated date ISO string" },
4681
+ interviewDate: {
4682
+ type: "string",
4683
+ description: "Updated date ISO string",
4684
+ },
4519
4685
  },
4520
4686
  required: ["interviewId"],
4521
4687
  },
@@ -4526,7 +4692,10 @@ const TOOLS = [
4526
4692
  inputSchema: {
4527
4693
  type: "object",
4528
4694
  properties: {
4529
- interviewId: { type: "string", description: "Interview ID to delete (required)" },
4695
+ interviewId: {
4696
+ type: "string",
4697
+ description: "Interview ID to delete (required)",
4698
+ },
4530
4699
  },
4531
4700
  required: ["interviewId"],
4532
4701
  },
@@ -4546,14 +4715,23 @@ const TOOLS = [
4546
4715
  inputSchema: {
4547
4716
  type: "object",
4548
4717
  properties: {
4549
- belief: { type: "string", description: "The dysfunctional belief (required)" },
4550
- reframe: { type: "string", description: "The reframed, healthier perspective (required)" },
4718
+ belief: {
4719
+ type: "string",
4720
+ description: "The dysfunctional belief (required)",
4721
+ },
4722
+ reframe: {
4723
+ type: "string",
4724
+ description: "The reframed, healthier perspective (required)",
4725
+ },
4551
4726
  category: {
4552
4727
  type: "string",
4553
4728
  enum: ["career", "identity", "relationship", "capability"],
4554
4729
  description: "Belief category",
4555
4730
  },
4556
- isResolved: { type: "boolean", description: "Whether this belief has been resolved" },
4731
+ isResolved: {
4732
+ type: "boolean",
4733
+ description: "Whether this belief has been resolved",
4734
+ },
4557
4735
  },
4558
4736
  required: ["belief", "reframe"],
4559
4737
  },
@@ -4564,7 +4742,10 @@ const TOOLS = [
4564
4742
  inputSchema: {
4565
4743
  type: "object",
4566
4744
  properties: {
4567
- beliefId: { type: "string", description: "Belief reframe ID (required)" },
4745
+ beliefId: {
4746
+ type: "string",
4747
+ description: "Belief reframe ID (required)",
4748
+ },
4568
4749
  belief: { type: "string", description: "Updated belief" },
4569
4750
  reframe: { type: "string", description: "Updated reframe" },
4570
4751
  category: {
@@ -4598,14 +4779,23 @@ const TOOLS = [
4598
4779
  inputSchema: {
4599
4780
  type: "object",
4600
4781
  properties: {
4601
- event: { type: "string", description: "Brief description of the failure event (required)" },
4782
+ event: {
4783
+ type: "string",
4784
+ description: "Brief description of the failure event (required)",
4785
+ },
4602
4786
  category: {
4603
4787
  type: "string",
4604
4788
  enum: ["screw_up", "weakness", "growth_opportunity"],
4605
4789
  description: "Failure category (required)",
4606
4790
  },
4607
- whatHappened: { type: "string", description: "Detailed account of what happened (required)" },
4608
- insight: { type: "string", description: "Insight or lesson learned (required)" },
4791
+ whatHappened: {
4792
+ type: "string",
4793
+ description: "Detailed account of what happened (required)",
4794
+ },
4795
+ insight: {
4796
+ type: "string",
4797
+ description: "Insight or lesson learned (required)",
4798
+ },
4609
4799
  actionTaken: { type: "string", description: "Action taken or planned" },
4610
4800
  },
4611
4801
  required: ["event", "category", "whatHappened", "insight"],
@@ -4617,7 +4807,10 @@ const TOOLS = [
4617
4807
  inputSchema: {
4618
4808
  type: "object",
4619
4809
  properties: {
4620
- failureId: { type: "string", description: "Failure reframe ID (required)" },
4810
+ failureId: {
4811
+ type: "string",
4812
+ description: "Failure reframe ID (required)",
4813
+ },
4621
4814
  event: { type: "string", description: "Updated event" },
4622
4815
  category: {
4623
4816
  type: "string",
@@ -5088,9 +5281,7 @@ Present as a client brief:
5088
5281
  },
5089
5282
  ],
5090
5283
  "customer-success-triage": (args) => {
5091
- const focusClause = args.focus
5092
- ? `\n\nFocus area: ${args.focus}`
5093
- : "";
5284
+ const focusClause = args.focus ? `\n\nFocus area: ${args.focus}` : "";
5094
5285
  return [
5095
5286
  {
5096
5287
  role: "user",
@@ -5973,7 +6164,9 @@ function formatListSection(heading, items, options) {
5973
6164
  }
5974
6165
  const rendered = items.slice(0, limit).map((item) => {
5975
6166
  const label = getItemLabel(item);
5976
- const meta = options?.metaKeys ? getItemMeta(item, options.metaKeys) : undefined;
6167
+ const meta = options?.metaKeys
6168
+ ? getItemMeta(item, options.metaKeys)
6169
+ : undefined;
5977
6170
  return meta ? `- ${label} (${meta})` : `- ${label}`;
5978
6171
  });
5979
6172
  if (items.length > limit) {
@@ -6142,13 +6335,7 @@ function formatNotesResource(client, notesResponse) {
6142
6335
  const content = getString(note.content) || "";
6143
6336
  const updatedAt = getString(note.updatedAt) || getString(note.createdAt);
6144
6337
  const meta = updatedAt ? `Updated: ${updatedAt}` : undefined;
6145
- return [
6146
- `## ${title}`,
6147
- meta ?? "",
6148
- content,
6149
- ]
6150
- .filter(Boolean)
6151
- .join("\n");
6338
+ return [`## ${title}`, meta ?? "", content].filter(Boolean).join("\n");
6152
6339
  });
6153
6340
  return [
6154
6341
  `# ${client.name} Client Notes`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starascendin/lifeos-mcp",
3
- "version": "0.7.57",
3
+ "version": "0.7.59",
4
4
  "description": "MCP server for LifeOS Project Management - manage projects, tasks, notes, and contacts via AI assistants",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",