@starascendin/lifeos-mcp 0.7.72 → 0.7.74

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
@@ -89,9 +89,6 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
89
89
 
90
90
  ### Council
91
91
  - **run_council** - Run the shared LifeOS council engine used by AI Panel and ZeroClaw skills
92
- - **llm_council_deliberate** - Run the separate long-running LLM Council workflow
93
- - **llm_council_list_conversations** - List saved LLM Council conversations
94
- - **llm_council_get_deliberation** - Get a saved LLM Council deliberation
95
92
 
96
93
  ### Project Management
97
94
  - **get_projects** - List all projects with stats
@@ -101,6 +98,7 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
101
98
  - **create_issue** - Create a new task/issue, optionally with a calendar start/end time
102
99
  - **update_issue** - Update an existing task, including estimate/story points and scheduled calendar time
103
100
  - **mark_issue_complete** - Mark a task as done
101
+ - **create_calendar_block** - Create protected calendar-only time without creating a PM issue or Google event
104
102
 
105
103
  ### Phases
106
104
  - **get_phases** - Get all phases for a project
@@ -115,10 +113,10 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
115
113
  - **assign_issue_to_cycle** - Add task to a cycle
116
114
 
117
115
  ### Agenda
118
- - **get_daily_agenda** - Today's tasks, events, priorities
119
- - **get_weekly_agenda** - Week's tasks and events
116
+ - **get_daily_agenda** - Today's tasks, events, protected blocks, priorities
117
+ - **get_weekly_agenda** - Week's tasks, events, and protected blocks
120
118
  - **get_planning_context** - Full day/week/current-cycle planning context for agents
121
- - **apply_planning_patch** - Mutating planning patch for due dates, priorities, current cycle, and notes
119
+ - **apply_planning_patch** - Mutating planning patch for due dates, priorities, protected calendar-only blocks, current cycle, and notes
122
120
 
123
121
  ### Habits
124
122
  - **get_habits** - List active habits with streaks and completion stats
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.7.72";
2
- export declare const BUILD_TIME = "2026-05-18T00:53:07.616Z";
1
+ export declare const VERSION = "0.7.74";
2
+ export declare const BUILD_TIME = "2026-05-18T17:40:32.368Z";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Regenerated on every build.
2
- export const VERSION = "0.7.72";
3
- export const BUILD_TIME = "2026-05-18T00:53:07.616Z";
2
+ export const VERSION = "0.7.74";
3
+ export const BUILD_TIME = "2026-05-18T17:40:32.368Z";
package/dist/index.js CHANGED
@@ -973,7 +973,7 @@ const TOOLS = [
973
973
  },
974
974
  {
975
975
  name: "get_planning_context",
976
- description: "Get full planning context for day/week/current cycle. Mirrors the LifeOS Agenda daily tab plus current cycle, backlog, habits, daily fields, calendar, and notes.",
976
+ description: "Get full planning context for day/week/current cycle. Mirrors the LifeOS Agenda daily tab plus current cycle, backlog, habits, daily fields, calendar, protected non-ticket calendar blocks, and notes.",
977
977
  inputSchema: {
978
978
  type: "object",
979
979
  properties: {
@@ -1008,7 +1008,7 @@ const TOOLS = [
1008
1008
  },
1009
1009
  {
1010
1010
  name: "apply_planning_patch",
1011
- description: "Apply an agent-generated day/week/cycle planning patch. Mutates tasks, due dates, scheduled start/end times, top priorities, current cycle goals/assignments, daily fields, issue comments, Daily AI Comments, Weekly AI Comments, and daily/weekly notes.",
1011
+ description: "Apply an agent-generated day/week/cycle planning patch. Mutates tasks, due dates, scheduled start/end times, protected non-ticket calendar blocks, top priorities, current cycle goals/assignments, daily fields, issue comments, Daily AI Comments, Weekly AI Comments, and daily/weekly notes.",
1012
1012
  inputSchema: {
1013
1013
  type: "object",
1014
1014
  properties: {
@@ -1035,7 +1035,7 @@ const TOOLS = [
1035
1035
  },
1036
1036
  operations: {
1037
1037
  type: "array",
1038
- description: "Operations to apply. Supported types: create_issue, update_issue, schedule_issue, assign_issue_to_current_cycle, set_top_priority, mark_issue_status, save_daily_note, save_weekly_note, set_daily_field, update_cycle_goals, add_issue_comment, add_daily_ai_comment, add_weekly_ai_comment.",
1038
+ description: "Operations to apply. Supported types: create_issue, create_calendar_block, update_issue, schedule_issue, assign_issue_to_current_cycle, set_top_priority, mark_issue_status, save_daily_note, save_weekly_note, set_daily_field, update_cycle_goals, add_issue_comment, add_daily_ai_comment, add_weekly_ai_comment.",
1039
1039
  items: {
1040
1040
  type: "object",
1041
1041
  properties: {
@@ -1043,6 +1043,7 @@ const TOOLS = [
1043
1043
  type: "string",
1044
1044
  enum: [
1045
1045
  "create_issue",
1046
+ "create_calendar_block",
1046
1047
  "update_issue",
1047
1048
  "schedule_issue",
1048
1049
  "assign_issue_to_current_cycle",
@@ -1059,7 +1060,7 @@ const TOOLS = [
1059
1060
  },
1060
1061
  payload: {
1061
1062
  type: "object",
1062
- description: "Operation-specific payload. Use issueIdOrIdentifier for existing tasks, dueDate for day assignment/deadlines, scheduledStartAt/scheduledEndAt ISO datetimes or startTime/endTime with scheduledDate for calendar time blocks, userNote for notes, body/source for comments, goals for cycle goals.",
1063
+ description: "Operation-specific payload. Use issueIdOrIdentifier for existing tasks, dueDate for day assignment/deadlines, scheduledStartAt/scheduledEndAt for PM issue time blocks. Use create_calendar_block with title, timezone, and either startAt/endAt ISO datetimes or date plus startTime/endTime for protected calendar-only blocks that must not create an issue.",
1063
1064
  },
1064
1065
  },
1065
1066
  required: ["type", "payload"],
@@ -1069,6 +1070,82 @@ const TOOLS = [
1069
1070
  required: ["mode", "operations"],
1070
1071
  },
1071
1072
  },
1073
+ {
1074
+ name: "create_calendar_block",
1075
+ description: "Create a protected LifeOS calendar-only block without creating a PM issue or Google-synced event. Use this for non-ticket time like dog walking, meals, errands, personal appointments, or holds.",
1076
+ inputSchema: {
1077
+ type: "object",
1078
+ properties: {
1079
+ userId: {
1080
+ type: "string",
1081
+ description: "Override the default user ID (optional)",
1082
+ },
1083
+ title: {
1084
+ type: "string",
1085
+ description: "Block title, e.g. Dog walking",
1086
+ },
1087
+ description: {
1088
+ type: "string",
1089
+ description: "Optional description",
1090
+ },
1091
+ location: {
1092
+ type: "string",
1093
+ description: "Optional location",
1094
+ },
1095
+ startAt: {
1096
+ type: "string",
1097
+ description: "ISO datetime start, e.g. 2026-05-18T16:00:00-06:00. Alternative to date/startTime.",
1098
+ },
1099
+ endAt: {
1100
+ type: "string",
1101
+ description: "ISO datetime end, e.g. 2026-05-18T18:00:00-06:00. Alternative to date/endTime.",
1102
+ },
1103
+ date: {
1104
+ type: "string",
1105
+ description: "YYYY-MM-DD date when using local clock startTime/endTime",
1106
+ },
1107
+ startTime: {
1108
+ type: "string",
1109
+ description: "Local HH:mm start time, e.g. 16:00",
1110
+ },
1111
+ endTime: {
1112
+ type: "string",
1113
+ description: "Local HH:mm end time, e.g. 18:00",
1114
+ },
1115
+ timezone: {
1116
+ type: "string",
1117
+ description: "IANA timezone, e.g. America/Denver",
1118
+ },
1119
+ blockType: {
1120
+ type: "string",
1121
+ enum: [
1122
+ "protected_time",
1123
+ "personal",
1124
+ "focus",
1125
+ "appointment",
1126
+ "travel",
1127
+ "hold",
1128
+ "other",
1129
+ ],
1130
+ description: "Block type metadata (optional, default protected_time)",
1131
+ },
1132
+ source: {
1133
+ type: "string",
1134
+ enum: ["agent", "manual", "system", "import"],
1135
+ description: "Source metadata (optional, default agent)",
1136
+ },
1137
+ sourceDetail: {
1138
+ type: "string",
1139
+ description: "Optional agent/workflow name or source note",
1140
+ },
1141
+ isProtected: {
1142
+ type: "boolean",
1143
+ description: "Whether agents should protect this time (default true)",
1144
+ },
1145
+ },
1146
+ required: ["title", "timezone"],
1147
+ },
1148
+ },
1072
1149
  {
1073
1150
  name: "regenerate_daily_summary",
1074
1151
  description: "Regenerate the AI summary for a specific day.",
@@ -3536,78 +3613,6 @@ const TOOLS = [
3536
3613
  },
3537
3614
  },
3538
3615
  },
3539
- // ==================== LLM Council Tools ====================
3540
- {
3541
- name: "llm_council_deliberate",
3542
- description: "Run a full LLM Council deliberation (Karpathy's 3-stage process). Stage 1: Multiple models answer your query in parallel. Stage 2: Each model anonymously peer-reviews and ranks the others' responses. Stage 3: A chairman model synthesizes the best answer from all responses and rankings. Returns the complete deliberation with all 3 stages. This is a long-running operation (2-10 minutes depending on tier).",
3543
- inputSchema: {
3544
- type: "object",
3545
- properties: {
3546
- query: {
3547
- type: "string",
3548
- description: "The question or prompt to deliberate on",
3549
- },
3550
- tier: {
3551
- type: "string",
3552
- enum: ["normal", "pro"],
3553
- description: "Model tier. 'normal' uses GPT-4o, Claude Sonnet 4, Gemini 2.5 Pro, Grok 3. 'pro' uses GPT-5.2 Pro, Claude Opus 4.5, Gemini 3 Pro, Grok 4. Default: normal",
3554
- },
3555
- title: {
3556
- type: "string",
3557
- description: "Optional title for the conversation (auto-generated from query if not provided)",
3558
- },
3559
- councilModels: {
3560
- type: "array",
3561
- items: {
3562
- type: "object",
3563
- properties: {
3564
- modelId: { type: "string" },
3565
- modelName: { type: "string" },
3566
- },
3567
- required: ["modelId", "modelName"],
3568
- },
3569
- description: "Optional custom council models (overrides tier selection)",
3570
- },
3571
- chairmanModel: {
3572
- type: "object",
3573
- properties: {
3574
- modelId: { type: "string" },
3575
- modelName: { type: "string" },
3576
- },
3577
- required: ["modelId", "modelName"],
3578
- description: "Optional custom chairman model (overrides tier selection)",
3579
- },
3580
- },
3581
- required: ["query"],
3582
- },
3583
- },
3584
- {
3585
- name: "llm_council_list_conversations",
3586
- description: "List past LLM Council conversations. Returns conversation IDs, titles, models used, and timestamps.",
3587
- inputSchema: {
3588
- type: "object",
3589
- properties: {
3590
- limit: {
3591
- type: "number",
3592
- description: "Max conversations to return (default: 20)",
3593
- },
3594
- },
3595
- },
3596
- },
3597
- {
3598
- name: "llm_council_get_deliberation",
3599
- description: "Get the full details of a past LLM Council deliberation, including all 3 stages: individual responses, peer evaluations with rankings, and chairman synthesis.",
3600
- inputSchema: {
3601
- type: "object",
3602
- properties: {
3603
- conversationId: {
3604
- type: "string",
3605
- description: "The conversation ID to retrieve",
3606
- },
3607
- },
3608
- required: ["conversationId"],
3609
- },
3610
- },
3611
3616
  {
3612
3617
  name: "run_council",
3613
3618
  description: "Run the shared LifeOS council deliberation engine and return the synthesized final answer plus council stage details. This is the same council used by the AI panel and claw council skill.",
@@ -5451,7 +5456,7 @@ const PROMPT_MESSAGES = {
5451
5456
  type: "text",
5452
5457
  text: `Get my daily standup briefing. Use the LifeOS MCP tools to gather:
5453
5458
 
5454
- 1. Call get_daily_agenda for today's agenda (tasks due today, calendar events, top priorities)
5459
+ 1. Call get_daily_agenda for today's agenda (tasks due today, calendar events, protected calendar blocks, top priorities)
5455
5460
  2. Call get_todays_tasks for today's task list
5456
5461
  3. Call get_overdue_tasks to surface anything already slipping
5457
5462
  4. Call get_current_cycle for current sprint progress and stats
@@ -5463,7 +5468,7 @@ Summarize in a concise standup format:
5463
5468
  - **Tasks Due**: List tasks due today with priority
5464
5469
  - **Overdue**: Anything already late that needs immediate triage
5465
5470
  - **Sprint Progress**: Cycle completion % and key stats
5466
- - **Calendar**: Any meetings or events today
5471
+ - **Calendar**: Any meetings, events, or protected blocks today
5467
5472
 
5468
5473
  Keep it short and actionable.`,
5469
5474
  },
@@ -5487,9 +5492,10 @@ ${notesClause}
5487
5492
 
5488
5493
  Workflow:
5489
5494
  1. Call get_planning_context with daily=true, weekly=true, currentCycle=true, backlog=true, habits=true, dailyFields=true, calendar=true, voiceMemos=true.
5490
- 2. Decide today's top 3, tasks to assign to the day via dueDate, tasks to time-block via scheduledStartAt/scheduledEndAt, backlog items to pull into the current cycle, and any cycle goal updates.
5495
+ 2. Decide today's top 3, tasks to assign to the day via dueDate, tasks to time-block via scheduledStartAt/scheduledEndAt, protected non-ticket calendar blocks to create with create_calendar_block, backlog items to pull into the current cycle, and any cycle goal updates.
5491
5496
  3. Call apply_planning_patch with mode "day" and dryRun=false. Use operations as needed:
5492
5497
  - create_issue for new tasks
5498
+ - create_calendar_block for protected non-ticket time like errands, meals, dog walking, appointments, or holds; this must not create a PM issue
5493
5499
  - schedule_issue/update_issue for dueDate, scheduledStartAt/scheduledEndAt, status, priority, and estimate changes
5494
5500
  - assign_issue_to_current_cycle for current cycle work
5495
5501
  - set_top_priority for today's top 3
@@ -5615,9 +5621,10 @@ ${notesClause}
5615
5621
 
5616
5622
  Workflow:
5617
5623
  1. Call get_planning_context with daily=true, weekly=true, currentCycle=true, backlog=true, habits=true, dailyFields=true, calendar=true, voiceMemos=true.
5618
- 2. Shape the week around the current cycle: update cycle goals, pull/assign tasks, assign tasks to days with dueDate, time-block tasks with scheduledStartAt/scheduledEndAt, and set near-term priorities.
5624
+ 2. Shape the week around the current cycle: update cycle goals, pull/assign tasks, assign tasks to days with dueDate, time-block tasks with scheduledStartAt/scheduledEndAt, create protected non-ticket calendar blocks with create_calendar_block, and set near-term priorities.
5619
5625
  3. Call apply_planning_patch with mode "week" and dryRun=false. Use operations as needed:
5620
5626
  - create_issue for new tasks
5627
+ - create_calendar_block for protected non-ticket time like errands, meals, dog walking, appointments, or holds
5621
5628
  - schedule_issue/update_issue for dueDate, scheduledStartAt/scheduledEndAt, status, priority, and estimate changes
5622
5629
  - assign_issue_to_current_cycle for current cycle work
5623
5630
  - set_top_priority for immediate focus
@@ -5642,9 +5649,10 @@ Do not ask for confirmation; the user intends this planning workflow to mutate L
5642
5649
  text: `Help me plan my current cycle/sprint in LifeOS and apply the resulting mutations.
5643
5650
 
5644
5651
  1. Call get_planning_context with currentCycle=true, backlog=true, weekly=true, daily=true.
5645
- 2. Shape the current cycle: update cycle goals, pull/assign tasks, assign near-term tasks with dueDate, time-block tasks with scheduledStartAt/scheduledEndAt, and set near-term priorities.
5652
+ 2. Shape the current cycle: update cycle goals, pull/assign tasks, assign near-term tasks with dueDate, time-block tasks with scheduledStartAt/scheduledEndAt, create protected non-ticket calendar blocks with create_calendar_block, and set near-term priorities.
5646
5653
  3. Call apply_planning_patch with mode "cycle" and dryRun=false. Use operations as needed:
5647
5654
  - create_issue for new tasks
5655
+ - create_calendar_block for protected non-ticket time that should appear on the calendar without creating a PM issue
5648
5656
  - assign_issue_to_current_cycle for current cycle work
5649
5657
  - schedule_issue/update_issue for dueDate, scheduledStartAt/scheduledEndAt, status, priority, and estimate changes
5650
5658
  - update_cycle_goals for active cycle goals
@@ -7445,27 +7453,6 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
7445
7453
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
7446
7454
  const { name, arguments: args } = request.params;
7447
7455
  try {
7448
- // Handle LLM Council deliberation (special endpoint, long-running)
7449
- if (name === "llm_council_deliberate") {
7450
- const params = args || {};
7451
- const { userId: overrideUserId } = params;
7452
- const result = await callConvexJsonEndpoint("/llm-council/mcp-deliberate", {
7453
- userId: overrideUserId || USER_ID,
7454
- query: params.query,
7455
- tier: params.tier,
7456
- title: params.title,
7457
- councilModels: params.councilModels,
7458
- chairmanModel: params.chairmanModel,
7459
- });
7460
- return {
7461
- content: [
7462
- {
7463
- type: "text",
7464
- text: JSON.stringify(result, null, 2),
7465
- },
7466
- ],
7467
- };
7468
- }
7469
7456
  if (name === "run_council") {
7470
7457
  const params = args || {};
7471
7458
  const { userId: overrideUserId } = params;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starascendin/lifeos-mcp",
3
- "version": "0.7.72",
3
+ "version": "0.7.74",
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",