@brxce/mcp-server 1.0.3 → 1.0.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 (134) hide show
  1. package/dist/http-server.d.ts +5 -0
  2. package/dist/http-server.d.ts.map +1 -0
  3. package/dist/http-server.js +154 -0
  4. package/dist/http-server.js.map +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +34 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/resources/workspace-members-resource.d.ts.map +1 -1
  9. package/dist/resources/workspace-members-resource.js +4 -2
  10. package/dist/resources/workspace-members-resource.js.map +1 -1
  11. package/dist/server.d.ts +24 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +212 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/services/api-client.d.ts +32 -1
  16. package/dist/services/api-client.d.ts.map +1 -1
  17. package/dist/services/api-client.js +140 -65
  18. package/dist/services/api-client.js.map +1 -1
  19. package/dist/tools/comment-tool.d.ts +4 -0
  20. package/dist/tools/comment-tool.d.ts.map +1 -0
  21. package/dist/tools/comment-tool.js +139 -0
  22. package/dist/tools/comment-tool.js.map +1 -0
  23. package/dist/tools/criteria-tool.d.ts +4 -0
  24. package/dist/tools/criteria-tool.d.ts.map +1 -0
  25. package/dist/tools/criteria-tool.js +194 -0
  26. package/dist/tools/criteria-tool.js.map +1 -0
  27. package/dist/tools/invitation-tool.d.ts +11 -0
  28. package/dist/tools/invitation-tool.d.ts.map +1 -0
  29. package/dist/tools/invitation-tool.js +245 -0
  30. package/dist/tools/invitation-tool.js.map +1 -0
  31. package/dist/tools/meeting-agenda-tool.d.ts.map +1 -1
  32. package/dist/tools/meeting-agenda-tool.js +9 -86
  33. package/dist/tools/meeting-agenda-tool.js.map +1 -1
  34. package/dist/tools/meeting-create-tool.d.ts.map +1 -1
  35. package/dist/tools/meeting-create-tool.js +3 -91
  36. package/dist/tools/meeting-create-tool.js.map +1 -1
  37. package/dist/tools/meeting-decisions-tool.d.ts.map +1 -1
  38. package/dist/tools/meeting-decisions-tool.js +8 -83
  39. package/dist/tools/meeting-decisions-tool.js.map +1 -1
  40. package/dist/tools/meeting-delete-tool.d.ts +7 -0
  41. package/dist/tools/meeting-delete-tool.d.ts.map +1 -0
  42. package/dist/tools/meeting-delete-tool.js +57 -0
  43. package/dist/tools/meeting-delete-tool.js.map +1 -0
  44. package/dist/tools/meeting-list-tool.d.ts.map +1 -1
  45. package/dist/tools/meeting-list-tool.js +6 -93
  46. package/dist/tools/meeting-list-tool.js.map +1 -1
  47. package/dist/tools/meeting-notes-tool.d.ts.map +1 -1
  48. package/dist/tools/meeting-notes-tool.js +8 -69
  49. package/dist/tools/meeting-notes-tool.js.map +1 -1
  50. package/dist/tools/meeting-update-tool.d.ts.map +1 -1
  51. package/dist/tools/meeting-update-tool.js +4 -132
  52. package/dist/tools/meeting-update-tool.js.map +1 -1
  53. package/dist/tools/notification-tool.d.ts +11 -0
  54. package/dist/tools/notification-tool.d.ts.map +1 -0
  55. package/dist/tools/notification-tool.js +143 -0
  56. package/dist/tools/notification-tool.js.map +1 -0
  57. package/dist/tools/tag-category-tool.d.ts.map +1 -1
  58. package/dist/tools/tag-category-tool.js +9 -63
  59. package/dist/tools/tag-category-tool.js.map +1 -1
  60. package/dist/tools/tag-search-tool.d.ts.map +1 -1
  61. package/dist/tools/tag-search-tool.js +11 -87
  62. package/dist/tools/tag-search-tool.js.map +1 -1
  63. package/dist/tools/tag-tool.d.ts.map +1 -1
  64. package/dist/tools/tag-tool.js +13 -101
  65. package/dist/tools/tag-tool.js.map +1 -1
  66. package/dist/tools/worknode-archive-tool.d.ts.map +1 -1
  67. package/dist/tools/worknode-archive-tool.js +4 -44
  68. package/dist/tools/worknode-archive-tool.js.map +1 -1
  69. package/dist/tools/worknode-batch-tool.d.ts +4 -0
  70. package/dist/tools/worknode-batch-tool.d.ts.map +1 -0
  71. package/dist/tools/worknode-batch-tool.js +109 -0
  72. package/dist/tools/worknode-batch-tool.js.map +1 -0
  73. package/dist/tools/worknode-by-member-tool.d.ts +4 -0
  74. package/dist/tools/worknode-by-member-tool.d.ts.map +1 -0
  75. package/dist/tools/worknode-by-member-tool.js +168 -0
  76. package/dist/tools/worknode-by-member-tool.js.map +1 -0
  77. package/dist/tools/worknode-complete-tool.d.ts +4 -0
  78. package/dist/tools/worknode-complete-tool.d.ts.map +1 -0
  79. package/dist/tools/worknode-complete-tool.js +83 -0
  80. package/dist/tools/worknode-complete-tool.js.map +1 -0
  81. package/dist/tools/worknode-create-tool.d.ts.map +1 -1
  82. package/dist/tools/worknode-create-tool.js +22 -113
  83. package/dist/tools/worknode-create-tool.js.map +1 -1
  84. package/dist/tools/worknode-delete-tool.d.ts +4 -0
  85. package/dist/tools/worknode-delete-tool.d.ts.map +1 -0
  86. package/dist/tools/worknode-delete-tool.js +51 -0
  87. package/dist/tools/worknode-delete-tool.js.map +1 -0
  88. package/dist/tools/worknode-history-tool.d.ts +4 -0
  89. package/dist/tools/worknode-history-tool.d.ts.map +1 -0
  90. package/dist/tools/worknode-history-tool.js +101 -0
  91. package/dist/tools/worknode-history-tool.js.map +1 -0
  92. package/dist/tools/worknode-move-tool.d.ts +4 -0
  93. package/dist/tools/worknode-move-tool.d.ts.map +1 -0
  94. package/dist/tools/worknode-move-tool.js +78 -0
  95. package/dist/tools/worknode-move-tool.js.map +1 -0
  96. package/dist/tools/worknode-plan-organize-tool.d.ts.map +1 -1
  97. package/dist/tools/worknode-plan-organize-tool.js +8 -117
  98. package/dist/tools/worknode-plan-organize-tool.js.map +1 -1
  99. package/dist/tools/worknode-read-tool.d.ts.map +1 -1
  100. package/dist/tools/worknode-read-tool.js +7 -110
  101. package/dist/tools/worknode-read-tool.js.map +1 -1
  102. package/dist/tools/worknode-subtree-tool.d.ts.map +1 -1
  103. package/dist/tools/worknode-subtree-tool.js +5 -65
  104. package/dist/tools/worknode-subtree-tool.js.map +1 -1
  105. package/dist/tools/worknode-tag-tool.d.ts.map +1 -1
  106. package/dist/tools/worknode-tag-tool.js +11 -99
  107. package/dist/tools/worknode-tag-tool.js.map +1 -1
  108. package/dist/tools/worknode-update-tool.d.ts.map +1 -1
  109. package/dist/tools/worknode-update-tool.js +22 -110
  110. package/dist/tools/worknode-update-tool.js.map +1 -1
  111. package/dist/tools/workspace-ascii-export-tool.d.ts +4 -0
  112. package/dist/tools/workspace-ascii-export-tool.d.ts.map +1 -0
  113. package/dist/tools/workspace-ascii-export-tool.js +96 -0
  114. package/dist/tools/workspace-ascii-export-tool.js.map +1 -0
  115. package/dist/tools/workspace-inbox-tool.d.ts.map +1 -1
  116. package/dist/tools/workspace-inbox-tool.js +4 -72
  117. package/dist/tools/workspace-inbox-tool.js.map +1 -1
  118. package/dist/tools/workspace-list-tool.d.ts.map +1 -1
  119. package/dist/tools/workspace-list-tool.js +3 -49
  120. package/dist/tools/workspace-list-tool.js.map +1 -1
  121. package/dist/tools/workspace-member-tool.d.ts +7 -0
  122. package/dist/tools/workspace-member-tool.d.ts.map +1 -0
  123. package/dist/tools/workspace-member-tool.js +172 -0
  124. package/dist/tools/workspace-member-tool.js.map +1 -0
  125. package/dist/tools/workspace-members-list-tool.d.ts.map +1 -1
  126. package/dist/tools/workspace-members-list-tool.js +5 -84
  127. package/dist/tools/workspace-members-list-tool.js.map +1 -1
  128. package/dist/tools/workspace-statistics-tool.d.ts.map +1 -1
  129. package/dist/tools/workspace-statistics-tool.js +3 -169
  130. package/dist/tools/workspace-statistics-tool.js.map +1 -1
  131. package/dist/tools/workspace-tree-tool.d.ts.map +1 -1
  132. package/dist/tools/workspace-tree-tool.js +10 -178
  133. package/dist/tools/workspace-tree-tool.js.map +1 -1
  134. package/package.json +12 -11
@@ -0,0 +1,194 @@
1
+ import { z } from 'zod';
2
+ export function registerCriteriaTools(server, apiClient) {
3
+ // Create Criteria
4
+ server.registerTool('brxce_create_criteria', {
5
+ description: `Create acceptance criteria for WorkNode.
6
+
7
+ Params: nodeId, title, description?, criteriaType?, priority?, measurementType?, targetValue?
8
+ Types: acceptance|exit|success|definition_of_done|business_rule|quality|performance|security
9
+ Priorities: critical|mandatory|important|optional|nice_to_have`,
10
+ inputSchema: {
11
+ nodeId: z.string().uuid().describe('WorkNode UUID'),
12
+ title: z.string().min(1).max(255).describe('Criteria title'),
13
+ description: z.string().optional().describe('Detailed description'),
14
+ criteriaType: z
15
+ .enum(['acceptance', 'exit', 'success', 'definition_of_done', 'business_rule', 'quality', 'performance', 'security'])
16
+ .optional()
17
+ .describe('Type of criteria'),
18
+ priority: z
19
+ .enum(['critical', 'mandatory', 'important', 'optional', 'nice_to_have'])
20
+ .optional()
21
+ .describe('Priority level'),
22
+ measurementType: z
23
+ .enum(['boolean', 'numeric', 'percentage', 'text', 'date', 'milestone'])
24
+ .optional()
25
+ .describe('Measurement type'),
26
+ targetValue: z.string().optional().describe('Target value for numeric/percentage types'),
27
+ },
28
+ }, async (args) => {
29
+ try {
30
+ const response = await apiClient.post('/mcp/criteria/create', args);
31
+ if (!response.success) {
32
+ return {
33
+ content: [
34
+ { type: 'text', text: `Failed to create criteria: ${response.message || 'Unknown error'}` },
35
+ ],
36
+ };
37
+ }
38
+ const { criteria } = response.data;
39
+ let resultText = '## Criteria Created\n\n';
40
+ resultText += `✅ **Criteria ID**: ${criteria.id}\n`;
41
+ resultText += `- **Title**: ${criteria.title}\n`;
42
+ resultText += `- **Type**: ${criteria.criteriaType}\n`;
43
+ resultText += `- **Priority**: ${criteria.priority}\n`;
44
+ resultText += `- **Measurement**: ${criteria.measurementType}\n`;
45
+ resultText += `- **Completed**: ${criteria.isCompleted}\n`;
46
+ return { content: [{ type: 'text', text: resultText }] };
47
+ }
48
+ catch (error) {
49
+ return {
50
+ content: [{ type: 'text', text: `Error creating criteria: ${error.message || 'Unknown error'}` }],
51
+ };
52
+ }
53
+ });
54
+ // List Criteria
55
+ server.registerTool('brxce_list_criteria', {
56
+ description: `List WorkNode acceptance criteria.
57
+
58
+ Params: nodeId, completed?`,
59
+ inputSchema: {
60
+ nodeId: z.string().uuid().describe('WorkNode UUID'),
61
+ completed: z.boolean().optional().describe('Filter by completion status'),
62
+ },
63
+ }, async (args) => {
64
+ try {
65
+ const queryParams = new URLSearchParams({ nodeId: args.nodeId });
66
+ if (args.completed !== undefined) {
67
+ queryParams.append('completed', String(args.completed));
68
+ }
69
+ const response = await apiClient.get(`/mcp/criteria/list?${queryParams}`);
70
+ if (!response.success) {
71
+ return {
72
+ content: [
73
+ { type: 'text', text: `Failed to list criteria: ${response.message || 'Unknown error'}` },
74
+ ],
75
+ };
76
+ }
77
+ const { criteria, count } = response.data;
78
+ let resultText = `## Acceptance Criteria (${count})\n\n`;
79
+ if (count === 0) {
80
+ resultText += 'No criteria found.\n';
81
+ }
82
+ else {
83
+ const pending = criteria.filter(c => !c.isCompleted);
84
+ const completed = criteria.filter(c => c.isCompleted);
85
+ if (pending.length > 0) {
86
+ resultText += `### ⏳ Pending (${pending.length})\n\n`;
87
+ pending.forEach((c, i) => {
88
+ resultText += `${i + 1}. **${c.title}** [${c.priority}]\n`;
89
+ if (c.description)
90
+ resultText += ` ${c.description}\n`;
91
+ if (c.measurementType !== 'boolean') {
92
+ resultText += ` Measurement: ${c.measurementType}`;
93
+ if (c.targetValue)
94
+ resultText += ` (target: ${c.targetValue})`;
95
+ resultText += '\n';
96
+ }
97
+ resultText += ` ID: ${c.id}\n\n`;
98
+ });
99
+ }
100
+ if (completed.length > 0) {
101
+ resultText += `### ✅ Completed (${completed.length})\n\n`;
102
+ completed.forEach((c, i) => {
103
+ resultText += `${i + 1}. ~~${c.title}~~ [${c.priority}]\n`;
104
+ if (c.currentValue)
105
+ resultText += ` Current value: ${c.currentValue}\n`;
106
+ resultText += ` ID: ${c.id}\n\n`;
107
+ });
108
+ }
109
+ }
110
+ return { content: [{ type: 'text', text: resultText }] };
111
+ }
112
+ catch (error) {
113
+ return {
114
+ content: [{ type: 'text', text: `Error listing criteria: ${error.message || 'Unknown error'}` }],
115
+ };
116
+ }
117
+ });
118
+ // Update Criteria
119
+ server.registerTool('brxce_update_criteria', {
120
+ description: `Update criteria.
121
+
122
+ Params: criteriaId, title?, description?, priority?, targetValue?, currentValue?, isCompleted?`,
123
+ inputSchema: {
124
+ criteriaId: z.string().uuid().describe('Criteria UUID'),
125
+ title: z.string().min(1).max(255).optional().describe('Updated title'),
126
+ description: z.string().optional().describe('Updated description'),
127
+ priority: z
128
+ .enum(['critical', 'mandatory', 'important', 'optional', 'nice_to_have'])
129
+ .optional()
130
+ .describe('Updated priority'),
131
+ targetValue: z.string().optional().describe('Updated target value'),
132
+ currentValue: z.string().optional().describe('Current measured value'),
133
+ isCompleted: z.boolean().optional().describe('Completion status'),
134
+ },
135
+ }, async (args) => {
136
+ try {
137
+ const { criteriaId, ...body } = args;
138
+ const response = await apiClient.put(`/mcp/criteria/${criteriaId}`, body);
139
+ if (!response.success) {
140
+ return {
141
+ content: [
142
+ { type: 'text', text: `Failed to update criteria: ${response.message || 'Unknown error'}` },
143
+ ],
144
+ };
145
+ }
146
+ const { criteria } = response.data;
147
+ let resultText = '## Criteria Updated\n\n';
148
+ resultText += `✅ **Criteria ID**: ${criteria.id}\n`;
149
+ resultText += `- **Title**: ${criteria.title}\n`;
150
+ resultText += `- **Completed**: ${criteria.isCompleted}\n`;
151
+ if (criteria.completedAt) {
152
+ resultText += `- **Completed At**: ${criteria.completedAt}\n`;
153
+ }
154
+ return { content: [{ type: 'text', text: resultText }] };
155
+ }
156
+ catch (error) {
157
+ return {
158
+ content: [{ type: 'text', text: `Error updating criteria: ${error.message || 'Unknown error'}` }],
159
+ };
160
+ }
161
+ });
162
+ // Delete Criteria
163
+ server.registerTool('brxce_delete_criteria', {
164
+ description: `Delete criteria.
165
+
166
+ Params: criteriaId`,
167
+ inputSchema: {
168
+ criteriaId: z.string().uuid().describe('Criteria UUID'),
169
+ },
170
+ }, async (args) => {
171
+ try {
172
+ const { criteriaId } = args;
173
+ const response = await apiClient.delete(`/mcp/criteria/${criteriaId}`);
174
+ if (!response.success) {
175
+ return {
176
+ content: [
177
+ { type: 'text', text: `Failed to delete criteria: ${response.message || 'Unknown error'}` },
178
+ ],
179
+ };
180
+ }
181
+ const { deletedAt } = response.data;
182
+ let resultText = '## Criteria Deleted\n\n';
183
+ resultText += `✅ **Criteria ID**: ${criteriaId}\n`;
184
+ resultText += `- **Deleted At**: ${deletedAt}\n`;
185
+ return { content: [{ type: 'text', text: resultText }] };
186
+ }
187
+ catch (error) {
188
+ return {
189
+ content: [{ type: 'text', text: `Error deleting criteria: ${error.message || 'Unknown error'}` }],
190
+ };
191
+ }
192
+ });
193
+ }
194
+ //# sourceMappingURL=criteria-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"criteria-tool.js","sourceRoot":"","sources":["../../src/tools/criteria-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ApiClient } from '../services/api-client.js';
3
+ /**
4
+ * Register Create Invitation tool for LLM-invoked workspace invitations
5
+ */
6
+ export declare function registerCreateInvitationTool(server: McpServer, apiClient: ApiClient): void;
7
+ /**
8
+ * Register List Invitations tool
9
+ */
10
+ export declare function registerListInvitationsTool(server: McpServer, apiClient: ApiClient): void;
11
+ //# sourceMappingURL=invitation-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invitation-tool.d.ts","sourceRoot":"","sources":["../../src/tools/invitation-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAgC3D;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA2JnF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAyHlF"}
@@ -0,0 +1,245 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Register Create Invitation tool for LLM-invoked workspace invitations
4
+ */
5
+ export function registerCreateInvitationTool(server, apiClient) {
6
+ server.registerTool('brxce_create_invitation', {
7
+ description: `Create workspace invitation. Verify workspaceId via user://me.
8
+
9
+ Params: workspaceId, email, role? (owner|admin|member|viewer, default: member)
10
+ Returns: invitation with status, token, expiresAt (7 days)`,
11
+ inputSchema: {
12
+ workspaceId: z
13
+ .string()
14
+ .uuid()
15
+ .describe('Workspace ID (get from user://me resource)'),
16
+ email: z
17
+ .string()
18
+ .email()
19
+ .describe('Email address of the person to invite'),
20
+ role: z
21
+ .enum(['owner', 'admin', 'member', 'viewer'])
22
+ .optional()
23
+ .describe('Role to assign (defaults to "member")'),
24
+ },
25
+ }, async (args) => {
26
+ const { workspaceId, email, role } = args;
27
+ // Validate required fields
28
+ if (!workspaceId || typeof workspaceId !== 'string') {
29
+ return {
30
+ content: [
31
+ {
32
+ type: 'text',
33
+ text: JSON.stringify({
34
+ error: 'Invalid workspace ID',
35
+ message: 'workspaceId is required and must be a UUID string',
36
+ hint: 'Use user://me resource to get valid workspace IDs',
37
+ }),
38
+ },
39
+ ],
40
+ isError: true,
41
+ };
42
+ }
43
+ if (!email || typeof email !== 'string') {
44
+ return {
45
+ content: [
46
+ {
47
+ type: 'text',
48
+ text: JSON.stringify({
49
+ error: 'Invalid email',
50
+ message: 'email is required and must be a valid email address',
51
+ }),
52
+ },
53
+ ],
54
+ isError: true,
55
+ };
56
+ }
57
+ try {
58
+ const response = await apiClient.post('/mcp/invitations/create', {
59
+ workspaceId,
60
+ email,
61
+ role: role || 'member',
62
+ });
63
+ if (!response.success || !response.data) {
64
+ return {
65
+ content: [
66
+ {
67
+ type: 'text',
68
+ text: JSON.stringify({
69
+ error: 'Failed to create invitation',
70
+ message: response.message || 'API returned unsuccessful response',
71
+ }),
72
+ },
73
+ ],
74
+ isError: true,
75
+ };
76
+ }
77
+ const { invitation } = response.data;
78
+ return {
79
+ content: [
80
+ {
81
+ type: 'text',
82
+ text: JSON.stringify({
83
+ invitationId: invitation.id,
84
+ email: invitation.email,
85
+ role: invitation.role,
86
+ status: invitation.status,
87
+ expiresAt: invitation.expiresAt,
88
+ message: `Invitation sent to ${invitation.email} as ${invitation.role}`,
89
+ }, null, 2),
90
+ },
91
+ ],
92
+ };
93
+ }
94
+ catch (error) {
95
+ // Handle specific error codes
96
+ if (error.response?.status === 403) {
97
+ return {
98
+ content: [
99
+ {
100
+ type: 'text',
101
+ text: JSON.stringify({
102
+ error: 'Access denied',
103
+ message: 'Only workspace owner or admin can create invitations',
104
+ }),
105
+ },
106
+ ],
107
+ isError: true,
108
+ };
109
+ }
110
+ if (error.response?.status === 400) {
111
+ return {
112
+ content: [
113
+ {
114
+ type: 'text',
115
+ text: JSON.stringify({
116
+ error: 'Validation error',
117
+ message: error.response?.data?.error || 'Invalid request data',
118
+ }),
119
+ },
120
+ ],
121
+ isError: true,
122
+ };
123
+ }
124
+ return {
125
+ content: [
126
+ {
127
+ type: 'text',
128
+ text: JSON.stringify({
129
+ error: 'Failed to create invitation',
130
+ message: error.message,
131
+ }),
132
+ },
133
+ ],
134
+ isError: true,
135
+ };
136
+ }
137
+ });
138
+ }
139
+ /**
140
+ * Register List Invitations tool
141
+ */
142
+ export function registerListInvitationsTool(server, apiClient) {
143
+ server.registerTool('brxce_list_invitations', {
144
+ description: `List workspace invitations. Verify workspaceId via user://me.
145
+
146
+ Params: workspaceId, status? (pending|accepted|declined|cancelled|expired)
147
+ Returns: invitations[] with email, role, status, expiresAt`,
148
+ inputSchema: {
149
+ workspaceId: z
150
+ .string()
151
+ .uuid()
152
+ .describe('Workspace ID (get from user://me resource)'),
153
+ status: z
154
+ .enum(['pending', 'accepted', 'declined', 'cancelled', 'expired'])
155
+ .optional()
156
+ .describe('Filter by status (optional)'),
157
+ },
158
+ }, async (args) => {
159
+ const { workspaceId, status } = args;
160
+ if (!workspaceId || typeof workspaceId !== 'string') {
161
+ return {
162
+ content: [
163
+ {
164
+ type: 'text',
165
+ text: JSON.stringify({
166
+ error: 'Invalid workspace ID',
167
+ message: 'workspaceId is required and must be a UUID string',
168
+ hint: 'Use user://me resource to get valid workspace IDs',
169
+ }),
170
+ },
171
+ ],
172
+ isError: true,
173
+ };
174
+ }
175
+ try {
176
+ const queryParams = new URLSearchParams({ workspaceId });
177
+ if (status) {
178
+ queryParams.append('status', status);
179
+ }
180
+ const response = await apiClient.get(`/mcp/invitations/list?${queryParams.toString()}`);
181
+ if (!response.success || !response.data) {
182
+ return {
183
+ content: [
184
+ {
185
+ type: 'text',
186
+ text: JSON.stringify({
187
+ error: 'Failed to list invitations',
188
+ message: response.message || 'API returned unsuccessful response',
189
+ }),
190
+ },
191
+ ],
192
+ isError: true,
193
+ };
194
+ }
195
+ const { invitations } = response.data;
196
+ return {
197
+ content: [
198
+ {
199
+ type: 'text',
200
+ text: JSON.stringify({
201
+ totalInvitations: invitations.length,
202
+ invitations: invitations.map((inv) => ({
203
+ id: inv.id,
204
+ email: inv.email,
205
+ role: inv.role,
206
+ status: inv.status,
207
+ expiresAt: inv.expiresAt,
208
+ createdAt: inv.createdAt,
209
+ })),
210
+ }, null, 2),
211
+ },
212
+ ],
213
+ };
214
+ }
215
+ catch (error) {
216
+ if (error.response?.status === 403) {
217
+ return {
218
+ content: [
219
+ {
220
+ type: 'text',
221
+ text: JSON.stringify({
222
+ error: 'Access denied',
223
+ message: 'Only workspace owner or admin can view invitations',
224
+ }),
225
+ },
226
+ ],
227
+ isError: true,
228
+ };
229
+ }
230
+ return {
231
+ content: [
232
+ {
233
+ type: 'text',
234
+ text: JSON.stringify({
235
+ error: 'Failed to list invitations',
236
+ message: error.message,
237
+ }),
238
+ },
239
+ ],
240
+ isError: true,
241
+ };
242
+ }
243
+ });
244
+ }
245
+ //# sourceMappingURL=invitation-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invitation-tool.js","sourceRoot":"","sources":["../../src/tools/invitation-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,SAAoB;IAClF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EAAE;;;2DAGwC;QACrD,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,QAAQ,CAAC,4CAA4C,CAAC;YACzD,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,KAAK,EAAE;iBACP,QAAQ,CAAC,uCAAuC,CAAC;YACpD,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBAC5C,QAAQ,EAAE;iBACV,QAAQ,CAAC,uCAAuC,CAAC;SACrD;KACF,EACD,KAAK,EAAE,IAAyB,EAAE,EAAE;QAClC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAIpC,CAAC;QAEF,2BAA2B;QAC3B,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,sBAAsB;4BAC7B,OAAO,EAAE,mDAAmD;4BAC5D,IAAI,EAAE,mDAAmD;yBAC1D,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,eAAe;4BACtB,OAAO,EAAE,qDAAqD;yBAC/D,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CACnC,yBAAyB,EACzB;gBACE,WAAW;gBACX,KAAK;gBACL,IAAI,EAAE,IAAI,IAAI,QAAQ;aACvB,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,6BAA6B;gCACpC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,oCAAoC;6BAClE,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;YAErC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,YAAY,EAAE,UAAU,CAAC,EAAE;4BAC3B,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,SAAS,EAAE,UAAU,CAAC,SAAS;4BAC/B,OAAO,EAAE,sBAAsB,UAAU,CAAC,KAAK,OAAO,UAAU,CAAC,IAAI,EAAE;yBACxE,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,8BAA8B;YAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,eAAe;gCACtB,OAAO,EAAE,sDAAsD;6BAChE,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,kBAAkB;gCACzB,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,sBAAsB;6BAC/D,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,6BAA6B;4BACpC,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,SAAoB;IACjF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE;;;2DAGwC;QACrD,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,QAAQ,CAAC,4CAA4C,CAAC;YACzD,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;iBACjE,QAAQ,EAAE;iBACV,QAAQ,CAAC,6BAA6B,CAAC;SAC3C;KACF,EACD,KAAK,EAAE,IAAyB,EAAE,EAAE;QAClC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAG/B,CAAC;QAEF,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,sBAAsB;4BAC7B,OAAO,EAAE,mDAAmD;4BAC5D,IAAI,EAAE,mDAAmD;yBAC1D,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE,CAAC;gBACX,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAClC,yBAAyB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAClD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,4BAA4B;gCACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,oCAAoC;6BAClE,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;YAEtC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,gBAAgB,EAAE,WAAW,CAAC,MAAM;4BACpC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCACrC,EAAE,EAAE,GAAG,CAAC,EAAE;gCACV,KAAK,EAAE,GAAG,CAAC,KAAK;gCAChB,IAAI,EAAE,GAAG,CAAC,IAAI;gCACd,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,SAAS,EAAE,GAAG,CAAC,SAAS;gCACxB,SAAS,EAAE,GAAG,CAAC,SAAS;6BACzB,CAAC,CAAC;yBACJ,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,eAAe;gCACtB,OAAO,EAAE,oDAAoD;6BAC9D,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,4BAA4B;4BACnC,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACZ,CAAC;QACN,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"meeting-agenda-tool.d.ts","sourceRoot":"","sources":["../../src/tools/meeting-agenda-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAM3D;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAgdjF"}
1
+ {"version":3,"file":"meeting-agenda-tool.d.ts","sourceRoot":"","sources":["../../src/tools/meeting-agenda-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAM3D;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAmYjF"}
@@ -9,37 +9,9 @@ export function registerMeetingAgendaTools(server, apiClient) {
9
9
  * brxce_add_agenda_item - Add an agenda item to a meeting
10
10
  */
11
11
  server.registerTool('brxce_add_agenda_item', {
12
- description: `Add an agenda item to a meeting.
12
+ description: `Add agenda item to meeting.
13
13
 
14
- **When to use this tool:**
15
- - Planning meeting agenda before the meeting
16
- - User wants to add discussion topics
17
- - Organizing meeting structure and topics
18
-
19
- **Input:**
20
- - meetingId (required): ID of the meeting
21
- - title (required): Agenda item title
22
- - summary (optional): Brief summary of the topic
23
- - notes (optional): Additional notes or context
24
- - itemSubType (optional): 'text', 'blocker', 'action', 'follow_up', 'worknode'
25
- - status (optional): 'pending' (default), 'discussed', 'deferred', 'resolved', 'skipped'
26
- - durationMinutes (optional): Estimated discussion time
27
- - workNodeId (optional): Related work item
28
- - ownerId (optional): Person responsible for this topic
29
- - sortOrder (optional): Display order (default: 0)
30
-
31
- **Access Control:**
32
- - Only workspace members can add agenda items
33
- - Items are ordered by sortOrder
34
-
35
- **Example:**
36
- User: "Add 'Review Q4 Metrics' to meeting #24 agenda, allocate 15 minutes"
37
- LLM calls: brxce_add_agenda_item(
38
- meetingId: 24,
39
- title: "Review Q4 Metrics",
40
- durationMinutes: 15,
41
- itemSubType: "text"
42
- )`,
14
+ Params: meetingId, title, summary?, notes?, itemSubType (text|blocker|action|follow_up|worknode)?, status?, durationMinutes?, workNodeId?, ownerId?, sortOrder?`,
43
15
  inputSchema: {
44
16
  meetingId: z.string().uuid().describe('Meeting ID (UUID)'),
45
17
  title: z.string().min(1).describe('Agenda item title'),
@@ -123,21 +95,10 @@ LLM calls: brxce_add_agenda_item(
123
95
  * brxce_list_agenda_items - List all agenda items for a meeting
124
96
  */
125
97
  server.registerTool('brxce_list_agenda_items', {
126
- description: `List all agenda items for a meeting.
98
+ description: `List meeting agenda items.
127
99
 
128
- **When to use this tool:**
129
- - User asks to see meeting agenda
130
- - Need to review planned topics
131
- - Checking what will be discussed
132
-
133
- **Output:**
134
- - Returns all agenda items ordered by sortOrder
135
- - Shows status, duration, and assigned owners
136
- - Indicates which items are pending/discussed
137
-
138
- **Example:**
139
- User: "What's on the agenda for meeting #24?"
140
- LLM calls: brxce_list_agenda_items(meetingId: 24)`,
100
+ Params: meetingId
101
+ Returns: agendaItems[] ordered by sortOrder with status and duration`,
141
102
  inputSchema: {
142
103
  meetingId: z.string().uuid().describe('Meeting ID (UUID)')
143
104
  }
@@ -229,32 +190,9 @@ LLM calls: brxce_list_agenda_items(meetingId: 24)`,
229
190
  * brxce_update_agenda_item - Update a meeting agenda item
230
191
  */
231
192
  server.registerTool('brxce_update_agenda_item', {
232
- description: `Update a meeting agenda item.
233
-
234
- **When to use this tool:**
235
- - Update agenda item status (e.g., pending → discussed)
236
- - Change title, summary, or notes
237
- - Adjust duration or reorder items
238
- - Mark items as deferred or resolved
193
+ description: `Update agenda item.
239
194
 
240
- **Access Control:**
241
- - Workspace members can update agenda items
242
- - Cannot update if item doesn't belong to meeting
243
-
244
- **Input:**
245
- - meetingId (required): ID of the meeting
246
- - itemId (required): ID of the agenda item to update
247
- - title (optional): New title
248
- - summary (optional): New summary
249
- - notes (optional): New notes
250
- - status (optional): New status
251
- - itemSubType (optional): New sub-type
252
- - durationMinutes (optional): New duration
253
- - sortOrder (optional): New display order
254
-
255
- **Example:**
256
- User: "Mark agenda item #45 in meeting #24 as discussed"
257
- LLM calls: brxce_update_agenda_item(meetingId: 24, itemId: 45, status: "discussed")`,
195
+ Params: meetingId, itemId, title?, summary?, notes?, status?, itemSubType?, durationMinutes?, sortOrder?`,
258
196
  inputSchema: {
259
197
  meetingId: z.string().uuid().describe('Meeting ID (UUID)'),
260
198
  itemId: z.string().uuid().describe('Agenda item ID (UUID) to update'),
@@ -346,24 +284,9 @@ LLM calls: brxce_update_agenda_item(meetingId: 24, itemId: 45, status: "discusse
346
284
  * brxce_delete_agenda_item - Delete a meeting agenda item
347
285
  */
348
286
  server.registerTool('brxce_delete_agenda_item', {
349
- description: `Delete a meeting agenda item.
350
-
351
- **When to use this tool:**
352
- - Topic is no longer relevant
353
- - Duplicate agenda item
354
- - Meeting plan changed
355
-
356
- **Access Control:**
357
- - Workspace members can delete agenda items
358
- - Deletion is permanent and cannot be undone
359
-
360
- **Input:**
361
- - meetingId (required): ID of the meeting
362
- - itemId (required): ID of the agenda item to delete
287
+ description: `Delete agenda item (permanent).
363
288
 
364
- **Example:**
365
- User: "Remove agenda item #45 from meeting #24"
366
- LLM calls: brxce_delete_agenda_item(meetingId: 24, itemId: 45)`,
289
+ Params: meetingId, itemId`,
367
290
  inputSchema: {
368
291
  meetingId: z.string().uuid().describe('Meeting ID (UUID)'),
369
292
  itemId: z.string().uuid().describe('Agenda item ID (UUID) to delete')