teamflect-mcp-server 1.0.3
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/.env.example +9 -0
- package/README.md +177 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/services/apiClient.d.ts +29 -0
- package/dist/services/apiClient.d.ts.map +1 -0
- package/dist/services/apiClient.js +92 -0
- package/dist/services/apiClient.js.map +1 -0
- package/dist/services/errorHandler.d.ts +5 -0
- package/dist/services/errorHandler.d.ts.map +1 -0
- package/dist/services/errorHandler.js +93 -0
- package/dist/services/errorHandler.js.map +1 -0
- package/dist/tools/feedbacks.d.ts +7 -0
- package/dist/tools/feedbacks.d.ts.map +1 -0
- package/dist/tools/feedbacks.js +372 -0
- package/dist/tools/feedbacks.js.map +1 -0
- package/dist/tools/goals.d.ts +7 -0
- package/dist/tools/goals.d.ts.map +1 -0
- package/dist/tools/goals.js +466 -0
- package/dist/tools/goals.js.map +1 -0
- package/dist/tools/recognitions.d.ts +7 -0
- package/dist/tools/recognitions.d.ts.map +1 -0
- package/dist/tools/recognitions.js +314 -0
- package/dist/tools/recognitions.js.map +1 -0
- package/dist/tools/reviews.d.ts +7 -0
- package/dist/tools/reviews.d.ts.map +1 -0
- package/dist/tools/reviews.js +224 -0
- package/dist/tools/reviews.js.map +1 -0
- package/dist/tools/tasks.d.ts +7 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +262 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/users.d.ts +7 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +417 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/types.d.ts +284 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleApiError } from "../services/errorHandler.js";
|
|
3
|
+
import { ResponseFormat } from "../types.js";
|
|
4
|
+
import { DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, CHARACTER_LIMIT } from "../constants.js";
|
|
5
|
+
/**
|
|
6
|
+
* Register feedback-related tools
|
|
7
|
+
*/
|
|
8
|
+
export function registerFeedbackTools(server, apiClient) {
|
|
9
|
+
// Get Feedbacks Schema
|
|
10
|
+
const GetFeedbacksInputSchema = z.object({
|
|
11
|
+
status: z.string().optional().describe("Filter by feedback status"),
|
|
12
|
+
aboutEmail: z.string().email().optional().describe("Filter by the person the feedback is about"),
|
|
13
|
+
submittedByEmail: z.string().email().optional().describe("Filter by the person who submitted the feedback"),
|
|
14
|
+
startDate: z.string().optional().describe("Filter by submission start date (ISO format)"),
|
|
15
|
+
endDate: z.string().optional().describe("Filter by submission end date (ISO format)"),
|
|
16
|
+
limit: z.number().int().min(1).max(MAX_PAGE_SIZE).default(DEFAULT_PAGE_SIZE)
|
|
17
|
+
.describe("Maximum number of feedbacks to return"),
|
|
18
|
+
offset: z.number().int().min(0).default(0)
|
|
19
|
+
.describe("Number of feedbacks to skip for pagination"),
|
|
20
|
+
response_format: z.nativeEnum(ResponseFormat).default(ResponseFormat.MARKDOWN)
|
|
21
|
+
.describe("Output format: 'markdown' for human-readable or 'json' for machine-readable"),
|
|
22
|
+
}).strict();
|
|
23
|
+
server.registerTool("teamflect_get_feedbacks", {
|
|
24
|
+
title: "Get Feedbacks",
|
|
25
|
+
description: `Retrieve a list of feedbacks from Teamflect based on filters.
|
|
26
|
+
|
|
27
|
+
This tool searches for feedbacks matching the specified criteria. You can filter by status, the person the feedback is about, who submitted it, and date ranges. Results are paginated.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
- status (string, optional): Filter by feedback status
|
|
31
|
+
- aboutEmail (string, optional): Filter by the person the feedback is about (email address)
|
|
32
|
+
- submittedByEmail (string, optional): Filter by the person who submitted the feedback (email address)
|
|
33
|
+
- startDate (string, optional): Filter by submission start date in ISO format (YYYY-MM-DD)
|
|
34
|
+
- endDate (string, optional): Filter by submission end date in ISO format (YYYY-MM-DD)
|
|
35
|
+
- limit (number, optional): Maximum results to return, between 1-300 (default: 20)
|
|
36
|
+
- offset (number, optional): Number of results to skip for pagination (default: 0)
|
|
37
|
+
- response_format ('markdown' | 'json', optional): Output format (default: 'markdown')
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
For JSON format: Structured data with schema:
|
|
41
|
+
{
|
|
42
|
+
"total": number,
|
|
43
|
+
"count": number,
|
|
44
|
+
"offset": number,
|
|
45
|
+
"feedbacks": [
|
|
46
|
+
{
|
|
47
|
+
"feedbackId": string,
|
|
48
|
+
"about": {"displayName": string, "mail": string},
|
|
49
|
+
"status": string,
|
|
50
|
+
"submittedBy": {"displayName": string},
|
|
51
|
+
"createdAt": string,
|
|
52
|
+
"submittedAt": string,
|
|
53
|
+
"questions": [
|
|
54
|
+
{
|
|
55
|
+
"question": string,
|
|
56
|
+
"answer": string,
|
|
57
|
+
"additionalAnswer": string,
|
|
58
|
+
"questionType": string
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"has_more": boolean,
|
|
64
|
+
"next_offset": number
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
Examples:
|
|
68
|
+
- Use when: "Get all feedbacks about john@example.com" -> params with aboutEmail="john@example.com"
|
|
69
|
+
- Use when: "List feedbacks submitted this month" -> params with startDate/endDate filters
|
|
70
|
+
|
|
71
|
+
Error Handling:
|
|
72
|
+
- Returns "Error: Authentication failed" if API key is invalid
|
|
73
|
+
- Returns "Error: Rate limit exceeded" if too many requests`,
|
|
74
|
+
inputSchema: GetFeedbacksInputSchema,
|
|
75
|
+
annotations: {
|
|
76
|
+
readOnlyHint: true,
|
|
77
|
+
destructiveHint: false,
|
|
78
|
+
idempotentHint: true,
|
|
79
|
+
openWorldHint: true,
|
|
80
|
+
},
|
|
81
|
+
}, async (params) => {
|
|
82
|
+
try {
|
|
83
|
+
// API doesn't accept query parameters - fetch all and filter client-side
|
|
84
|
+
const response = await apiClient.get("/feedback/getFeedbacks");
|
|
85
|
+
// Handle both array response and object response formats
|
|
86
|
+
let allFeedbacks = Array.isArray(response)
|
|
87
|
+
? response
|
|
88
|
+
: response.feedbacks || [];
|
|
89
|
+
// Apply client-side filtering
|
|
90
|
+
let feedbacks = allFeedbacks;
|
|
91
|
+
if (params.aboutEmail) {
|
|
92
|
+
feedbacks = feedbacks.filter((f) => {
|
|
93
|
+
const aboutEmail = f.about?.mail || f.about?.userPrincipalName || "";
|
|
94
|
+
return aboutEmail.toLowerCase() === params.aboutEmail.toLowerCase();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
if (params.submittedByEmail) {
|
|
98
|
+
feedbacks = feedbacks.filter((f) => {
|
|
99
|
+
const submittedEmail = f.submittedBy?.userPrincipalName || f.submittedBy?.mail || "";
|
|
100
|
+
return submittedEmail.toLowerCase() === params.submittedByEmail.toLowerCase();
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (params.status) {
|
|
104
|
+
feedbacks = feedbacks.filter((f) => f.status?.toLowerCase() === params.status.toLowerCase());
|
|
105
|
+
}
|
|
106
|
+
if (params.startDate) {
|
|
107
|
+
const start = new Date(params.startDate);
|
|
108
|
+
feedbacks = feedbacks.filter((f) => {
|
|
109
|
+
const createdAt = f.createdAt ? new Date(f.createdAt) : null;
|
|
110
|
+
return createdAt && createdAt >= start;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (params.endDate) {
|
|
114
|
+
const end = new Date(params.endDate);
|
|
115
|
+
feedbacks = feedbacks.filter((f) => {
|
|
116
|
+
const createdAt = f.createdAt ? new Date(f.createdAt) : null;
|
|
117
|
+
return createdAt && createdAt <= end;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// Calculate total before pagination
|
|
121
|
+
const total = feedbacks.length;
|
|
122
|
+
// Apply pagination after filtering
|
|
123
|
+
const startIndex = params.offset;
|
|
124
|
+
const endIndex = startIndex + params.limit;
|
|
125
|
+
feedbacks = feedbacks.slice(startIndex, endIndex);
|
|
126
|
+
const hasMore = total > params.offset + feedbacks.length;
|
|
127
|
+
const nextOffset = hasMore ? params.offset + feedbacks.length : undefined;
|
|
128
|
+
const output = {
|
|
129
|
+
total,
|
|
130
|
+
count: feedbacks.length,
|
|
131
|
+
offset: params.offset,
|
|
132
|
+
feedbacks: feedbacks.map((feedback) => ({
|
|
133
|
+
feedbackId: feedback.id || feedback.feedbackId || "",
|
|
134
|
+
about: feedback.about ? {
|
|
135
|
+
displayName: feedback.about.displayName || "",
|
|
136
|
+
mail: feedback.about.mail || feedback.about.userPrincipalName || ""
|
|
137
|
+
} : null,
|
|
138
|
+
status: feedback.status || "",
|
|
139
|
+
submittedBy: feedback.submittedBy ? {
|
|
140
|
+
displayName: feedback.submittedBy.displayName || ""
|
|
141
|
+
} : null,
|
|
142
|
+
createdAt: feedback.createdAt || "",
|
|
143
|
+
submittedAt: feedback.submittedAt || "",
|
|
144
|
+
questions: feedback.questions || [],
|
|
145
|
+
})),
|
|
146
|
+
has_more: hasMore,
|
|
147
|
+
...(nextOffset !== undefined ? { next_offset: nextOffset } : {}),
|
|
148
|
+
};
|
|
149
|
+
let textContent;
|
|
150
|
+
if (params.response_format === ResponseFormat.MARKDOWN) {
|
|
151
|
+
const lines = [`# Feedbacks (${total} total)`, ""];
|
|
152
|
+
if (feedbacks.length === 0) {
|
|
153
|
+
lines.push("No feedbacks found matching the criteria.");
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
lines.push(`Showing ${feedbacks.length} of ${total} feedbacks\n`);
|
|
157
|
+
feedbacks.forEach((feedback) => {
|
|
158
|
+
const feedbackId = feedback.id || feedback.feedbackId || "N/A";
|
|
159
|
+
lines.push(`## Feedback ${feedbackId}`);
|
|
160
|
+
if (feedback.about) {
|
|
161
|
+
const aboutEmail = feedback.about.mail || feedback.about.userPrincipalName || "";
|
|
162
|
+
lines.push(`- **About**: ${feedback.about.displayName || ""} (${aboutEmail})`);
|
|
163
|
+
}
|
|
164
|
+
lines.push(`- **Status**: ${feedback.status || ""}`);
|
|
165
|
+
if (feedback.submittedBy) {
|
|
166
|
+
lines.push(`- **Submitted By**: ${feedback.submittedBy.displayName || ""}`);
|
|
167
|
+
}
|
|
168
|
+
if (feedback.submittedAt) {
|
|
169
|
+
lines.push(`- **Submitted At**: ${feedback.submittedAt}`);
|
|
170
|
+
}
|
|
171
|
+
if (feedback.createdAt) {
|
|
172
|
+
lines.push(`- **Created At**: ${feedback.createdAt}`);
|
|
173
|
+
}
|
|
174
|
+
if (feedback.questions && feedback.questions.length > 0) {
|
|
175
|
+
lines.push("\n**Questions & Answers:**");
|
|
176
|
+
feedback.questions.forEach((q) => {
|
|
177
|
+
lines.push(`- **Q**: ${q.question || ""}`);
|
|
178
|
+
if (q.answer)
|
|
179
|
+
lines.push(` **A**: ${q.answer}`);
|
|
180
|
+
if (q.additionalAnswer)
|
|
181
|
+
lines.push(` **Additional**: ${q.additionalAnswer}`);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
lines.push("");
|
|
185
|
+
});
|
|
186
|
+
if (hasMore) {
|
|
187
|
+
lines.push(`\n*Use offset=${nextOffset} to get more results*`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
textContent = lines.join("\n");
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
textContent = JSON.stringify(output, null, 2);
|
|
194
|
+
}
|
|
195
|
+
// Check character limit
|
|
196
|
+
if (textContent.length > CHARACTER_LIMIT) {
|
|
197
|
+
const truncated = output.feedbacks.slice(0, Math.floor(output.feedbacks.length / 2));
|
|
198
|
+
const truncatedOutput = { ...output, feedbacks: truncated, truncated: true };
|
|
199
|
+
textContent = params.response_format === ResponseFormat.MARKDOWN
|
|
200
|
+
? `# Feedbacks (Truncated)\n\nResponse truncated from ${output.feedbacks.length} to ${truncated.length} feedbacks. Use filters or pagination to see more results.\n\n${JSON.stringify(truncatedOutput, null, 2)}`
|
|
201
|
+
: JSON.stringify(truncatedOutput, null, 2);
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
content: [{ type: "text", text: textContent }],
|
|
205
|
+
structuredContent: output,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
return {
|
|
210
|
+
content: [{
|
|
211
|
+
type: "text",
|
|
212
|
+
text: handleApiError(error),
|
|
213
|
+
}],
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
// Send Feedback Request Schema
|
|
218
|
+
const SendFeedbackRequestInputSchema = z.object({
|
|
219
|
+
aboutEmail: z.string().email().describe("Email address of the person the feedback is about"),
|
|
220
|
+
questions: z.array(z.object({
|
|
221
|
+
question: z.string().min(1).max(1000).describe("Question text"),
|
|
222
|
+
questionType: z.string().describe("Question type (e.g., 'Text', 'Rating', 'YesNo')"),
|
|
223
|
+
})).min(1).describe("Array of questions to ask"),
|
|
224
|
+
dueDate: z.string().optional().describe("Due date for feedback submission in ISO format (YYYY-MM-DD)"),
|
|
225
|
+
response_format: z.nativeEnum(ResponseFormat).default(ResponseFormat.MARKDOWN)
|
|
226
|
+
.describe("Output format: 'markdown' for human-readable or 'json' for machine-readable"),
|
|
227
|
+
}).strict();
|
|
228
|
+
server.registerTool("teamflect_send_feedback_request", {
|
|
229
|
+
title: "Send Feedback Request",
|
|
230
|
+
description: `Send a new feedback request in Teamflect.
|
|
231
|
+
|
|
232
|
+
This tool creates and sends a feedback request to collect feedback about a person. The request includes questions that need to be answered.
|
|
233
|
+
|
|
234
|
+
Args:
|
|
235
|
+
- aboutEmail (string, required): Email address of the person the feedback is about
|
|
236
|
+
- questions (array, required): Array of question objects, each with:
|
|
237
|
+
- question (string): Question text (1-1000 characters)
|
|
238
|
+
- questionType (string): Question type identifier
|
|
239
|
+
- dueDate (string, optional): Due date for feedback submission in ISO format (YYYY-MM-DD)
|
|
240
|
+
- response_format ('markdown' | 'json', optional): Output format (default: 'markdown')
|
|
241
|
+
|
|
242
|
+
Returns:
|
|
243
|
+
The created feedback request with its ID and status.
|
|
244
|
+
|
|
245
|
+
Error Handling:
|
|
246
|
+
- Returns "Error: Bad request" if required fields are missing or invalid
|
|
247
|
+
- Returns "Error: Permission denied" if you don't have permission to send feedback requests`,
|
|
248
|
+
inputSchema: SendFeedbackRequestInputSchema,
|
|
249
|
+
annotations: {
|
|
250
|
+
readOnlyHint: false,
|
|
251
|
+
destructiveHint: false,
|
|
252
|
+
idempotentHint: false,
|
|
253
|
+
openWorldHint: true,
|
|
254
|
+
},
|
|
255
|
+
}, async (params) => {
|
|
256
|
+
try {
|
|
257
|
+
const requestBody = {
|
|
258
|
+
feedbackAboutUPNorId: params.aboutEmail,
|
|
259
|
+
feedbackRequestReceiverUPNorId: params.aboutEmail, // Receiver is same as about person for internal feedback
|
|
260
|
+
questions: params.questions,
|
|
261
|
+
dueDate: params.dueDate,
|
|
262
|
+
};
|
|
263
|
+
const feedback = await apiClient.post("/feedback/sendFeedbackRequest", requestBody);
|
|
264
|
+
let textContent;
|
|
265
|
+
if (params.response_format === ResponseFormat.MARKDOWN) {
|
|
266
|
+
textContent = `# Feedback Request Sent\n\nFeedback request created successfully.\n\n- **Feedback ID**: ${feedback.feedbackId}\n- **Status**: ${feedback.status}\n- **About**: ${feedback.about?.displayName || params.aboutEmail}\n- **Questions**: ${params.questions.length} question(s)`;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
textContent = JSON.stringify(feedback, null, 2);
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
content: [{ type: "text", text: textContent }],
|
|
273
|
+
structuredContent: feedback,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
return {
|
|
278
|
+
content: [{
|
|
279
|
+
type: "text",
|
|
280
|
+
text: handleApiError(error),
|
|
281
|
+
}],
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
// Send External Feedback Request Schema
|
|
286
|
+
const SendExternalFeedbackRequestInputSchema = z.object({
|
|
287
|
+
aboutEmail: z.string().email().describe("Email address of the person the feedback is about"),
|
|
288
|
+
externalEmail: z.string().email().describe("Email address of the external person to request feedback from"),
|
|
289
|
+
questions: z.array(z.object({
|
|
290
|
+
question: z.string().min(1).max(1000).describe("Question text"),
|
|
291
|
+
questionType: z.string().describe("Question type (e.g., 'Text', 'Rating', 'YesNo')"),
|
|
292
|
+
})).min(1).describe("Array of questions to ask"),
|
|
293
|
+
dueDateInDays: z.number().int().min(1).describe("Due date in days from now (e.g., 7 for 7 days)"),
|
|
294
|
+
dueDate: z.string().optional().describe("Due date for feedback submission in ISO format (YYYY-MM-DD) - will be converted to dueDateInDays"),
|
|
295
|
+
response_format: z.nativeEnum(ResponseFormat).default(ResponseFormat.MARKDOWN)
|
|
296
|
+
.describe("Output format: 'markdown' for human-readable or 'json' for machine-readable"),
|
|
297
|
+
}).strict();
|
|
298
|
+
server.registerTool("teamflect_send_external_feedback_request", {
|
|
299
|
+
title: "Send External Feedback Request",
|
|
300
|
+
description: `Send a new external feedback request in Teamflect.
|
|
301
|
+
|
|
302
|
+
This tool creates and sends a feedback request to an external person (someone outside your organization) to collect feedback about a person.
|
|
303
|
+
|
|
304
|
+
Args:
|
|
305
|
+
- aboutEmail (string, required): Email address of the person the feedback is about
|
|
306
|
+
- externalEmail (string, required): Email address of the external person to request feedback from
|
|
307
|
+
- questions (array, required): Array of question objects, each with:
|
|
308
|
+
- question (string): Question text (1-1000 characters)
|
|
309
|
+
- questionType (string): Question type identifier
|
|
310
|
+
- dueDate (string, optional): Due date for feedback submission in ISO format (YYYY-MM-DD)
|
|
311
|
+
- response_format ('markdown' | 'json', optional): Output format (default: 'markdown')
|
|
312
|
+
|
|
313
|
+
Returns:
|
|
314
|
+
The created external feedback request with its ID and status.
|
|
315
|
+
|
|
316
|
+
Error Handling:
|
|
317
|
+
- Returns "Error: Bad request" if required fields are missing or invalid
|
|
318
|
+
- Returns "Error: Permission denied" if you don't have permission to send external feedback requests`,
|
|
319
|
+
inputSchema: SendExternalFeedbackRequestInputSchema,
|
|
320
|
+
annotations: {
|
|
321
|
+
readOnlyHint: false,
|
|
322
|
+
destructiveHint: false,
|
|
323
|
+
idempotentHint: false,
|
|
324
|
+
openWorldHint: true,
|
|
325
|
+
},
|
|
326
|
+
}, async (params) => {
|
|
327
|
+
try {
|
|
328
|
+
const requestBody = {
|
|
329
|
+
feedbackAboutUPNorId: params.aboutEmail,
|
|
330
|
+
externalEmail: params.externalEmail,
|
|
331
|
+
questions: params.questions,
|
|
332
|
+
};
|
|
333
|
+
// Use dueDateInDays if provided, otherwise convert dueDate to days
|
|
334
|
+
if (params.dueDateInDays !== undefined) {
|
|
335
|
+
requestBody.dueDateInDays = params.dueDateInDays;
|
|
336
|
+
}
|
|
337
|
+
else if (params.dueDate) {
|
|
338
|
+
// Convert ISO date to days from now
|
|
339
|
+
const dueDate = new Date(params.dueDate);
|
|
340
|
+
const now = new Date();
|
|
341
|
+
const diffTime = dueDate.getTime() - now.getTime();
|
|
342
|
+
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
343
|
+
requestBody.dueDateInDays = Math.max(1, diffDays); // Ensure at least 1 day
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
// Default to 7 days if neither provided
|
|
347
|
+
requestBody.dueDateInDays = 7;
|
|
348
|
+
}
|
|
349
|
+
const feedback = await apiClient.post("/feedback/sendExternalFeedbackRequest", requestBody);
|
|
350
|
+
let textContent;
|
|
351
|
+
if (params.response_format === ResponseFormat.MARKDOWN) {
|
|
352
|
+
textContent = `# External Feedback Request Sent\n\nExternal feedback request created successfully.\n\n- **Feedback ID**: ${feedback.feedbackId}\n- **Status**: ${feedback.status}\n- **About**: ${feedback.about?.displayName || params.aboutEmail}\n- **External Email**: ${params.externalEmail}\n- **Questions**: ${params.questions.length} question(s)`;
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
textContent = JSON.stringify(feedback, null, 2);
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
content: [{ type: "text", text: textContent }],
|
|
359
|
+
structuredContent: feedback,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
catch (error) {
|
|
363
|
+
return {
|
|
364
|
+
content: [{
|
|
365
|
+
type: "text",
|
|
366
|
+
text: handleApiError(error),
|
|
367
|
+
}],
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=feedbacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedbacks.js","sourceRoot":"","sources":["../../src/tools/feedbacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { TeamflectApiClient } from "../services/apiClient.js";
|
|
3
|
+
/**
|
|
4
|
+
* Register goal-related tools
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerGoalTools(server: McpServer, apiClient: TeamflectApiClient): void;
|
|
7
|
+
//# sourceMappingURL=goals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../../src/tools/goals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAK9D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI,CA4exF"}
|