@carbonvoice/cv-mcp-server 1.1.3 → 2.1.0
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/auth.service.js +79 -0
- package/dist/auth/auth.service.js.map +1 -0
- package/dist/auth/index.js +15 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/interfaces/auth.types.js +3 -0
- package/dist/auth/interfaces/auth.types.js.map +1 -0
- package/dist/auth/interfaces/index.js +1 -0
- package/dist/auth/interfaces/index.js.map +1 -1
- package/dist/cv-api.js +13 -5
- package/dist/cv-api.js.map +1 -1
- package/dist/server.js +143 -31
- package/dist/server.js.map +1 -1
- package/dist/transports/http/interfaces/index.js +3 -0
- package/dist/transports/http/interfaces/index.js.map +1 -0
- package/dist/transports/http/middleware/add-mcp-session-id.middleware.js +20 -13
- package/dist/transports/http/middleware/add-mcp-session-id.middleware.js.map +1 -1
- package/dist/transports/http/middleware/add-request-id.middlware.js +13 -4
- package/dist/transports/http/middleware/add-request-id.middlware.js.map +1 -1
- package/dist/transports/http/middleware/log-request.middlware.js +27 -11
- package/dist/transports/http/middleware/log-request.middlware.js.map +1 -1
- package/dist/transports/http/session/index.js +34 -0
- package/dist/transports/http/session/index.js.map +1 -0
- package/dist/transports/http/session/session-cleanup.js +60 -0
- package/dist/transports/http/session/session-cleanup.js.map +1 -0
- package/dist/transports/http/session/session-manager.js +52 -0
- package/dist/transports/http/session/session-manager.js.map +1 -0
- package/dist/transports/http/session/session.config.js +29 -0
- package/dist/transports/http/session/session.config.js.map +1 -0
- package/dist/transports/http/session/session.logger.js +68 -0
- package/dist/transports/http/session/session.logger.js.map +1 -0
- package/dist/transports/http/session/session.service.js +196 -0
- package/dist/transports/http/session/session.service.js.map +1 -0
- package/dist/transports/http/session/session.types.js +31 -0
- package/dist/transports/http/session/session.types.js.map +1 -0
- package/dist/transports/http/streamable.js +184 -427
- package/dist/transports/http/streamable.js.map +1 -1
- package/dist/transports/http/utils/request-context.js +78 -0
- package/dist/transports/http/utils/request-context.js.map +1 -0
- package/dist/utils/axios-instance.js +34 -22
- package/dist/utils/axios-instance.js.map +1 -1
- package/dist/utils/get-process-uptime.js +13 -0
- package/dist/utils/get-process-uptime.js.map +1 -0
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +34 -11
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/{format-time-to-human.js → time-to-human.js} +17 -7
- package/dist/utils/time-to-human.js.map +1 -0
- package/package.json +1 -1
- package/dist/auth/auth-middleware.js +0 -203
- package/dist/auth/auth-middleware.js.map +0 -1
- package/dist/utils/format-time-to-human.js.map +0 -1
- package/dist/utils/format-uptime.js +0 -13
- package/dist/utils/format-uptime.js.map +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.setCarbonVoiceAuthHeader = exports.createOAuthTokenVerifier = void 0;
|
|
7
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
8
|
+
const errors_js_1 = require("@modelcontextprotocol/sdk/server/auth/errors.js");
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
const createOAuthTokenVerifier = () => ({
|
|
12
|
+
async verifyAccessToken(token) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (!token) {
|
|
15
|
+
throw new errors_js_1.InvalidTokenError('No token provided');
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const decoded = jsonwebtoken_1.default.decode(token);
|
|
19
|
+
// Basic validation
|
|
20
|
+
if (!decoded) {
|
|
21
|
+
throw new errors_js_1.InvalidTokenError('Invalid token format');
|
|
22
|
+
}
|
|
23
|
+
if (!decoded.sub || !decoded.client_id) {
|
|
24
|
+
throw new errors_js_1.InvalidTokenError('Token missing required claims');
|
|
25
|
+
}
|
|
26
|
+
// Check expiration
|
|
27
|
+
// We don't need, since it's validate in requireBearerAuth middleware
|
|
28
|
+
// if (decoded.exp && decoded.exp < Date.now() / 1000) {
|
|
29
|
+
// throw new InvalidTokenError('Token expired');
|
|
30
|
+
// }
|
|
31
|
+
return {
|
|
32
|
+
token,
|
|
33
|
+
clientId: decoded.client_id,
|
|
34
|
+
scopes: ((_a = decoded.scope) === null || _a === void 0 ? void 0 : _a.split(' ')) || [],
|
|
35
|
+
expiresAt: decoded.exp,
|
|
36
|
+
extra: {
|
|
37
|
+
user: {
|
|
38
|
+
id: decoded.sub,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
utils_1.logger.error('Error verifying access token', {
|
|
45
|
+
error: {
|
|
46
|
+
error_message: error.message,
|
|
47
|
+
stack: error.stack,
|
|
48
|
+
},
|
|
49
|
+
token: (0, utils_1.removeLastChars)(token),
|
|
50
|
+
});
|
|
51
|
+
if (error instanceof errors_js_1.InvalidTokenError) {
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
throw new errors_js_1.InvalidTokenError('Token verification failed');
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
exports.createOAuthTokenVerifier = createOAuthTokenVerifier;
|
|
59
|
+
const setCarbonVoiceAuthHeader = (token) => {
|
|
60
|
+
if (!token && !config_1.env.CARBON_VOICE_API_KEY) {
|
|
61
|
+
throw new utils_1.UnauthorizedException('No Bearer token or API key provided');
|
|
62
|
+
}
|
|
63
|
+
// http-transport
|
|
64
|
+
if (token) {
|
|
65
|
+
return {
|
|
66
|
+
headers: {
|
|
67
|
+
Authorization: `Bearer ${token}`,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Default to API key for Stdio transport
|
|
72
|
+
return {
|
|
73
|
+
headers: {
|
|
74
|
+
'x-api-key': `${config_1.env.CARBON_VOICE_API_KEY}`,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
exports.setCarbonVoiceAuthHeader = setCarbonVoiceAuthHeader;
|
|
79
|
+
//# sourceMappingURL=auth.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":";;;;;;AAAA,gEAA+B;AAE/B,+EAAoF;AAMpF,sCAAgC;AAChC,oCAA0E;AAEnE,MAAM,wBAAwB,GAAG,GAAuB,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,iBAAiB,CAAC,KAAa;;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,6BAAiB,CAAC,mBAAmB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,CAA+B,CAAC;YAEhE,mBAAmB;YACnB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,6BAAiB,CAAC,sBAAsB,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvC,MAAM,IAAI,6BAAiB,CAAC,+BAA+B,CAAC,CAAC;YAC/D,CAAC;YAED,mBAAmB;YACnB,qEAAqE;YACrE,wDAAwD;YACxD,kDAAkD;YAClD,IAAI;YAEJ,OAAO;gBACL,KAAK;gBACL,QAAQ,EAAE,OAAO,CAAC,SAAS;gBAC3B,MAAM,EAAE,CAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,CAAC,GAAG,CAAC,KAAI,EAAE;gBACvC,SAAS,EAAE,OAAO,CAAC,GAAG;gBACtB,KAAK,EAAE;oBACL,IAAI,EAAE;wBACJ,EAAE,EAAE,OAAO,CAAC,GAAG;qBAChB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;gBAC3C,KAAK,EAAE;oBACL,aAAa,EAAG,KAAe,CAAC,OAAO;oBACvC,KAAK,EAAG,KAAe,CAAC,KAAK;iBAC9B;gBACD,KAAK,EAAE,IAAA,uBAAe,EAAC,KAAK,CAAC;aAC9B,CAAC,CAAC;YAEH,IAAI,KAAK,YAAY,6BAAiB,EAAE,CAAC;gBACvC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,6BAAiB,CAAC,2BAA2B,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAnDU,QAAA,wBAAwB,4BAmDlC;AAEI,MAAM,wBAAwB,GAAG,CACtC,KAAc,EACuB,EAAE;IACvC,IAAI,CAAC,KAAK,IAAI,CAAC,YAAG,CAAC,oBAAoB,EAAE,CAAC;QACxC,MAAM,IAAI,6BAAqB,CAAC,qCAAqC,CAAC,CAAC;IACzE,CAAC;IAED,iBAAiB;IACjB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,OAAO;QACL,OAAO,EAAE;YACP,WAAW,EAAE,GAAG,YAAG,CAAC,oBAAoB,EAAE;SAC3C;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,wBAAwB,4BAsBnC"}
|
package/dist/auth/index.js
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./auth.service"), exports);
|
|
3
18
|
//# sourceMappingURL=index.js.map
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.types.js","sourceRoot":"","sources":["../../../src/auth/interfaces/auth.types.ts"],"names":[],"mappings":""}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./user.interface"), exports);
|
|
18
|
+
__exportStar(require("./auth.types"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,+CAA6B"}
|
package/dist/cv-api.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getCarbonVoiceApiStatus = exports.getCarbonVoiceAPI = void 0;
|
|
4
|
+
const config_1 = require("./config");
|
|
4
5
|
const utils_1 = require("./utils");
|
|
5
6
|
const axios_instance_1 = require("./utils/axios-instance");
|
|
6
7
|
const getCarbonVoiceAPI = () => {
|
|
@@ -11,15 +12,22 @@ const getCarbonVoiceAPI = () => {
|
|
|
11
12
|
};
|
|
12
13
|
};
|
|
13
14
|
exports.getCarbonVoiceAPI = getCarbonVoiceAPI;
|
|
14
|
-
const
|
|
15
|
+
const getCarbonVoiceApiStatus = async () => {
|
|
15
16
|
try {
|
|
16
17
|
const response = await (0, axios_instance_1.mutator)({ url: `/health`, method: 'GET' });
|
|
17
|
-
return
|
|
18
|
+
return {
|
|
19
|
+
isHealthy: response.status === 'ok',
|
|
20
|
+
apiUrl: config_1.env.CARBON_VOICE_BASE_URL,
|
|
21
|
+
};
|
|
18
22
|
}
|
|
19
23
|
catch (error) {
|
|
20
24
|
utils_1.logger.error('Error getting backend status:', error);
|
|
21
|
-
return
|
|
25
|
+
return {
|
|
26
|
+
isHealthy: false,
|
|
27
|
+
apiUrl: config_1.env.CARBON_VOICE_BASE_URL,
|
|
28
|
+
error: error instanceof Error ? error.message : 'UNKNOWN_ERROR',
|
|
29
|
+
};
|
|
22
30
|
}
|
|
23
31
|
};
|
|
24
|
-
exports.
|
|
32
|
+
exports.getCarbonVoiceApiStatus = getCarbonVoiceApiStatus;
|
|
25
33
|
//# sourceMappingURL=cv-api.js.map
|
package/dist/cv-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cv-api.js","sourceRoot":"","sources":["../src/cv-api.ts"],"names":[],"mappings":";;;AAEA,mCAAiC;AACjC,2DAAiD;AAE1C,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,OAAO;QACL,SAAS,EAAE,KAAK,EAAE,OAA4B,EAAoB,EAAE;YAClE,OAAO,IAAA,wBAAO,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEK,MAAM,uBAAuB,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"cv-api.js","sourceRoot":"","sources":["../src/cv-api.ts"],"names":[],"mappings":";;;AAEA,qCAA+B;AAC/B,mCAAiC;AACjC,2DAAiD;AAE1C,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,OAAO;QACL,SAAS,EAAE,KAAK,EAAE,OAA4B,EAAoB,EAAE;YAClE,OAAO,IAAA,wBAAO,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEK,MAAM,uBAAuB,GAAG,KAAK,IAIzC,EAAE;IACH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAO,EAE3B,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtC,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,IAAI;YACnC,MAAM,EAAE,YAAG,CAAC,qBAAqB;SAClC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,YAAG,CAAC,qBAAqB;YACjC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC"}
|
package/dist/server.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const zod_1 = require("zod");
|
|
4
4
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
|
-
const
|
|
5
|
+
const auth_1 = require("./auth");
|
|
6
6
|
const constants_1 = require("./constants");
|
|
7
7
|
const cv_api_1 = require("./cv-api");
|
|
8
8
|
const generated_1 = require("./generated");
|
|
@@ -36,10 +36,14 @@ server.registerTool('list_messages', {
|
|
|
36
36
|
'If you want to get messages from a specific workspace, you can use the "workspace_id" parameter. ' +
|
|
37
37
|
'If you want to get messages for a particular language, you can use the "language" parameter. ',
|
|
38
38
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.listMessagesQueryParams.shape,
|
|
39
|
+
annotations: {
|
|
40
|
+
readOnlyHint: true,
|
|
41
|
+
destructiveHint: false,
|
|
42
|
+
},
|
|
39
43
|
}, async (params, { authInfo }) => {
|
|
40
44
|
try {
|
|
41
45
|
// Fallback to regular API
|
|
42
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.listMessages(params, (0,
|
|
46
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.listMessages(params, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
43
47
|
}
|
|
44
48
|
catch (error) {
|
|
45
49
|
utils_1.logger.error('Error listing messages:', { params, error });
|
|
@@ -49,10 +53,14 @@ server.registerTool('list_messages', {
|
|
|
49
53
|
server.registerTool('get_message', {
|
|
50
54
|
description: 'Get a message by its ID.',
|
|
51
55
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getMessageByIdParams.merge(CarbonVoiceSimplifiedAPI_zod_1.getMessageByIdQueryParams).shape,
|
|
56
|
+
annotations: {
|
|
57
|
+
readOnlyHint: true,
|
|
58
|
+
destructiveHint: false,
|
|
59
|
+
},
|
|
52
60
|
}, async (args, { authInfo }) => {
|
|
53
61
|
try {
|
|
54
62
|
const { id, ...queryParams } = args;
|
|
55
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getMessageById(id, queryParams, (0,
|
|
63
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getMessageById(id, queryParams, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
56
64
|
}
|
|
57
65
|
catch (error) {
|
|
58
66
|
utils_1.logger.error('Error getting message by id:', { args, error });
|
|
@@ -63,9 +71,13 @@ server.registerTool('get_recent_messages', {
|
|
|
63
71
|
description: 'Get most recent messages, including their associated Conversation, Creator, and Labels information. ' +
|
|
64
72
|
'Returns a maximum of 10 messages.',
|
|
65
73
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getTenRecentMessagesResponseQueryParams.shape,
|
|
74
|
+
annotations: {
|
|
75
|
+
readOnlyHint: true,
|
|
76
|
+
destructiveHint: false,
|
|
77
|
+
},
|
|
66
78
|
}, async (args, { authInfo }) => {
|
|
67
79
|
try {
|
|
68
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getTenRecentMessagesResponse(args, (0,
|
|
80
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getTenRecentMessagesResponse(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
69
81
|
}
|
|
70
82
|
catch (error) {
|
|
71
83
|
utils_1.logger.error('Error getting recent messages:', { args, error });
|
|
@@ -76,9 +88,13 @@ server.registerTool('create_conversation_message', {
|
|
|
76
88
|
description: 'Sends a message to an existing conversation or any type with a conversation_id. ' +
|
|
77
89
|
'To reply as a thread, included a message_id for "parent_id". You must provide a transcript or attachment.',
|
|
78
90
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.createConversationMessageParams.merge(CarbonVoiceSimplifiedAPI_zod_1.createConversationMessageBody).shape,
|
|
91
|
+
annotations: {
|
|
92
|
+
readOnlyHint: false,
|
|
93
|
+
destructiveHint: false,
|
|
94
|
+
},
|
|
79
95
|
}, async (args, { authInfo }) => {
|
|
80
96
|
try {
|
|
81
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createConversationMessage(args.id, args, (0,
|
|
97
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createConversationMessage(args.id, args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
82
98
|
}
|
|
83
99
|
catch (error) {
|
|
84
100
|
utils_1.logger.error('Error creating conversation message:', { args, error });
|
|
@@ -89,9 +105,13 @@ server.registerTool('create_direct_message', {
|
|
|
89
105
|
description: 'Send a Direct Message (DM) to a User or a Group of Users. ' +
|
|
90
106
|
'In order to create a Direct Message, you must provide transcript or link attachments.',
|
|
91
107
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.sendDirectMessageBody.shape,
|
|
108
|
+
annotations: {
|
|
109
|
+
readOnlyHint: false,
|
|
110
|
+
destructiveHint: false,
|
|
111
|
+
},
|
|
92
112
|
}, async (args, { authInfo }) => {
|
|
93
113
|
try {
|
|
94
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.sendDirectMessage(args, (0,
|
|
114
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.sendDirectMessage(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
95
115
|
}
|
|
96
116
|
catch (error) {
|
|
97
117
|
utils_1.logger.error('Error creating direct message:', { args, error });
|
|
@@ -101,9 +121,13 @@ server.registerTool('create_direct_message', {
|
|
|
101
121
|
server.registerTool('create_voicememo_message', {
|
|
102
122
|
description: 'Create a VoiceMemo Message. In order to create a VoiceMemo Message, you must provide a transcript or link attachments.',
|
|
103
123
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.createVoiceMemoMessageBody.shape,
|
|
124
|
+
annotations: {
|
|
125
|
+
readOnlyHint: false,
|
|
126
|
+
destructiveHint: false,
|
|
127
|
+
},
|
|
104
128
|
}, async (args, { authInfo }) => {
|
|
105
129
|
try {
|
|
106
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createVoiceMemoMessage(args, (0,
|
|
130
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createVoiceMemoMessage(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
107
131
|
}
|
|
108
132
|
catch (error) {
|
|
109
133
|
utils_1.logger.error('Error creating voicememo message:', { args, error });
|
|
@@ -113,11 +137,15 @@ server.registerTool('create_voicememo_message', {
|
|
|
113
137
|
server.registerTool('add_attachments_to_message', {
|
|
114
138
|
description: 'Add attachments to a message. In order to add attachments to a message, you must provide a message id and the attachments.',
|
|
115
139
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.addLinkAttachmentsToMessageParams.merge(CarbonVoiceSimplifiedAPI_zod_1.addLinkAttachmentsToMessageBody).shape,
|
|
140
|
+
annotations: {
|
|
141
|
+
readOnlyHint: false,
|
|
142
|
+
destructiveHint: false,
|
|
143
|
+
},
|
|
116
144
|
}, async (args, { authInfo }) => {
|
|
117
145
|
try {
|
|
118
146
|
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.addLinkAttachmentsToMessage(args.id, {
|
|
119
147
|
links: args.links,
|
|
120
|
-
}, (0,
|
|
148
|
+
}, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
121
149
|
}
|
|
122
150
|
catch (error) {
|
|
123
151
|
utils_1.logger.error('Error adding attachments to message:', { args, error });
|
|
@@ -128,9 +156,13 @@ server.registerTool('add_attachments_to_message', {
|
|
|
128
156
|
server.registerTool('get_user', {
|
|
129
157
|
description: 'Get a User by their ID.',
|
|
130
158
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getUserByIdParams.shape,
|
|
159
|
+
annotations: {
|
|
160
|
+
readOnlyHint: true,
|
|
161
|
+
destructiveHint: false,
|
|
162
|
+
},
|
|
131
163
|
}, async (args, { authInfo }) => {
|
|
132
164
|
try {
|
|
133
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getUserById(args.id, (0,
|
|
165
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getUserById(args.id, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
134
166
|
}
|
|
135
167
|
catch (error) {
|
|
136
168
|
utils_1.logger.error('Error getting user by id:', { args, error });
|
|
@@ -141,9 +173,13 @@ server.registerTool('search_user', {
|
|
|
141
173
|
description: 'Search for a User by their phone number or email address. ' +
|
|
142
174
|
'(In order to search for a User, you must provide a phone number or email address.)',
|
|
143
175
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.searchUserQueryParams.shape,
|
|
176
|
+
annotations: {
|
|
177
|
+
readOnlyHint: true,
|
|
178
|
+
destructiveHint: false,
|
|
179
|
+
},
|
|
144
180
|
}, async (args, { authInfo }) => {
|
|
145
181
|
try {
|
|
146
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.searchUser(args, (0,
|
|
182
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.searchUser(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
147
183
|
}
|
|
148
184
|
catch (error) {
|
|
149
185
|
utils_1.logger.error('Error searching for user:', { args, error });
|
|
@@ -154,21 +190,29 @@ server.registerTool('search_users', {
|
|
|
154
190
|
description: 'Search multiple Users by their phone numbers, email addresses or ids. ' +
|
|
155
191
|
'(In order to search Users, you must provide phone numbers, email addresses or ids.)',
|
|
156
192
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.searchUsersBody.shape,
|
|
193
|
+
annotations: {
|
|
194
|
+
readOnlyHint: true,
|
|
195
|
+
destructiveHint: false,
|
|
196
|
+
},
|
|
157
197
|
}, async (args, { authInfo }) => {
|
|
158
198
|
try {
|
|
159
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.searchUsers(args, (0,
|
|
199
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.searchUsers(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
160
200
|
}
|
|
161
201
|
catch (error) {
|
|
162
202
|
utils_1.logger.error('Error searching users:', { args, error });
|
|
163
203
|
return (0, utils_1.formatToMCPToolResponse)(error);
|
|
164
204
|
}
|
|
165
205
|
});
|
|
166
|
-
server.registerTool('
|
|
206
|
+
server.registerTool('get_current_user', {
|
|
167
207
|
description: 'Get the current user information. ',
|
|
168
208
|
inputSchema: zod_1.z.object({}).shape, // Needed in order to have access to authInfo
|
|
209
|
+
annotations: {
|
|
210
|
+
readOnlyHint: true,
|
|
211
|
+
destructiveHint: false,
|
|
212
|
+
},
|
|
169
213
|
}, async (params, { authInfo }) => {
|
|
170
214
|
try {
|
|
171
|
-
return (0, utils_1.formatToMCPToolResponse)(await cvApi.getWhoAmI((0,
|
|
215
|
+
return (0, utils_1.formatToMCPToolResponse)(await cvApi.getWhoAmI((0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
172
216
|
}
|
|
173
217
|
catch (error) {
|
|
174
218
|
utils_1.logger.error('Error searching users:', { params, error });
|
|
@@ -180,9 +224,13 @@ server.registerTool('list_conversations', {
|
|
|
180
224
|
description: 'List all conversations. ' +
|
|
181
225
|
'Returns a simplified view of user conversations that have had messages sent or received within the last 6 months.',
|
|
182
226
|
inputSchema: zod_1.z.object({}).shape,
|
|
227
|
+
annotations: {
|
|
228
|
+
readOnlyHint: true,
|
|
229
|
+
destructiveHint: false,
|
|
230
|
+
},
|
|
183
231
|
}, async (args, { authInfo }) => {
|
|
184
232
|
try {
|
|
185
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getAllConversations((0,
|
|
233
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getAllConversations((0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
186
234
|
}
|
|
187
235
|
catch (error) {
|
|
188
236
|
utils_1.logger.error('Error listing conversations:', { error });
|
|
@@ -192,9 +240,13 @@ server.registerTool('list_conversations', {
|
|
|
192
240
|
server.registerTool('get_conversation', {
|
|
193
241
|
description: 'Get a conversation by its ID.',
|
|
194
242
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getConversationByIdParams.shape,
|
|
243
|
+
annotations: {
|
|
244
|
+
readOnlyHint: true,
|
|
245
|
+
destructiveHint: false,
|
|
246
|
+
},
|
|
195
247
|
}, async (args, { authInfo }) => {
|
|
196
248
|
try {
|
|
197
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getConversationById(args.id, (0,
|
|
249
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getConversationById(args.id, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
198
250
|
}
|
|
199
251
|
catch (error) {
|
|
200
252
|
utils_1.logger.error('Error getting conversation by id:', { error });
|
|
@@ -204,9 +256,13 @@ server.registerTool('get_conversation', {
|
|
|
204
256
|
server.registerTool('get_conversation_users', {
|
|
205
257
|
description: 'Get users in a conversation.',
|
|
206
258
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getConversationByIdParams.shape,
|
|
259
|
+
annotations: {
|
|
260
|
+
readOnlyHint: true,
|
|
261
|
+
destructiveHint: false,
|
|
262
|
+
},
|
|
207
263
|
}, async (args, { authInfo }) => {
|
|
208
264
|
try {
|
|
209
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getConversationUsers(args.id, (0,
|
|
265
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getConversationUsers(args.id, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
210
266
|
}
|
|
211
267
|
catch (error) {
|
|
212
268
|
utils_1.logger.error('Error getting conversation users:', { error });
|
|
@@ -216,13 +272,17 @@ server.registerTool('get_conversation_users', {
|
|
|
216
272
|
server.registerTool('summarize_conversation', {
|
|
217
273
|
description: 'Summarize a conversation.',
|
|
218
274
|
inputSchema: schemas_1.summarizeConversationParams.shape,
|
|
275
|
+
annotations: {
|
|
276
|
+
readOnlyHint: false,
|
|
277
|
+
destructiveHint: false,
|
|
278
|
+
},
|
|
219
279
|
}, async (args, { authInfo }) => {
|
|
220
280
|
var _a;
|
|
221
281
|
try {
|
|
222
282
|
let message_ids = args.message_ids || [];
|
|
223
283
|
// If no message ids are provided, get couple of messages from the conversation
|
|
224
284
|
if (!args.message_ids) {
|
|
225
|
-
const messages = await simplifiedApi.listMessages(args, (0,
|
|
285
|
+
const messages = await simplifiedApi.listMessages(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token));
|
|
226
286
|
message_ids = ((_a = messages.results) === null || _a === void 0 ? void 0 : _a.map((message) => message.id)) || [];
|
|
227
287
|
}
|
|
228
288
|
const aiResponse = await simplifiedApi.aIResponseControllerCreateResponse({
|
|
@@ -230,7 +290,7 @@ server.registerTool('summarize_conversation', {
|
|
|
230
290
|
message_ids: message_ids,
|
|
231
291
|
channel_id: args.conversation_id,
|
|
232
292
|
language: args.language,
|
|
233
|
-
}, (0,
|
|
293
|
+
}, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token));
|
|
234
294
|
return (0, utils_1.formatToMCPToolResponse)(aiResponse);
|
|
235
295
|
}
|
|
236
296
|
catch (error) {
|
|
@@ -290,9 +350,13 @@ server.registerTool('get_root_folders', {
|
|
|
290
350
|
description: 'Lists all root folders for a given workspace, including their names, IDs, and basic structure, ' +
|
|
291
351
|
'but does not provide aggregate counts.(Required to inform message type:voicememo,prerecorded)',
|
|
292
352
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getAllRootFoldersQueryParams.shape,
|
|
353
|
+
annotations: {
|
|
354
|
+
readOnlyHint: true,
|
|
355
|
+
destructiveHint: false,
|
|
356
|
+
},
|
|
293
357
|
}, async (args, { authInfo }) => {
|
|
294
358
|
try {
|
|
295
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getAllRootFolders(args, (0,
|
|
359
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getAllRootFolders(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
296
360
|
}
|
|
297
361
|
catch (error) {
|
|
298
362
|
utils_1.logger.error('Error listing root folders:', { error });
|
|
@@ -302,9 +366,13 @@ server.registerTool('get_root_folders', {
|
|
|
302
366
|
server.registerTool('create_folder', {
|
|
303
367
|
description: 'Create a new folder.',
|
|
304
368
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.createFolderBody.shape,
|
|
369
|
+
annotations: {
|
|
370
|
+
readOnlyHint: false,
|
|
371
|
+
destructiveHint: false,
|
|
372
|
+
},
|
|
305
373
|
}, async (args, { authInfo }) => {
|
|
306
374
|
try {
|
|
307
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createFolder(args, (0,
|
|
375
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createFolder(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
308
376
|
}
|
|
309
377
|
catch (error) {
|
|
310
378
|
utils_1.logger.error('Error creating folder:', { error });
|
|
@@ -314,9 +382,13 @@ server.registerTool('create_folder', {
|
|
|
314
382
|
server.registerTool('get_folder', {
|
|
315
383
|
description: 'Get a folder by its ID.',
|
|
316
384
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getFolderByIdParams.merge(CarbonVoiceSimplifiedAPI_zod_1.getFolderByIdQueryParams).shape,
|
|
385
|
+
annotations: {
|
|
386
|
+
readOnlyHint: true,
|
|
387
|
+
destructiveHint: false,
|
|
388
|
+
},
|
|
317
389
|
}, async (args, { authInfo }) => {
|
|
318
390
|
try {
|
|
319
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getFolderById(args.id, args, (0,
|
|
391
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getFolderById(args.id, args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
320
392
|
}
|
|
321
393
|
catch (error) {
|
|
322
394
|
utils_1.logger.error('Error getting folder by id:', { error });
|
|
@@ -326,9 +398,13 @@ server.registerTool('get_folder', {
|
|
|
326
398
|
server.registerTool('get_folder_with_messages', {
|
|
327
399
|
description: 'Get a folder including its messages by its ID. (Only messages at folder level are returned.)',
|
|
328
400
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.getFolderMessagesParams.shape,
|
|
401
|
+
annotations: {
|
|
402
|
+
readOnlyHint: true,
|
|
403
|
+
destructiveHint: false,
|
|
404
|
+
},
|
|
329
405
|
}, async (args, { authInfo }) => {
|
|
330
406
|
try {
|
|
331
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getFolderMessages(args.id, (0,
|
|
407
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getFolderMessages(args.id, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
332
408
|
}
|
|
333
409
|
catch (error) {
|
|
334
410
|
utils_1.logger.error('Error getting folder with messages:', { error });
|
|
@@ -338,9 +414,13 @@ server.registerTool('get_folder_with_messages', {
|
|
|
338
414
|
server.registerTool('update_folder_name', {
|
|
339
415
|
description: 'Update a folder name by its ID.',
|
|
340
416
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.updateFolderNameParams.merge(CarbonVoiceSimplifiedAPI_zod_1.updateFolderNameBody).shape,
|
|
417
|
+
annotations: {
|
|
418
|
+
readOnlyHint: false,
|
|
419
|
+
destructiveHint: false,
|
|
420
|
+
},
|
|
341
421
|
}, async (args, { authInfo }) => {
|
|
342
422
|
try {
|
|
343
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.updateFolderName(args.id, args, (0,
|
|
423
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.updateFolderName(args.id, args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
344
424
|
}
|
|
345
425
|
catch (error) {
|
|
346
426
|
utils_1.logger.error('Error updating folder name:', { error });
|
|
@@ -351,9 +431,13 @@ server.registerTool('delete_folder', {
|
|
|
351
431
|
description: 'Delete a folder by its ID. Deleting a folder will also delete nested folders and all the messages in referenced folders. ' +
|
|
352
432
|
'(This is a destructive action and cannot be undone, so please be careful.)',
|
|
353
433
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.deleteFolderParams.shape,
|
|
434
|
+
annotations: {
|
|
435
|
+
readOnlyHint: false,
|
|
436
|
+
destructiveHint: true,
|
|
437
|
+
},
|
|
354
438
|
}, async (args, { authInfo }) => {
|
|
355
439
|
try {
|
|
356
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.deleteFolder(args.id, (0,
|
|
440
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.deleteFolder(args.id, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
357
441
|
}
|
|
358
442
|
catch (error) {
|
|
359
443
|
utils_1.logger.error('Error deleting folder:', { error });
|
|
@@ -363,9 +447,13 @@ server.registerTool('delete_folder', {
|
|
|
363
447
|
server.registerTool('move_folder', {
|
|
364
448
|
description: 'Move a folder by its ID. Move a Folder into another Folder or into a Workspace.',
|
|
365
449
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.moveFolderParams.merge(CarbonVoiceSimplifiedAPI_zod_1.moveFolderBody).shape,
|
|
450
|
+
annotations: {
|
|
451
|
+
readOnlyHint: false,
|
|
452
|
+
destructiveHint: false,
|
|
453
|
+
},
|
|
366
454
|
}, async (args, { authInfo }) => {
|
|
367
455
|
try {
|
|
368
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.moveFolder(args.id, args, (0,
|
|
456
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.moveFolder(args.id, args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
369
457
|
}
|
|
370
458
|
catch (error) {
|
|
371
459
|
utils_1.logger.error('Error moving folder:', { error });
|
|
@@ -376,9 +464,13 @@ server.registerTool('move_message_to_folder', {
|
|
|
376
464
|
description: 'Move a message to a folder by its ID. Move a Message into another Folder or into a Workspace. ' +
|
|
377
465
|
'Only allowed to move messages of type: voicememo,prerecorded.',
|
|
378
466
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.addMessageToFolderOrWorkspaceBody.shape,
|
|
467
|
+
annotations: {
|
|
468
|
+
readOnlyHint: false,
|
|
469
|
+
destructiveHint: false,
|
|
470
|
+
},
|
|
379
471
|
}, async (args, { authInfo }) => {
|
|
380
472
|
try {
|
|
381
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.addMessageToFolderOrWorkspace(args, (0,
|
|
473
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.addMessageToFolderOrWorkspace(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
382
474
|
}
|
|
383
475
|
catch (error) {
|
|
384
476
|
utils_1.logger.error('Error moving message to folder:', { error });
|
|
@@ -389,9 +481,13 @@ server.registerTool('move_message_to_folder', {
|
|
|
389
481
|
server.registerTool('get_workspaces_basic_info', {
|
|
390
482
|
description: 'Get basic information about a workspace.',
|
|
391
483
|
inputSchema: zod_1.z.object({}).shape,
|
|
484
|
+
annotations: {
|
|
485
|
+
readOnlyHint: true,
|
|
486
|
+
destructiveHint: false,
|
|
487
|
+
},
|
|
392
488
|
}, async (params, { authInfo }) => {
|
|
393
489
|
try {
|
|
394
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getAllWorkspacesWithBasicInfo((0,
|
|
490
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.getAllWorkspacesWithBasicInfo((0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
395
491
|
}
|
|
396
492
|
catch (error) {
|
|
397
493
|
utils_1.logger.error('Error getting workspaces basic info:', { error });
|
|
@@ -404,9 +500,13 @@ server.registerTool('list_ai_actions', {
|
|
|
404
500
|
'Filtering by owner type, Possible values: "user", "workspace", "system". ' +
|
|
405
501
|
'Do not use unless the user explicitly requests it.',
|
|
406
502
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.aIPromptControllerGetPromptsQueryParams.shape,
|
|
503
|
+
annotations: {
|
|
504
|
+
readOnlyHint: true,
|
|
505
|
+
destructiveHint: false,
|
|
506
|
+
},
|
|
407
507
|
}, async (args, { authInfo }) => {
|
|
408
508
|
try {
|
|
409
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.aIPromptControllerGetPrompts(args, (0,
|
|
509
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.aIPromptControllerGetPrompts(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
410
510
|
}
|
|
411
511
|
catch (error) {
|
|
412
512
|
utils_1.logger.error('Error listing ai actions:', { error });
|
|
@@ -416,9 +516,13 @@ server.registerTool('list_ai_actions', {
|
|
|
416
516
|
server.registerTool('run_ai_action', {
|
|
417
517
|
description: 'Run an AI Action (Prompt) for a message. You can run an AI Action for a message by its ID or a list of message IDs.',
|
|
418
518
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.aIResponseControllerCreateResponseBody.shape,
|
|
519
|
+
annotations: {
|
|
520
|
+
readOnlyHint: false,
|
|
521
|
+
destructiveHint: false,
|
|
522
|
+
},
|
|
419
523
|
}, async (args, { authInfo }) => {
|
|
420
524
|
try {
|
|
421
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.aIResponseControllerCreateResponse(args, (0,
|
|
525
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.aIResponseControllerCreateResponse(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
422
526
|
}
|
|
423
527
|
catch (error) {
|
|
424
528
|
utils_1.logger.error('Error running ai action:', { error });
|
|
@@ -429,9 +533,13 @@ server.registerTool('run_ai_action_for_shared_link', {
|
|
|
429
533
|
description: 'Run an AI Action (Prompt) for a shared link. You can run an AI Action for a shared link by its ID or a list of shared link IDs. ' +
|
|
430
534
|
'You can also provide the language of the response.',
|
|
431
535
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.createShareLinkAIResponseBody.shape,
|
|
536
|
+
annotations: {
|
|
537
|
+
readOnlyHint: false,
|
|
538
|
+
destructiveHint: false,
|
|
539
|
+
},
|
|
432
540
|
}, async (args, { authInfo }) => {
|
|
433
541
|
try {
|
|
434
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createShareLinkAIResponse(args, (0,
|
|
542
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.createShareLinkAIResponse(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
435
543
|
}
|
|
436
544
|
catch (error) {
|
|
437
545
|
utils_1.logger.error('Error running ai action for shared link:', { error });
|
|
@@ -442,9 +550,13 @@ server.registerTool('get_ai_action_responses', {
|
|
|
442
550
|
description: 'Retrieve previously generated AI Action (Prompt) responses by filtering for a specific prompt, message, or conversation ID. ' +
|
|
443
551
|
'Combine filters to narrow results and view all AI-generated responses related to a particular prompt, message, or conversation.',
|
|
444
552
|
inputSchema: CarbonVoiceSimplifiedAPI_zod_1.aIResponseControllerGetAllResponsesQueryParams.shape,
|
|
553
|
+
annotations: {
|
|
554
|
+
readOnlyHint: true,
|
|
555
|
+
destructiveHint: false,
|
|
556
|
+
},
|
|
445
557
|
}, async (args, { authInfo }) => {
|
|
446
558
|
try {
|
|
447
|
-
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.aIResponseControllerGetAllResponses(args, (0,
|
|
559
|
+
return (0, utils_1.formatToMCPToolResponse)(await simplifiedApi.aIResponseControllerGetAllResponses(args, (0, auth_1.setCarbonVoiceAuthHeader)(authInfo === null || authInfo === void 0 ? void 0 : authInfo.token)));
|
|
448
560
|
}
|
|
449
561
|
catch (error) {
|
|
450
562
|
utils_1.logger.error('Error getting ai action responses:', { error });
|