@opencapstack/mcp-server 0.1.2 → 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.
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +5 -1
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -5
- package/dist/client.js.map +1 -1
- package/dist/schema.d.ts +13 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +22 -0
- package/dist/schema.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/dilution.d.ts.map +1 -1
- package/dist/tools/dilution.js +6 -13
- package/dist/tools/dilution.js.map +1 -1
- package/dist/tools/documents.d.ts.map +1 -1
- package/dist/tools/documents.js +3 -2
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/equityGrants.d.ts +3 -0
- package/dist/tools/equityGrants.d.ts.map +1 -0
- package/dist/tools/equityGrants.js +145 -0
- package/dist/tools/equityGrants.js.map +1 -0
- package/dist/tools/equityPlans.d.ts.map +1 -1
- package/dist/tools/equityPlans.js +30 -16
- package/dist/tools/equityPlans.js.map +1 -1
- package/dist/tools/financialReports.d.ts.map +1 -1
- package/dist/tools/financialReports.js +33 -17
- package/dist/tools/financialReports.js.map +1 -1
- package/dist/tools/meta.d.ts +3 -0
- package/dist/tools/meta.d.ts.map +1 -0
- package/dist/tools/meta.js +136 -0
- package/dist/tools/meta.js.map +1 -0
- package/dist/tools/safes.d.ts.map +1 -1
- package/dist/tools/safes.js +59 -42
- package/dist/tools/safes.js.map +1 -1
- package/dist/tools/shareClasses.d.ts.map +1 -1
- package/dist/tools/shareClasses.js +31 -23
- package/dist/tools/shareClasses.js.map +1 -1
- package/dist/tools/stakeholders.d.ts.map +1 -1
- package/dist/tools/stakeholders.js +51 -17
- package/dist/tools/stakeholders.js.map +1 -1
- package/dist/tools/valuations.d.ts.map +1 -1
- package/dist/tools/valuations.js +30 -17
- package/dist/tools/valuations.js.map +1 -1
- package/dist/tools/waterfall.d.ts.map +1 -1
- package/dist/tools/waterfall.js +7 -16
- package/dist/tools/waterfall.js.map +1 -1
- package/package.json +1 -1
- package/src/auth.ts +7 -1
- package/src/client.ts +23 -6
- package/src/schema.ts +28 -0
- package/src/server.ts +5 -1
- package/src/tools/dilution.ts +12 -13
- package/src/tools/documents.ts +3 -2
- package/src/tools/equityGrants.ts +154 -0
- package/src/tools/equityPlans.ts +30 -16
- package/src/tools/financialReports.ts +37 -17
- package/src/tools/meta.ts +142 -0
- package/src/tools/safes.ts +59 -42
- package/src/tools/shareClasses.ts +34 -23
- package/src/tools/stakeholders.ts +51 -17
- package/src/tools/valuations.ts +29 -20
- package/src/tools/waterfall.ts +13 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"financialReports.js","sourceRoot":"","sources":["../../src/tools/financialReports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"financialReports.js","sourceRoot":"","sources":["../../src/tools/financialReports.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"
|
|
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"}
|
package/dist/tools/safes.js
CHANGED
|
@@ -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:
|
|
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:
|
|
35
|
-
|
|
36
|
-
.
|
|
37
|
-
|
|
38
|
-
|
|
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:
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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:
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
];
|
package/dist/tools/safes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safes.js","sourceRoot":"","sources":["../../src/tools/safes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
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":"
|
|
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:
|
|
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:
|
|
38
|
-
|
|
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:
|
|
48
|
-
.
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"shareClasses.js","sourceRoot":"","sources":["../../src/tools/shareClasses.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stakeholders.d.ts","sourceRoot":"","sources":["../../src/tools/stakeholders.ts"],"names":[],"mappings":"
|
|
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:
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
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":"
|
|
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"}
|