@starascendin/lifeos-mcp 0.7.15 → 0.7.17

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.
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.7.15";
2
- export declare const BUILD_TIME = "2026-02-21T01:01:33.105Z";
1
+ export declare const VERSION = "0.7.17";
2
+ export declare const BUILD_TIME = "2026-02-21T15:55:59.051Z";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Regenerated on every build.
2
- export const VERSION = "0.7.15";
3
- export const BUILD_TIME = "2026-02-21T01:01:33.105Z";
2
+ export const VERSION = "0.7.17";
3
+ export const BUILD_TIME = "2026-02-21T15:55:59.051Z";
package/dist/index.js CHANGED
@@ -2572,8 +2572,8 @@ const TOOLS = [
2572
2572
  },
2573
2573
  // ==================== COACHING Tools ====================
2574
2574
  {
2575
- name: "get_coaching_profiles",
2576
- description: "List all AI coaching profiles (coach personas). Each profile defines a coaching methodology, focus areas, and which LifeOS tools the coach can use.",
2575
+ name: "get_coach_profile",
2576
+ description: "Get the strategic coach profile: durable context about who you are, your values, strengths, constraints, and current life season.",
2577
2577
  inputSchema: {
2578
2578
  type: "object",
2579
2579
  properties: {
@@ -2585,8 +2585,8 @@ const TOOLS = [
2585
2585
  },
2586
2586
  },
2587
2587
  {
2588
- name: "get_coaching_profile",
2589
- description: "Get a single coaching profile by ID or slug with full details including instructions and enabled tools.",
2588
+ name: "upsert_coach_profile",
2589
+ description: "Create or update the strategic coach profile. Use this when the coach learns durable truths that should persist across sessions.",
2590
2590
  inputSchema: {
2591
2591
  type: "object",
2592
2592
  properties: {
@@ -2594,81 +2594,94 @@ const TOOLS = [
2594
2594
  type: "string",
2595
2595
  description: "Override the default user ID (optional)",
2596
2596
  },
2597
- profileIdOrSlug: {
2597
+ preferredName: {
2598
2598
  type: "string",
2599
- description: "Profile ID or slug like 'executive-coach' (required)",
2599
+ description: "Preferred name or nickname (optional)",
2600
2600
  },
2601
- },
2602
- required: ["profileIdOrSlug"],
2603
- },
2604
- },
2605
- {
2606
- name: "create_coaching_profile",
2607
- description: "Create a new AI coaching profile with a unique slug, system prompt, focus areas, and tool access.",
2608
- inputSchema: {
2609
- type: "object",
2610
- properties: {
2611
- userId: {
2601
+ identitySummary: {
2612
2602
  type: "string",
2613
- description: "Override the default user ID (optional)",
2603
+ description: "Compact identity summary (optional)",
2614
2604
  },
2615
- name: {
2605
+ currentSeason: {
2616
2606
  type: "string",
2617
- description: "Coach display name (required)",
2607
+ description: "Current life season/context (optional)",
2618
2608
  },
2619
- slug: {
2609
+ strategicVision: {
2620
2610
  type: "string",
2621
- description: "Unique slug like 'executive-coach' (required)",
2611
+ description: "Current strategic life direction narrative (optional)",
2622
2612
  },
2623
- instructions: {
2624
- type: "string",
2625
- description: "System prompt / coaching methodology (required)",
2613
+ values: {
2614
+ type: "array",
2615
+ items: { type: "string" },
2616
+ description: "Core values list (optional)",
2626
2617
  },
2627
- focusAreas: {
2618
+ strengths: {
2628
2619
  type: "array",
2629
2620
  items: { type: "string" },
2630
- description: "Focus areas like ['career', 'leadership'] (required)",
2621
+ description: "Perceived strengths (optional)",
2631
2622
  },
2632
- enabledTools: {
2623
+ growthEdges: {
2633
2624
  type: "array",
2634
2625
  items: { type: "string" },
2635
- description: "LifeOS tool names this coach can use (required)",
2626
+ description: "Growth edges / development areas (optional)",
2636
2627
  },
2637
- model: {
2628
+ constraints: {
2629
+ type: "array",
2630
+ items: { type: "string" },
2631
+ description: "Active constraints and tradeoffs (optional)",
2632
+ },
2633
+ decisionHeuristics: {
2634
+ type: "array",
2635
+ items: { type: "string" },
2636
+ description: "Decision principles to use as guardrails (optional)",
2637
+ },
2638
+ motivationStyle: {
2638
2639
  type: "string",
2639
- description: "LLM model ID, e.g. 'anthropic/claude-sonnet-4-5-20250929' (required)",
2640
+ description: "How the user responds best to accountability/coaching (optional)",
2640
2641
  },
2641
- greeting: {
2642
+ coachingPreferences: {
2642
2643
  type: "string",
2643
- description: "Opening greeting for new sessions (optional)",
2644
+ description: "Preferred coaching style and boundaries (optional)",
2644
2645
  },
2645
- sessionCadence: {
2646
+ updatedBy: {
2646
2647
  type: "string",
2647
- enum: ["daily", "weekly", "biweekly", "monthly", "ad_hoc"],
2648
- description: "Suggested session cadence (optional)",
2648
+ enum: ["coach", "user", "system"],
2649
+ description: "Who is updating the profile (optional)",
2649
2650
  },
2650
- color: {
2651
+ },
2652
+ },
2653
+ },
2654
+ {
2655
+ name: "get_coach_diagnostics",
2656
+ description: "Get strategic diagnostic history (time-series assessments) so the coach can see patterns and trajectory over time.",
2657
+ inputSchema: {
2658
+ type: "object",
2659
+ properties: {
2660
+ userId: {
2651
2661
  type: "string",
2652
- description: "Hex color for UI (optional)",
2662
+ description: "Override the default user ID (optional)",
2653
2663
  },
2654
- icon: {
2664
+ assessmentType: {
2655
2665
  type: "string",
2656
- description: "Emoji icon (optional)",
2666
+ enum: [
2667
+ "baseline",
2668
+ "session_reflection",
2669
+ "weekly_review",
2670
+ "monthly_review",
2671
+ "pattern_alert",
2672
+ ],
2673
+ description: "Filter by diagnostic type (optional)",
2674
+ },
2675
+ limit: {
2676
+ type: "number",
2677
+ description: "Max results (default 20, max 100)",
2657
2678
  },
2658
2679
  },
2659
- required: [
2660
- "name",
2661
- "slug",
2662
- "instructions",
2663
- "focusAreas",
2664
- "enabledTools",
2665
- "model",
2666
- ],
2667
2680
  },
2668
2681
  },
2669
2682
  {
2670
- name: "update_coaching_profile",
2671
- description: "Update a coaching profile's settings.",
2683
+ name: "create_coach_diagnostic",
2684
+ description: "Create a strategic diagnostic snapshot. Use this to persist synthesized patterns, risks, opportunities, and strategic focus after coaching sessions.",
2672
2685
  inputSchema: {
2673
2686
  type: "object",
2674
2687
  properties: {
@@ -2676,69 +2689,70 @@ const TOOLS = [
2676
2689
  type: "string",
2677
2690
  description: "Override the default user ID (optional)",
2678
2691
  },
2679
- profileId: {
2692
+ sessionId: {
2680
2693
  type: "string",
2681
- description: "Coaching profile ID (required)",
2694
+ description: "Related coaching session ID (optional)",
2682
2695
  },
2683
- name: {
2696
+ assessmentType: {
2684
2697
  type: "string",
2685
- description: "Updated name (optional)",
2698
+ enum: [
2699
+ "baseline",
2700
+ "session_reflection",
2701
+ "weekly_review",
2702
+ "monthly_review",
2703
+ "pattern_alert",
2704
+ ],
2705
+ description: "Diagnostic type (required)",
2706
+ },
2707
+ title: {
2708
+ type: "string",
2709
+ description: "Diagnostic title (required)",
2686
2710
  },
2687
- instructions: {
2711
+ summary: {
2688
2712
  type: "string",
2689
- description: "Updated system prompt (optional)",
2713
+ description: "Diagnostic summary in markdown/plain text (required)",
2714
+ },
2715
+ confidence: {
2716
+ type: "number",
2717
+ description: "Confidence score, usually 0-100 (optional)",
2690
2718
  },
2691
- focusAreas: {
2719
+ keyPatterns: {
2692
2720
  type: "array",
2693
2721
  items: { type: "string" },
2694
- description: "Updated focus areas (optional)",
2722
+ description: "Key recurring patterns (optional)",
2695
2723
  },
2696
- enabledTools: {
2724
+ strengths: {
2697
2725
  type: "array",
2698
2726
  items: { type: "string" },
2699
- description: "Updated enabled tools (optional)",
2700
- },
2701
- model: {
2702
- type: "string",
2703
- description: "Updated model (optional)",
2727
+ description: "Strengths surfaced in this diagnostic (optional)",
2704
2728
  },
2705
- greeting: {
2706
- type: "string",
2707
- description: "Updated greeting (optional)",
2708
- },
2709
- sessionCadence: {
2710
- type: "string",
2711
- enum: ["daily", "weekly", "biweekly", "monthly", "ad_hoc"],
2712
- description: "Updated cadence (optional)",
2729
+ risks: {
2730
+ type: "array",
2731
+ items: { type: "string" },
2732
+ description: "Risks or derailers (optional)",
2713
2733
  },
2714
- color: {
2715
- type: "string",
2716
- description: "Updated color (optional)",
2734
+ opportunities: {
2735
+ type: "array",
2736
+ items: { type: "string" },
2737
+ description: "Opportunities to leverage (optional)",
2717
2738
  },
2718
- icon: {
2719
- type: "string",
2720
- description: "Updated icon (optional)",
2739
+ strategicFocus: {
2740
+ type: "array",
2741
+ items: { type: "string" },
2742
+ description: "Suggested focus areas for next horizon (optional)",
2721
2743
  },
2722
- },
2723
- required: ["profileId"],
2724
- },
2725
- },
2726
- {
2727
- name: "delete_coaching_profile",
2728
- description: "Delete a coaching profile and cascade-delete all related sessions and action items.",
2729
- inputSchema: {
2730
- type: "object",
2731
- properties: {
2732
- userId: {
2733
- type: "string",
2734
- description: "Override the default user ID (optional)",
2744
+ sourceNotes: {
2745
+ type: "array",
2746
+ items: { type: "string" },
2747
+ description: "Supporting citations/notes (optional)",
2735
2748
  },
2736
- profileId: {
2749
+ createdBy: {
2737
2750
  type: "string",
2738
- description: "Coaching profile ID to delete (required)",
2751
+ enum: ["coach", "user", "system"],
2752
+ description: "Who authored the diagnostic (optional)",
2739
2753
  },
2740
2754
  },
2741
- required: ["profileId"],
2755
+ required: ["assessmentType", "title", "summary"],
2742
2756
  },
2743
2757
  },
2744
2758
  {
@@ -3803,7 +3817,7 @@ const TOOLS = [
3803
3817
  // ==================== Life Direction Composite Tools ====================
3804
3818
  {
3805
3819
  name: "get_life_direction_summary",
3806
- description: "START HERE for any coaching or life direction session. Returns a comprehensive snapshot of the user's current life direction state in one call: North Stars (active/exploring visions), Pillars (core life areas with latest pulse ratings), active Curiosities (top 10), pending Action Items from coaching, and all Working Memory sections. This replaces the need to call get_north_stars, get_pillars, get_pillar_pulse_latest, get_curiosities, get_coaching_action_items, and get_working_memory separately.",
3820
+ description: "START HERE for strategic coaching. Returns a comprehensive snapshot in one call: North Stars, Pillars + pulse, active Curiosities, pending coaching action items, working memory sections, strategic coach profile, and recent diagnostics.",
3807
3821
  inputSchema: {
3808
3822
  type: "object",
3809
3823
  properties: {},
@@ -3863,6 +3877,78 @@ const TOOLS = [
3863
3877
  required: ["title", "summary"],
3864
3878
  },
3865
3879
  },
3880
+ // ==================== LLM Council Tools ====================
3881
+ {
3882
+ name: "llm_council_deliberate",
3883
+ 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).",
3884
+ inputSchema: {
3885
+ type: "object",
3886
+ properties: {
3887
+ query: {
3888
+ type: "string",
3889
+ description: "The question or prompt to deliberate on",
3890
+ },
3891
+ tier: {
3892
+ type: "string",
3893
+ enum: ["normal", "pro"],
3894
+ 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",
3895
+ },
3896
+ title: {
3897
+ type: "string",
3898
+ description: "Optional title for the conversation (auto-generated from query if not provided)",
3899
+ },
3900
+ councilModels: {
3901
+ type: "array",
3902
+ items: {
3903
+ type: "object",
3904
+ properties: {
3905
+ modelId: { type: "string" },
3906
+ modelName: { type: "string" },
3907
+ },
3908
+ required: ["modelId", "modelName"],
3909
+ },
3910
+ description: "Optional custom council models (overrides tier selection)",
3911
+ },
3912
+ chairmanModel: {
3913
+ type: "object",
3914
+ properties: {
3915
+ modelId: { type: "string" },
3916
+ modelName: { type: "string" },
3917
+ },
3918
+ required: ["modelId", "modelName"],
3919
+ description: "Optional custom chairman model (overrides tier selection)",
3920
+ },
3921
+ },
3922
+ required: ["query"],
3923
+ },
3924
+ },
3925
+ {
3926
+ name: "llm_council_list_conversations",
3927
+ description: "List past LLM Council conversations. Returns conversation IDs, titles, models used, and timestamps.",
3928
+ inputSchema: {
3929
+ type: "object",
3930
+ properties: {
3931
+ limit: {
3932
+ type: "number",
3933
+ description: "Max conversations to return (default: 20)",
3934
+ },
3935
+ },
3936
+ },
3937
+ },
3938
+ {
3939
+ name: "llm_council_get_deliberation",
3940
+ description: "Get the full details of a past LLM Council deliberation, including all 3 stages: individual responses, peer evaluations with rankings, and chairman synthesis.",
3941
+ inputSchema: {
3942
+ type: "object",
3943
+ properties: {
3944
+ conversationId: {
3945
+ type: "string",
3946
+ description: "The conversation ID to retrieve",
3947
+ },
3948
+ },
3949
+ required: ["conversationId"],
3950
+ },
3951
+ },
3866
3952
  // MCP Server Info
3867
3953
  {
3868
3954
  name: "get_version",
@@ -4141,12 +4227,12 @@ const PROMPTS = [
4141
4227
  },
4142
4228
  {
4143
4229
  name: "coaching-overview",
4144
- description: "Dashboard of coaching profiles, recent sessions, and pending action items across all coaches.",
4230
+ description: "Strategic coaching dashboard: profile state, recent diagnostics, session momentum, and active action items.",
4145
4231
  arguments: [],
4146
4232
  },
4147
4233
  {
4148
4234
  name: "coaching-action-items",
4149
- description: "Review and manage coaching action items across all coaches. Can mark items complete.",
4235
+ description: "Review and manage strategic coaching action items. Can mark items complete.",
4150
4236
  arguments: [
4151
4237
  {
4152
4238
  name: "action",
@@ -4157,7 +4243,7 @@ const PROMPTS = [
4157
4243
  },
4158
4244
  {
4159
4245
  name: "coaching-session-review",
4160
- description: "Deep-dive into a specific coaching session's summary, key insights, and action items.",
4246
+ description: "Deep-dive into a specific coaching session's summary, insights, and action plan.",
4161
4247
  arguments: [
4162
4248
  {
4163
4249
  name: "session",
@@ -4921,15 +5007,17 @@ Convert all amounts from cents to dollars. Format as currency.`,
4921
5007
  type: "text",
4922
5008
  text: `Show me a coaching dashboard. Use the LifeOS MCP tools:
4923
5009
 
4924
- 1. Call get_coaching_profiles to list all coach personas
4925
- 2. Call get_coaching_sessions with limit=10 for recent sessions across all coaches
4926
- 3. Call get_coaching_action_items with status "pending" for outstanding action items
5010
+ 1. Call get_coach_profile for durable profile context
5011
+ 2. Call get_coach_diagnostics with limit=5 for recent strategic assessments
5012
+ 3. Call get_coaching_sessions with limit=10 for recent session history
5013
+ 4. Call get_coaching_action_items with status "pending" for outstanding action items
4927
5014
 
4928
5015
  Present a coaching overview:
4929
- - **Coaches**: List each coach profile with name, focus areas, and session cadence
4930
- - **Recent Sessions**: Show recent sessions grouped by coach, with title, date, and status
4931
- - **Pending Action Items**: Count of pending items per coach, with the top 3 most urgent items shown
4932
- - **Insights**: Which coaches are most active, any overdue action items, suggested next sessions
5016
+ - **Profile**: Who the user is right now (season, values, strengths, constraints)
5017
+ - **Recent Diagnostics**: Main patterns, risks, opportunities, and strategic focus areas
5018
+ - **Session Momentum**: Recent session cadence and any gaps
5019
+ - **Pending Action Items**: Most urgent next actions and likely blockers
5020
+ - **Strategic Guidance**: What to focus on this week vs this month
4933
5021
 
4934
5022
  Keep it concise and actionable.`,
4935
5023
  },
@@ -4948,10 +5036,10 @@ Keep it concise and actionable.`,
4948
5036
  text: `Review my coaching action items. Use the LifeOS MCP tools:
4949
5037
 
4950
5038
  1. Call get_coaching_action_items to get all action items
4951
- 2. Call get_coaching_profiles to get coach names for grouping
5039
+ 2. Call get_coach_diagnostics with limit=3 to understand current strategic focus
4952
5040
 
4953
- Present action items grouped by coach:
4954
- - **Per Coach**: Show coach name, then list action items with status, priority, due date
5041
+ Present action items grouped by strategic theme:
5042
+ - **By Focus Area**: Group by likely strategic area based on item text + latest diagnostics
4955
5043
  - **Overdue**: Highlight any items past their due date
4956
5044
  - **Summary**: Total pending, in-progress, completed counts
4957
5045
  - **Suggestions**: Which items to prioritize next${actionClause}`,
@@ -4961,7 +5049,7 @@ Present action items grouped by coach:
4961
5049
  },
4962
5050
  "coaching-session-review": (args) => {
4963
5051
  const sessionClause = args.session
4964
- ? `Look up session: "${args.session}". If it looks like an ID, call get_coaching_session directly. If it looks like a coach slug, call get_coaching_profile first, then get_coaching_sessions filtered by that coach to find the most recent one.`
5052
+ ? `Look up session: "${args.session}". If it looks like an ID, call get_coaching_session directly. Otherwise call get_coaching_sessions with limit=10 and pick the closest title/date match.`
4965
5053
  : "Call get_coaching_sessions with limit=1 to get the most recent session.";
4966
5054
  return [
4967
5055
  {
@@ -4974,11 +5062,13 @@ Present action items grouped by coach:
4974
5062
  2. Call get_coaching_session with the session ID for full details including summary and action items
4975
5063
 
4976
5064
  Present a session review:
4977
- - **Session Info**: Coach name, date, duration, mood at start
5065
+ - **Session Info**: Date, duration, mood at start
4978
5066
  - **Summary**: The session's AI-generated summary
4979
5067
  - **Key Insights**: List all key insights from the session
4980
5068
  - **Action Items**: All action items with their current status
4981
- - **Follow-up**: Suggest what to discuss in the next session based on insights and pending items`,
5069
+ - **Follow-up**: Suggest what to discuss in the next session based on insights and pending items
5070
+
5071
+ If the session summary reveals a durable pattern shift, recommend creating a new diagnostic via create_coach_diagnostic.`,
4982
5072
  },
4983
5073
  },
4984
5074
  ];
@@ -5189,6 +5279,39 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
5189
5279
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
5190
5280
  const { name, arguments: args } = request.params;
5191
5281
  try {
5282
+ // Handle LLM Council deliberation (special endpoint, long-running)
5283
+ if (name === "llm_council_deliberate") {
5284
+ const url = `${CONVEX_URL}/llm-council/mcp-deliberate`;
5285
+ const params = args || {};
5286
+ const response = await fetch(url, {
5287
+ method: "POST",
5288
+ headers: {
5289
+ "Content-Type": "application/json",
5290
+ "X-API-Key": API_KEY,
5291
+ },
5292
+ body: JSON.stringify({
5293
+ userId: USER_ID,
5294
+ query: params.query,
5295
+ tier: params.tier,
5296
+ title: params.title,
5297
+ councilModels: params.councilModels,
5298
+ chairmanModel: params.chairmanModel,
5299
+ }),
5300
+ });
5301
+ if (!response.ok) {
5302
+ const errorText = await response.text();
5303
+ throw new Error(`LLM Council error (${response.status}): ${errorText}`);
5304
+ }
5305
+ const result = await response.json();
5306
+ return {
5307
+ content: [
5308
+ {
5309
+ type: "text",
5310
+ text: JSON.stringify(result, null, 2),
5311
+ },
5312
+ ],
5313
+ };
5314
+ }
5192
5315
  // Handle local-only tools (no Convex call needed)
5193
5316
  if (name === "get_version") {
5194
5317
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starascendin/lifeos-mcp",
3
- "version": "0.7.15",
3
+ "version": "0.7.17",
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",