@starascendin/lifeos-mcp 0.7.50 → 0.7.52

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
@@ -121,9 +121,26 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
121
121
  - **get_clients** - List all clients
122
122
  - **get_client** - Get client details
123
123
  - **get_projects_for_client** - Get client's projects
124
+ - **get_client_notes** - List client/project/phase notes
125
+ - **get_client_note** - Get one client note with linked context
126
+ - **create_client_note** - Save requirement or account notes
127
+ - **update_client_note** - Update client notes
124
128
  - **create_client** - Create a new client
125
129
  - **update_client** - Update client details
126
130
 
131
+ ### Meetings
132
+ - **get_fathom_meetings** - List synced Fathom meetings
133
+ - **get_fathom_meeting** - Get Fathom meeting details
134
+ - **get_fathom_transcript** - Get full Fathom transcript
135
+ - **search_fathom_meetings** - Search Fathom meetings
136
+ - **get_granola_meetings** - List synced Granola meetings
137
+ - **get_granola_meeting** - Get Granola meeting details
138
+ - **get_granola_transcript** - Get full Granola transcript
139
+
140
+ ### CRM / Customer Success
141
+ - **get_business_contacts** - List business-marked Beeper threads with linked contact/client info
142
+ - **get_client_success_workspace** - Load one client's chats, meetings, notes, projects, and open work in one call
143
+
127
144
  ## Shared Council Architecture
128
145
 
129
146
  `run_council` calls the Convex `POST /council-skill` endpoint. That is the same shared council core used by:
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.7.50";
2
- export declare const BUILD_TIME = "2026-03-08T00:49:23.344Z";
1
+ export declare const VERSION = "0.7.52";
2
+ export declare const BUILD_TIME = "2026-03-09T17:02:07.718Z";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Regenerated on every build.
2
- export const VERSION = "0.7.50";
3
- export const BUILD_TIME = "2026-03-08T00:49:23.344Z";
2
+ export const VERSION = "0.7.52";
3
+ export const BUILD_TIME = "2026-03-09T17:02:07.718Z";
package/dist/index.js CHANGED
@@ -1388,6 +1388,143 @@ const TOOLS = [
1388
1388
  required: ["clientId"],
1389
1389
  },
1390
1390
  },
1391
+ {
1392
+ name: "get_client_notes",
1393
+ description: "Get client/project/phase notes for customer requirements and account context.",
1394
+ inputSchema: {
1395
+ type: "object",
1396
+ properties: {
1397
+ userId: {
1398
+ type: "string",
1399
+ description: "Override the default user ID (optional)",
1400
+ },
1401
+ clientId: {
1402
+ type: "string",
1403
+ description: "Filter by client ID (optional)",
1404
+ },
1405
+ projectId: {
1406
+ type: "string",
1407
+ description: "Filter by project ID (optional)",
1408
+ },
1409
+ phaseId: {
1410
+ type: "string",
1411
+ description: "Filter by phase ID (optional)",
1412
+ },
1413
+ limit: {
1414
+ type: "number",
1415
+ description: "Max results (default 20, max 100)",
1416
+ },
1417
+ },
1418
+ },
1419
+ },
1420
+ {
1421
+ name: "get_client_note",
1422
+ description: "Get a single client/project/phase note with linked context.",
1423
+ inputSchema: {
1424
+ type: "object",
1425
+ properties: {
1426
+ userId: {
1427
+ type: "string",
1428
+ description: "Override the default user ID (optional)",
1429
+ },
1430
+ noteId: {
1431
+ type: "string",
1432
+ description: "The note ID (required)",
1433
+ },
1434
+ },
1435
+ required: ["noteId"],
1436
+ },
1437
+ },
1438
+ {
1439
+ name: "create_client_note",
1440
+ description: "Create a note for a client, project, or phase to track customer requirements and follow-ups.",
1441
+ inputSchema: {
1442
+ type: "object",
1443
+ properties: {
1444
+ userId: {
1445
+ type: "string",
1446
+ description: "Override the default user ID (optional)",
1447
+ },
1448
+ title: {
1449
+ type: "string",
1450
+ description: "Short note title (required)",
1451
+ },
1452
+ content: {
1453
+ type: "string",
1454
+ description: "Note content (required)",
1455
+ },
1456
+ clientId: {
1457
+ type: "string",
1458
+ description: "Link to a client (optional)",
1459
+ },
1460
+ projectId: {
1461
+ type: "string",
1462
+ description: "Link to a project (optional)",
1463
+ },
1464
+ phaseId: {
1465
+ type: "string",
1466
+ description: "Link to a phase (optional)",
1467
+ },
1468
+ },
1469
+ required: ["title", "content"],
1470
+ },
1471
+ },
1472
+ {
1473
+ name: "update_client_note",
1474
+ description: "Update an existing client/project/phase note.",
1475
+ inputSchema: {
1476
+ type: "object",
1477
+ properties: {
1478
+ userId: {
1479
+ type: "string",
1480
+ description: "Override the default user ID (optional)",
1481
+ },
1482
+ noteId: {
1483
+ type: "string",
1484
+ description: "The note ID (required)",
1485
+ },
1486
+ title: {
1487
+ type: "string",
1488
+ description: "Updated title (optional)",
1489
+ },
1490
+ content: {
1491
+ type: "string",
1492
+ description: "Updated content (optional)",
1493
+ },
1494
+ clientId: {
1495
+ type: "string",
1496
+ description: "Updated client ID, or empty to unlink (optional)",
1497
+ },
1498
+ projectId: {
1499
+ type: "string",
1500
+ description: "Updated project ID, or empty to unlink (optional)",
1501
+ },
1502
+ phaseId: {
1503
+ type: "string",
1504
+ description: "Updated phase ID, or empty to unlink (optional)",
1505
+ },
1506
+ },
1507
+ required: ["noteId"],
1508
+ },
1509
+ },
1510
+ {
1511
+ name: "delete_client_note",
1512
+ description: "Delete a client/project/phase note.",
1513
+ inputSchema: {
1514
+ type: "object",
1515
+ properties: {
1516
+ userId: {
1517
+ type: "string",
1518
+ description: "Override the default user ID (optional)",
1519
+ },
1520
+ noteId: {
1521
+ type: "string",
1522
+ description: "The note ID (required)",
1523
+ },
1524
+ },
1525
+ required: ["noteId"],
1526
+ },
1527
+ },
1391
1528
  {
1392
1529
  name: "create_client",
1393
1530
  description: "Create a new client for consulting/freelance work.",
@@ -1722,6 +1859,82 @@ const TOOLS = [
1722
1859
  required: ["clientId"],
1723
1860
  },
1724
1861
  },
1862
+ // Fathom Meeting Tools
1863
+ {
1864
+ name: "get_fathom_meetings",
1865
+ description: "List all synced Fathom meeting notes and recordings.",
1866
+ inputSchema: {
1867
+ type: "object",
1868
+ properties: {
1869
+ userId: {
1870
+ type: "string",
1871
+ description: "Override the default user ID (optional)",
1872
+ },
1873
+ limit: {
1874
+ type: "number",
1875
+ description: "Max results (default 50)",
1876
+ },
1877
+ },
1878
+ },
1879
+ },
1880
+ {
1881
+ name: "get_fathom_meeting",
1882
+ description: "Get a single Fathom meeting by its Convex meeting ID, including AI summary and action items.",
1883
+ inputSchema: {
1884
+ type: "object",
1885
+ properties: {
1886
+ userId: {
1887
+ type: "string",
1888
+ description: "Override the default user ID (optional)",
1889
+ },
1890
+ meetingId: {
1891
+ type: "string",
1892
+ description: "The Fathom meeting ID (required)",
1893
+ },
1894
+ },
1895
+ required: ["meetingId"],
1896
+ },
1897
+ },
1898
+ {
1899
+ name: "get_fathom_transcript",
1900
+ description: "Get the full transcript for a Fathom meeting.",
1901
+ inputSchema: {
1902
+ type: "object",
1903
+ properties: {
1904
+ userId: {
1905
+ type: "string",
1906
+ description: "Override the default user ID (optional)",
1907
+ },
1908
+ meetingId: {
1909
+ type: "string",
1910
+ description: "The Fathom meeting ID (required)",
1911
+ },
1912
+ },
1913
+ required: ["meetingId"],
1914
+ },
1915
+ },
1916
+ {
1917
+ name: "search_fathom_meetings",
1918
+ description: "Search Fathom meetings by title or summary content.",
1919
+ inputSchema: {
1920
+ type: "object",
1921
+ properties: {
1922
+ userId: {
1923
+ type: "string",
1924
+ description: "Override the default user ID (optional)",
1925
+ },
1926
+ query: {
1927
+ type: "string",
1928
+ description: "Search terms to find in Fathom meetings (required)",
1929
+ },
1930
+ limit: {
1931
+ type: "number",
1932
+ description: "Max results (default 20)",
1933
+ },
1934
+ },
1935
+ required: ["query"],
1936
+ },
1937
+ },
1725
1938
  // Granola Meeting Tools
1726
1939
  {
1727
1940
  name: "get_granola_meetings",
@@ -1937,6 +2150,40 @@ const TOOLS = [
1937
2150
  },
1938
2151
  },
1939
2152
  },
2153
+ {
2154
+ name: "get_client_success_workspace",
2155
+ description: "Load a customer success workspace for one client: projects, open work, linked chats, meetings, and notes in one call.",
2156
+ inputSchema: {
2157
+ type: "object",
2158
+ properties: {
2159
+ userId: {
2160
+ type: "string",
2161
+ description: "Override the default user ID (optional)",
2162
+ },
2163
+ clientIdOrName: {
2164
+ type: "string",
2165
+ description: "Client ID or client name (required)",
2166
+ },
2167
+ messageLimit: {
2168
+ type: "number",
2169
+ description: "Recent messages to include per linked thread (default 5, max 20)",
2170
+ },
2171
+ meetingLimit: {
2172
+ type: "number",
2173
+ description: "Meetings to include across Granola and Fathom (default 10, max 30)",
2174
+ },
2175
+ noteLimit: {
2176
+ type: "number",
2177
+ description: "Notes to include (default 10, max 50)",
2178
+ },
2179
+ openTaskLimit: {
2180
+ type: "number",
2181
+ description: "Open tasks to include (default 25, max 100)",
2182
+ },
2183
+ },
2184
+ required: ["clientIdOrName"],
2185
+ },
2186
+ },
1940
2187
  {
1941
2188
  name: "get_merge_suggestions",
1942
2189
  description: "Get pending contact merge suggestions. Returns pairs of contacts that may be duplicates based on matching email, phone, or name similarity.",
@@ -4434,6 +4681,22 @@ const PROMPTS = [
4434
4681
  },
4435
4682
  ],
4436
4683
  },
4684
+ {
4685
+ name: "customer-success-triage",
4686
+ description: "Triage a client request using business chats, Fathom/Granola meetings, notes, and open work.",
4687
+ arguments: [
4688
+ {
4689
+ name: "client",
4690
+ description: "Client name or ID (required)",
4691
+ required: true,
4692
+ },
4693
+ {
4694
+ name: "focus",
4695
+ description: "Optional focus area, like a feature request, escalation, or meeting topic",
4696
+ required: false,
4697
+ },
4698
+ ],
4699
+ },
4437
4700
  {
4438
4701
  name: "project-status",
4439
4702
  description: "Project status report: phases, task breakdown, blockers, urgent items.",
@@ -4805,6 +5068,47 @@ Present as a client brief:
4805
5068
  },
4806
5069
  },
4807
5070
  ],
5071
+ "customer-success-triage": (args) => {
5072
+ const focusClause = args.focus
5073
+ ? `\n\nFocus area: ${args.focus}`
5074
+ : "";
5075
+ return [
5076
+ {
5077
+ role: "user",
5078
+ content: {
5079
+ type: "text",
5080
+ text: `Triage customer success work for "${args.client}". Use the LifeOS MCP tools:
5081
+
5082
+ 1. Call get_client_success_workspace with clientIdOrName "${args.client}"
5083
+ 2. Review recentThreads, recentMeetings, notes, openTasks, and projects from that workspace
5084
+ 3. If any thread needs deeper inspection, call get_beeper_thread_messages for the relevant thread
5085
+ 4. If any meeting needs deeper inspection:
5086
+ - For Fathom, call get_fathom_meeting and optionally get_fathom_transcript
5087
+ - For Granola, call get_granola_meeting and optionally get_granola_transcript
5088
+ 5. If there is already requirement history, call get_client_notes for the client
5089
+
5090
+ Classify what you find into:
5091
+ - **New Requirements**: Net-new asks or requested changes
5092
+ - **Follow-Ups**: Things waiting on you or the team
5093
+ - **Delivery Risks**: Blockers, overdue work, ambiguous asks, churn risk
5094
+ - **Existing Tracking**: Open tasks or notes already covering the request
5095
+
5096
+ For each item, recommend the next tracking action:
5097
+ - Use create_client_note to save requirement summaries, meeting recaps, or decisions
5098
+ - Use create_issue for implementation work or follow-up tasks
5099
+ - Use update_issue if an existing task should be re-scoped or reprioritized
5100
+
5101
+ Present the result as:
5102
+ - **Situation Summary**: What the client currently needs
5103
+ - **Evidence**: Supporting messages/meetings/notes
5104
+ - **Tracking Plan**: What should be captured as notes vs. tasks
5105
+ - **Next Actions**: Concrete owner/action/deadline suggestions
5106
+
5107
+ Ask for confirmation before any write operations unless I explicitly told you to make changes.${focusClause}`,
5108
+ },
5109
+ },
5110
+ ];
5111
+ },
4808
5112
  "project-status": (args) => [
4809
5113
  {
4810
5114
  role: "user",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starascendin/lifeos-mcp",
3
- "version": "0.7.50",
3
+ "version": "0.7.52",
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",