@opencapstack/mcp-server 0.1.3 → 0.1.4

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 (64) hide show
  1. package/dist/auth.d.ts.map +1 -1
  2. package/dist/auth.js +5 -1
  3. package/dist/auth.js.map +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +17 -5
  6. package/dist/client.js.map +1 -1
  7. package/dist/schema.d.ts +13 -0
  8. package/dist/schema.d.ts.map +1 -0
  9. package/dist/schema.js +22 -0
  10. package/dist/schema.js.map +1 -0
  11. package/dist/server.d.ts.map +1 -1
  12. package/dist/server.js +5 -1
  13. package/dist/server.js.map +1 -1
  14. package/dist/tools/dilution.d.ts.map +1 -1
  15. package/dist/tools/dilution.js +6 -13
  16. package/dist/tools/dilution.js.map +1 -1
  17. package/dist/tools/documents.d.ts.map +1 -1
  18. package/dist/tools/documents.js +3 -2
  19. package/dist/tools/documents.js.map +1 -1
  20. package/dist/tools/equityGrants.d.ts +3 -0
  21. package/dist/tools/equityGrants.d.ts.map +1 -0
  22. package/dist/tools/equityGrants.js +145 -0
  23. package/dist/tools/equityGrants.js.map +1 -0
  24. package/dist/tools/equityPlans.d.ts.map +1 -1
  25. package/dist/tools/equityPlans.js +30 -21
  26. package/dist/tools/equityPlans.js.map +1 -1
  27. package/dist/tools/financialReports.d.ts.map +1 -1
  28. package/dist/tools/financialReports.js +33 -17
  29. package/dist/tools/financialReports.js.map +1 -1
  30. package/dist/tools/meta.d.ts +3 -0
  31. package/dist/tools/meta.d.ts.map +1 -0
  32. package/dist/tools/meta.js +136 -0
  33. package/dist/tools/meta.js.map +1 -0
  34. package/dist/tools/safes.d.ts.map +1 -1
  35. package/dist/tools/safes.js +59 -42
  36. package/dist/tools/safes.js.map +1 -1
  37. package/dist/tools/shareClasses.d.ts.map +1 -1
  38. package/dist/tools/shareClasses.js +31 -23
  39. package/dist/tools/shareClasses.js.map +1 -1
  40. package/dist/tools/stakeholders.d.ts.map +1 -1
  41. package/dist/tools/stakeholders.js +51 -17
  42. package/dist/tools/stakeholders.js.map +1 -1
  43. package/dist/tools/valuations.d.ts.map +1 -1
  44. package/dist/tools/valuations.js +30 -17
  45. package/dist/tools/valuations.js.map +1 -1
  46. package/dist/tools/waterfall.d.ts.map +1 -1
  47. package/dist/tools/waterfall.js +7 -16
  48. package/dist/tools/waterfall.js.map +1 -1
  49. package/package.json +1 -1
  50. package/src/auth.ts +7 -1
  51. package/src/client.ts +23 -6
  52. package/src/schema.ts +28 -0
  53. package/src/server.ts +5 -1
  54. package/src/tools/dilution.ts +12 -13
  55. package/src/tools/documents.ts +3 -2
  56. package/src/tools/equityGrants.ts +154 -0
  57. package/src/tools/equityPlans.ts +30 -21
  58. package/src/tools/financialReports.ts +37 -17
  59. package/src/tools/meta.ts +142 -0
  60. package/src/tools/safes.ts +59 -42
  61. package/src/tools/shareClasses.ts +34 -23
  62. package/src/tools/stakeholders.ts +51 -17
  63. package/src/tools/valuations.ts +29 -20
  64. package/src/tools/waterfall.ts +13 -16
@@ -1 +1 @@
1
- {"version":3,"file":"financialReports.js","sourceRoot":"","sources":["../../src/tools/financialReports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"financialReports.js","sourceRoot":"","sources":["../../src/tools/financialReports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ToolDefinition } from '../types.js';
2
+ export declare const metaTools: ToolDefinition[];
3
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,cAAc,EA0IrC,CAAC"}
@@ -0,0 +1,136 @@
1
+ import { z } from 'zod';
2
+ export const metaTools = [
3
+ {
4
+ name: 'whoami',
5
+ description: 'Verify your API key is working and return your account details (email, role, companyId). ' +
6
+ 'Run this first to confirm your MCP setup is correct.',
7
+ inputSchema: z.object({}),
8
+ handler: async (_input, client) => {
9
+ const { data } = await client.get('/api/v1/auth/me');
10
+ return {
11
+ content: [
12
+ {
13
+ type: 'text',
14
+ text: `Authenticated as:\n${JSON.stringify(data, null, 2)}`,
15
+ },
16
+ ],
17
+ };
18
+ },
19
+ },
20
+ {
21
+ name: 'list_workflows',
22
+ description: 'Get step-by-step workflow guides for common cap table operations. ' +
23
+ 'Call this when you are unsure what tools to use or in what order.',
24
+ inputSchema: z.object({}),
25
+ handler: async () => {
26
+ const workflows = {
27
+ add_advisor_with_equity: [
28
+ {
29
+ step: 1,
30
+ tool: 'create_stakeholder',
31
+ required: ['name', 'email', 'role: advisor', 'companyId'],
32
+ },
33
+ {
34
+ step: 2,
35
+ tool: 'create_equity_plan',
36
+ note: 'Skip if plan exists — use list_equity_plans first',
37
+ required: ['name', 'planType: NSO', 'sharesReserved', 'companyId'],
38
+ },
39
+ {
40
+ step: 3,
41
+ tool: 'create_equity_grant',
42
+ required: [
43
+ 'companyId',
44
+ 'employeeId: <stakeholder row_id>',
45
+ 'equityPlanId: <plan row_id>',
46
+ 'grantType: NSO',
47
+ 'numberOfShares',
48
+ 'grantDate',
49
+ ],
50
+ },
51
+ ],
52
+ record_safe_investment: [
53
+ {
54
+ step: 1,
55
+ tool: 'create_stakeholder',
56
+ note: 'Skip if investor exists — use list_stakeholders first',
57
+ required: ['name', 'email', 'role: investor', 'companyId'],
58
+ },
59
+ {
60
+ step: 2,
61
+ tool: 'create_safe',
62
+ required: [
63
+ 'investmentAmount',
64
+ 'safeType',
65
+ 'investorId: <stakeholder row_id>',
66
+ 'companyId',
67
+ 'investmentDate',
68
+ ],
69
+ },
70
+ ],
71
+ set_up_share_classes: [
72
+ {
73
+ step: 1,
74
+ tool: 'create_share_class',
75
+ note: 'Common stock first',
76
+ required: ['name: Common', 'classType: common', 'authorizedShares', 'companyId'],
77
+ },
78
+ {
79
+ step: 2,
80
+ tool: 'create_share_class',
81
+ note: 'Preferred if needed',
82
+ required: [
83
+ 'name: Series A Preferred',
84
+ 'classType: preferred',
85
+ 'authorizedShares',
86
+ 'companyId',
87
+ ],
88
+ },
89
+ ],
90
+ record_409a_valuation: [
91
+ {
92
+ step: 1,
93
+ tool: 'create_valuation_request',
94
+ required: ['companyId', 'valuationType: 409A', 'valuationDate', 'commonStockFMV'],
95
+ },
96
+ {
97
+ step: 2,
98
+ tool: 'create_financial_report',
99
+ note: 'Optional',
100
+ required: ['companyId', 'reportType: 409A_report'],
101
+ },
102
+ ],
103
+ };
104
+ return {
105
+ content: [{ type: 'text', text: JSON.stringify(workflows, null, 2) }],
106
+ };
107
+ },
108
+ },
109
+ {
110
+ name: 'cap_table_summary',
111
+ description: 'Get a quick overview of the current cap table state — stakeholder count, share classes, ' +
112
+ 'open SAFEs, active grants. Use this to understand what is already set up before starting workflows.',
113
+ inputSchema: z.object({
114
+ companyId: z.string().describe('Company ID'),
115
+ }),
116
+ handler: async (input, client) => {
117
+ const [stakeholders, shareClasses, safes, equityPlans] = await Promise.all([
118
+ client.get('/api/v1/stakeholders', { params: { companyId: input.companyId, limit: 100 } }),
119
+ client.get('/api/v1/share-classes', { params: { companyId: input.companyId, limit: 100 } }),
120
+ client.get('/api/v1/safes', { params: { companyId: input.companyId, limit: 100 } }),
121
+ client.get('/api/v1/equity-plans', { params: { companyId: input.companyId, limit: 100 } }),
122
+ ]);
123
+ const summary = {
124
+ companyId: input.companyId,
125
+ stakeholders: (stakeholders.data.stakeholders ?? stakeholders.data).length,
126
+ shareClasses: (shareClasses.data.shareClasses ?? shareClasses.data).length,
127
+ openSafes: (safes.data.safes ?? safes.data).filter((s) => s.status === 'open' || s.status === 'draft').length,
128
+ equityPlans: (equityPlans.data.equityPlans ?? equityPlans.data).length,
129
+ };
130
+ return {
131
+ content: [{ type: 'text', text: JSON.stringify(summary, null, 2) }],
132
+ };
133
+ },
134
+ },
135
+ ];
136
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../src/tools/safes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,cAAc,EAuGrC,CAAC"}
1
+ {"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../src/tools/safes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,cAAc,EAuHrC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { coerceFloat, coerceBool, coerceInt } from '../schema.js';
2
3
  export const safeTools = [
3
4
  {
4
5
  name: 'list_safes',
@@ -6,7 +7,7 @@ export const safeTools = [
6
7
  inputSchema: z.object({
7
8
  companyId: z.string().optional().describe('Filter by company ID'),
8
9
  investorId: z.string().optional().describe('Filter by investor stakeholder ID'),
9
- limit: z.number().optional().default(50).describe('Max results to return'),
10
+ limit: coerceInt('Max results to return').optional().default(50),
10
11
  }),
11
12
  handler: async (input, client) => {
12
13
  const { data } = await client.get('/api/v1/safes', { params: input });
@@ -18,9 +19,9 @@ export const safeTools = [
18
19
  },
19
20
  {
20
21
  name: 'get_safe',
21
- description: 'Get details for a specific SAFE instrument by ID.',
22
+ description: 'Get details for a specific SAFE instrument by ID. Use the `safeId` field (e.g. `safe_xxx`) from `list_safes`, not the `_id` field.',
22
23
  inputSchema: z.object({
23
- id: z.string().describe('SAFE ID'),
24
+ id: z.string().describe('SAFE ID — use the `safeId` field from list_safes, not `_id`'),
24
25
  }),
25
26
  handler: async (input, client) => {
26
27
  const { data } = await client.get(`/api/v1/safes/${input.id}`);
@@ -31,47 +32,52 @@ export const safeTools = [
31
32
  name: 'create_safe',
32
33
  description: 'Record a new SAFE instrument (e.g. post-money SAFE from a YC-style round).',
33
34
  inputSchema: z.object({
34
- investmentAmount: z
35
- .union([z.number(), z.string()])
36
- .transform((v) => parseFloat(String(v)))
37
- .describe('Investment amount in USD'),
38
- valuationCap: z
39
- .union([z.number(), z.string()])
40
- .transform((v) => parseFloat(String(v)))
41
- .optional()
42
- .describe('Valuation cap in USD (for valuation cap SAFEs)'),
43
- discountRate: z
44
- .union([z.number(), z.string()])
45
- .transform((v) => parseFloat(String(v)))
46
- .optional()
47
- .describe('Discount rate percentage (e.g. 20 for 20%)'),
35
+ investmentAmount: coerceFloat('Investment amount in USD'),
36
+ valuationCap: coerceFloat('Valuation cap in USD (for valuation cap SAFEs)')
37
+ .optional(),
38
+ discountRate: coerceFloat('Discount rate percentage (e.g. 20 for 20%)')
39
+ .optional(),
48
40
  safeType: z
49
41
  .enum(['valuation_cap', 'discount', 'mfn', 'valuation_cap_and_discount'])
50
42
  .describe('Type of SAFE'),
51
43
  investorId: z.string().describe('Stakeholder ID of the investor'),
52
44
  companyId: z.string().describe('Company ID'),
53
45
  investmentDate: z.string().describe('Investment date in ISO 8601 format (YYYY-MM-DD)'),
54
- proRataRights: z
55
- .union([z.boolean(), z.string()])
56
- .transform((v) => v === true || v === 'true')
46
+ proRataRights: coerceBool('Whether the investor has pro-rata rights')
57
47
  .optional()
58
- .default(false)
59
- .describe('Whether the investor has pro-rata rights'),
48
+ .default(false),
60
49
  }),
61
50
  handler: async (input, client) => {
62
- const { data } = await client.post('/api/v1/safes', input);
63
- return {
64
- content: [
65
- { type: 'text', text: `SAFE created: ${JSON.stringify(data, null, 2)}` },
66
- ],
67
- };
51
+ const { data: created } = await client.post('/api/v1/safes', input);
52
+ const id = created.safeId ?? created.row_id ?? created._id;
53
+ try {
54
+ const { data: confirmed } = await client.get(`/api/v1/safes/${id}`);
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: `SAFE created:\n${JSON.stringify(confirmed, null, 2)}\n\nID for follow-up operations: ${id}`,
60
+ },
61
+ ],
62
+ };
63
+ }
64
+ catch {
65
+ return {
66
+ content: [
67
+ {
68
+ type: 'text',
69
+ text: `SAFE created (could not confirm persisted state — verify with get_safe):\n${JSON.stringify(created, null, 2)}`,
70
+ },
71
+ ],
72
+ };
73
+ }
68
74
  },
69
75
  },
70
76
  {
71
77
  name: 'update_safe',
72
- description: 'Update an existing SAFE instrument (e.g. record conversion).',
78
+ description: 'Update an existing SAFE instrument (e.g. record conversion). Use the `safeId` field (e.g. `safe_xxx`) from `list_safes`, not the `_id` field.',
73
79
  inputSchema: z.object({
74
- id: z.string().describe('SAFE ID'),
80
+ id: z.string().describe('SAFE ID — use the `safeId` field from list_safes, not `_id`'),
75
81
  status: z
76
82
  .enum(['open', 'converted', 'cancelled'])
77
83
  .optional()
@@ -84,21 +90,32 @@ export const safeTools = [
84
90
  .string()
85
91
  .optional()
86
92
  .describe('Share class ID that this SAFE converted into'),
87
- convertedShares: z
88
- .number()
89
- .int()
90
- .positive()
91
- .optional()
92
- .describe('Number of shares issued upon conversion'),
93
+ convertedShares: coerceInt('Number of shares issued upon conversion').optional(),
93
94
  }),
94
95
  handler: async (input, client) => {
95
96
  const { id, ...body } = input;
96
- const { data } = await client.put(`/api/v1/safes/${id}`, body);
97
- return {
98
- content: [
99
- { type: 'text', text: `SAFE updated: ${JSON.stringify(data, null, 2)}` },
100
- ],
101
- };
97
+ const { data: updated } = await client.put(`/api/v1/safes/${id}`, body);
98
+ try {
99
+ const { data: confirmed } = await client.get(`/api/v1/safes/${id}`);
100
+ return {
101
+ content: [
102
+ {
103
+ type: 'text',
104
+ text: `SAFE updated:\n${JSON.stringify(confirmed, null, 2)}\n\nID for follow-up operations: ${id}`,
105
+ },
106
+ ],
107
+ };
108
+ }
109
+ catch {
110
+ return {
111
+ content: [
112
+ {
113
+ type: 'text',
114
+ text: `SAFE updated (could not confirm persisted state — verify with get_safe):\n${JSON.stringify(updated, null, 2)}`,
115
+ },
116
+ ],
117
+ };
118
+ }
102
119
  },
103
120
  },
104
121
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"safes.js","sourceRoot":"","sources":["../../src/tools/safes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safes.js","sourceRoot":"","sources":["../../src/tools/safes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shareClasses.d.ts","sourceRoot":"","sources":["../../src/tools/shareClasses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,cAAc,EAiE3C,CAAC"}
1
+ {"version":3,"file":"shareClasses.d.ts","sourceRoot":"","sources":["../../src/tools/shareClasses.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,cAAc,EA2E3C,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { z } from 'zod';
2
+ import { coerceInt, coerceFloat } from '../schema.js';
2
3
  export const shareClassTools = [
3
4
  {
4
5
  name: 'list_share_classes',
5
6
  description: 'List all share classes defined in the cap table (e.g. Common, Series A Preferred).',
6
7
  inputSchema: z.object({
7
8
  companyId: z.string().optional().describe('Filter by company ID'),
8
- limit: z.number().optional().default(50).describe('Max results to return'),
9
+ limit: coerceInt('Max results to return').optional().default(50),
9
10
  }),
10
11
  handler: async (input, client) => {
11
12
  const { data } = await client.get('/api/v1/share-classes', { params: input });
@@ -17,9 +18,9 @@ export const shareClassTools = [
17
18
  },
18
19
  {
19
20
  name: 'get_share_class',
20
- description: 'Get details for a specific share class by ID.',
21
+ description: 'Get details for a specific share class by ID. Use the `row_id` field from `list_share_classes`.',
21
22
  inputSchema: z.object({
22
- id: z.string().describe('Share class ID'),
23
+ id: z.string().describe('Share class ID — use the `row_id` field from list_share_classes'),
23
24
  }),
24
25
  handler: async (input, client) => {
25
26
  const { data } = await client.get(`/api/v1/share-classes/${input.id}`);
@@ -34,33 +35,40 @@ export const shareClassTools = [
34
35
  classType: z
35
36
  .enum(['common', 'preferred', 'warrant', 'option'])
36
37
  .describe('Type of share class'),
37
- authorizedShares: z
38
- .union([z.number(), z.string()])
39
- .transform((v) => parseInt(String(v), 10))
40
- .describe('Total number of authorized shares'),
41
- parValue: z
42
- .union([z.number(), z.string()])
43
- .transform((v) => parseFloat(String(v)))
44
- .optional()
45
- .describe('Par value per share in USD'),
38
+ authorizedShares: coerceInt('Total number of authorized shares').refine((v) => v > 0, { message: 'authorizedShares must be a positive integer' }),
39
+ parValue: coerceFloat('Par value per share in USD').optional(),
46
40
  companyId: z.string().describe('Company ID this share class belongs to'),
47
- liquidationPreference: z
48
- .union([z.number(), z.string()])
49
- .transform((v) => parseFloat(String(v)))
50
- .optional()
51
- .describe('Liquidation preference multiplier (e.g. 1 for 1x)'),
41
+ liquidationPreference: coerceFloat('Liquidation preference multiplier (e.g. 1 for 1x)')
42
+ .optional(),
52
43
  participationRights: z
53
44
  .enum(['none', 'full', 'capped'])
54
45
  .optional()
55
46
  .describe('Participation rights type'),
56
47
  }),
57
48
  handler: async (input, client) => {
58
- const { data } = await client.post('/api/v1/share-classes', input);
59
- return {
60
- content: [
61
- { type: 'text', text: `Share class created: ${JSON.stringify(data, null, 2)}` },
62
- ],
63
- };
49
+ const { data: created } = await client.post('/api/v1/share-classes', input);
50
+ const id = created.row_id ?? created._id;
51
+ try {
52
+ const { data: confirmed } = await client.get(`/api/v1/share-classes/${id}`);
53
+ return {
54
+ content: [
55
+ {
56
+ type: 'text',
57
+ text: `Share class created:\n${JSON.stringify(confirmed, null, 2)}\n\nID for follow-up operations: ${id}`,
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ catch {
63
+ return {
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: `Share class created (could not confirm persisted state — verify with get_share_class):\n${JSON.stringify(created, null, 2)}`,
68
+ },
69
+ ],
70
+ };
71
+ }
64
72
  },
65
73
  },
66
74
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"shareClasses.js","sourceRoot":"","sources":["../../src/tools/shareClasses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shareClasses.js","sourceRoot":"","sources":["../../src/tools/shareClasses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGtD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,oFAAoF;QACtF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,KAAK,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;SACjE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACzE,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,iGAAiG;QACnG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;SAC3F,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACxE,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;iBAClD,QAAQ,CAAC,qBAAqB,CAAC;YAClC,gBAAgB,EAAE,SAAS,CAAC,mCAAmC,CAAC,CAAC,MAAM,CACrE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EACZ,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAC3D;YACD,QAAQ,EAAE,WAAW,CAAC,4BAA4B,CAAC,CAAC,QAAQ,EAAE;YAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACxE,qBAAqB,EAAE,WAAW,CAAC,mDAAmD,CAAC;iBACpF,QAAQ,EAAE;YACb,mBAAmB,EAAE,CAAC;iBACnB,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CAAC,2BAA2B,CAAC;SACzC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;gBAC5E,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,oCAAoC,EAAE,EAAE;yBAC1G;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,2FAA2F,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;yBACpI;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stakeholders.d.ts","sourceRoot":"","sources":["../../src/tools/stakeholders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAsE5C,CAAC"}
1
+ {"version":3,"file":"stakeholders.d.ts","sourceRoot":"","sources":["../../src/tools/stakeholders.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAuG5C,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { z } from 'zod';
2
+ import { coerceInt } from '../schema.js';
2
3
  export const stakeholderTools = [
3
4
  {
4
5
  name: 'list_stakeholders',
5
6
  description: 'List all stakeholders in the cap table. Returns name, email, role, and ownership details.',
6
7
  inputSchema: z.object({
7
8
  companyId: z.string().optional().describe('Filter by company ID'),
8
- limit: z.number().optional().default(50).describe('Max results to return'),
9
+ limit: coerceInt('Max results to return').optional().default(50),
9
10
  }),
10
11
  handler: async (input, client) => {
11
12
  const { data } = await client.get('/api/v1/stakeholders', { params: input });
@@ -17,9 +18,9 @@ export const stakeholderTools = [
17
18
  },
18
19
  {
19
20
  name: 'get_stakeholder',
20
- description: 'Get details for a specific stakeholder by ID.',
21
+ description: 'Get details for a specific stakeholder by ID. Use the `row_id` field from `list_stakeholders`.',
21
22
  inputSchema: z.object({
22
- id: z.string().describe('Stakeholder ID'),
23
+ id: z.string().describe('Stakeholder ID — use the `row_id` field from list_stakeholders'),
23
24
  }),
24
25
  handler: async (input, client) => {
25
26
  const { data } = await client.get(`/api/v1/stakeholders/${input.id}`);
@@ -38,19 +39,36 @@ export const stakeholderTools = [
38
39
  companyId: z.string().describe('Company ID to add the stakeholder to'),
39
40
  }),
40
41
  handler: async (input, client) => {
41
- const { data } = await client.post('/api/v1/stakeholders', input);
42
- return {
43
- content: [
44
- { type: 'text', text: `Stakeholder created: ${JSON.stringify(data, null, 2)}` },
45
- ],
46
- };
42
+ const { data: created } = await client.post('/api/v1/stakeholders', input);
43
+ const id = created.row_id ?? created._id;
44
+ try {
45
+ const { data: confirmed } = await client.get(`/api/v1/stakeholders/${id}`);
46
+ return {
47
+ content: [
48
+ {
49
+ type: 'text',
50
+ text: `Stakeholder created:\n${JSON.stringify(confirmed, null, 2)}\n\nID for follow-up operations: ${id}`,
51
+ },
52
+ ],
53
+ };
54
+ }
55
+ catch {
56
+ return {
57
+ content: [
58
+ {
59
+ type: 'text',
60
+ text: `Stakeholder created (could not confirm persisted state — verify with get_stakeholder):\n${JSON.stringify(created, null, 2)}`,
61
+ },
62
+ ],
63
+ };
64
+ }
47
65
  },
48
66
  },
49
67
  {
50
68
  name: 'update_stakeholder',
51
- description: 'Update an existing stakeholder by ID.',
69
+ description: 'Update an existing stakeholder by ID. Use the `row_id` field from `list_stakeholders`.',
52
70
  inputSchema: z.object({
53
- id: z.string().describe('Stakeholder ID'),
71
+ id: z.string().describe('Stakeholder ID — use the `row_id` field from list_stakeholders'),
54
72
  name: z.string().optional().describe('Full name'),
55
73
  email: z.string().email().optional().describe('Email address'),
56
74
  role: z
@@ -60,12 +78,28 @@ export const stakeholderTools = [
60
78
  }),
61
79
  handler: async (input, client) => {
62
80
  const { id, ...body } = input;
63
- const { data } = await client.put(`/api/v1/stakeholders/${id}`, body);
64
- return {
65
- content: [
66
- { type: 'text', text: `Stakeholder updated: ${JSON.stringify(data, null, 2)}` },
67
- ],
68
- };
81
+ const { data: updated } = await client.put(`/api/v1/stakeholders/${id}`, body);
82
+ try {
83
+ const { data: confirmed } = await client.get(`/api/v1/stakeholders/${id}`);
84
+ return {
85
+ content: [
86
+ {
87
+ type: 'text',
88
+ text: `Stakeholder updated:\n${JSON.stringify(confirmed, null, 2)}\n\nID for follow-up operations: ${id}`,
89
+ },
90
+ ],
91
+ };
92
+ }
93
+ catch {
94
+ return {
95
+ content: [
96
+ {
97
+ type: 'text',
98
+ text: `Stakeholder updated (could not confirm persisted state — verify with get_stakeholder):\n${JSON.stringify(updated, null, 2)}`,
99
+ },
100
+ ],
101
+ };
102
+ }
69
103
  },
70
104
  },
71
105
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"stakeholders.js","sourceRoot":"","sources":["../../src/tools/stakeholders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stakeholders.js","sourceRoot":"","sources":["../../src/tools/stakeholders.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"valuations.d.ts","sourceRoot":"","sources":["../../src/tools/valuations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,cAAc,EAqE1C,CAAC"}
1
+ {"version":3,"file":"valuations.d.ts","sourceRoot":"","sources":["../../src/tools/valuations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,cAAc,EA6E1C,CAAC"}