@linkedapi/mcp 1.0.1 → 2.0.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/README.md +1 -1
- package/dist/index.js +0 -23
- package/dist/index.js.map +1 -1
- package/dist/linked-api-server.d.ts +3 -3
- package/dist/linked-api-server.d.ts.map +1 -1
- package/dist/linked-api-server.js +37 -55
- package/dist/linked-api-server.js.map +1 -1
- package/dist/linked-api-tools.d.ts +5 -7
- package/dist/linked-api-tools.d.ts.map +1 -1
- package/dist/linked-api-tools.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -2
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +3 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/tools/get-api-usage-stats.d.ts +0 -2
- package/dist/tools/get-api-usage-stats.d.ts.map +1 -1
- package/dist/tools/get-api-usage-stats.js.map +1 -1
- package/dist/tools/get-conversation.d.ts +4 -7
- package/dist/tools/get-conversation.d.ts.map +1 -1
- package/dist/tools/get-conversation.js +7 -23
- package/dist/tools/get-conversation.js.map +1 -1
- package/dist/tools/get-workflow-result.d.ts +6 -6
- package/dist/tools/get-workflow-result.d.ts.map +1 -1
- package/dist/tools/get-workflow-result.js +37 -13
- package/dist/tools/get-workflow-result.js.map +1 -1
- package/dist/tools/nv-get-conversation.d.ts +4 -7
- package/dist/tools/nv-get-conversation.d.ts.map +1 -1
- package/dist/tools/nv-get-conversation.js +7 -23
- package/dist/tools/nv-get-conversation.js.map +1 -1
- package/dist/types/linked-api-tool-result.type.d.ts +6 -0
- package/dist/types/linked-api-tool-result.type.d.ts.map +1 -0
- package/dist/types/linked-api-tool-result.type.js +3 -0
- package/dist/types/linked-api-tool-result.type.js.map +1 -0
- package/dist/utils/handle-linked-api-error.d.ts.map +1 -1
- package/dist/utils/handle-linked-api-error.js +0 -19
- package/dist/utils/handle-linked-api-error.js.map +1 -1
- package/dist/utils/linked-api-tool.d.ts +5 -7
- package/dist/utils/linked-api-tool.d.ts.map +1 -1
- package/dist/utils/linked-api-tool.js +4 -9
- package/dist/utils/linked-api-tool.js.map +1 -1
- package/dist/utils/types.d.ts +0 -6
- package/dist/utils/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +0 -29
- package/src/linked-api-server.ts +44 -66
- package/src/linked-api-tools.ts +5 -13
- package/src/prompts/index.ts +3 -1
- package/src/tools/get-api-usage-stats.ts +0 -2
- package/src/tools/get-conversation.ts +9 -30
- package/src/tools/get-workflow-result.ts +63 -24
- package/src/tools/nv-get-conversation.ts +9 -30
- package/src/types/linked-api-tool-result.type.ts +12 -0
- package/src/utils/handle-linked-api-error.ts +1 -20
- package/src/utils/linked-api-tool.ts +11 -25
- package/src/utils/types.ts +0 -6
- package/dist/utils/execute-with-progress.d.ts +0 -13
- package/dist/utils/execute-with-progress.d.ts.map +0 -1
- package/dist/utils/execute-with-progress.js +0 -85
- package/dist/utils/execute-with-progress.js.map +0 -1
- package/src/utils/execute-with-progress.ts +0 -111
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ To start using Linked API MCP, spend 2 minutes reading these essential guides:
|
|
|
19
19
|
|
|
20
20
|
Linked API actions run through a cloud browser and are queued like normal automation. Many actions take several minutes, especially searches and profile fetches with optional data.
|
|
21
21
|
|
|
22
|
-
If a tool returns `workflowId` and `
|
|
22
|
+
If a tool returns `status`, `workflowId`, `operationName`, and `message`, the action is still running. Do not retry the original tool because that can queue duplicate work. Call `get_workflow_result` with the exact `workflowId` and `operationName` until the final result is returned. By default `get_workflow_result` long-polls until the workflow completes or the current MCP client's request budget elapses; pass `waitSeconds: 0` for an immediate single-shot snapshot.
|
|
23
23
|
|
|
24
24
|
## License
|
|
25
25
|
|
package/dist/index.js
CHANGED
|
@@ -124,33 +124,10 @@ async function main() {
|
|
|
124
124
|
mcpClient = deriveClientFromUserAgent(userAgentHeader);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
-
const progressCallback = (notification) => {
|
|
128
|
-
const { progressToken, progress, total, message } = notification;
|
|
129
|
-
if (progressToken === undefined) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
void extra
|
|
133
|
-
.sendNotification({
|
|
134
|
-
method: 'notifications/progress',
|
|
135
|
-
params: {
|
|
136
|
-
progressToken,
|
|
137
|
-
progress,
|
|
138
|
-
total,
|
|
139
|
-
message,
|
|
140
|
-
},
|
|
141
|
-
})
|
|
142
|
-
.catch((error) => {
|
|
143
|
-
logger_1.logger.warn({
|
|
144
|
-
toolName: request.params.name,
|
|
145
|
-
error: error instanceof Error ? error.message : String(error),
|
|
146
|
-
}, 'Failed to send MCP progress notification');
|
|
147
|
-
});
|
|
148
|
-
};
|
|
149
127
|
const result = await linkedApiServer.executeWithTokens(request.params, {
|
|
150
128
|
linkedApiToken,
|
|
151
129
|
identificationToken,
|
|
152
130
|
mcpClient,
|
|
153
|
-
progressCallback,
|
|
154
131
|
});
|
|
155
132
|
return result;
|
|
156
133
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,wEAAmE;AACnE,wEAAiF;AACjF,iEAK4C;AAC5C,0DAA6B;AAE7B,2DAAyD;AACzD,uCAA6E;AAC7E,qEAAsE;AACtE,2CAAwC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { TLinkedApiConfig } from '@linkedapi/node';
|
|
2
2
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
-
import { CallToolResult, ExtendedCallToolRequest
|
|
3
|
+
import { CallToolResult, ExtendedCallToolRequest } from './utils/types';
|
|
4
4
|
interface TExecuteWithTokensOptions extends TLinkedApiConfig {
|
|
5
5
|
mcpClient: string;
|
|
6
|
-
progressCallback?: (notification: LinkedApiProgressNotification) => void;
|
|
7
6
|
}
|
|
8
7
|
export declare class LinkedApiMCPServer {
|
|
9
8
|
private tools;
|
|
10
9
|
constructor();
|
|
11
10
|
getTools(): Tool[];
|
|
12
|
-
executeWithTokens(request: ExtendedCallToolRequest['params'], { linkedApiToken, identificationToken, mcpClient
|
|
11
|
+
executeWithTokens(request: ExtendedCallToolRequest['params'], { linkedApiToken, identificationToken, mcpClient }: TExecuteWithTokensOptions): Promise<CallToolResult>;
|
|
12
|
+
private text;
|
|
13
13
|
private calculateDuration;
|
|
14
14
|
}
|
|
15
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-server.d.ts","sourceRoot":"","sources":["../src/linked-api-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"linked-api-server.d.ts","sourceRoot":"","sources":["../src/linked-api-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK1D,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAMxE,UAAU,yBAA0B,SAAQ,gBAAgB;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiB;;IAMvB,QAAQ,IAAI,IAAI,EAAE;IAgBZ,iBAAiB,CAC5B,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAC1C,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,yBAAyB,GAC5E,OAAO,CAAC,cAAc,CAAC;IAqJ1B,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -4,12 +4,10 @@ exports.LinkedApiMCPServer = void 0;
|
|
|
4
4
|
const node_1 = require("@linkedapi/node");
|
|
5
5
|
const core_1 = require("@linkedapi/node/dist/core");
|
|
6
6
|
const linked_api_tools_1 = require("./linked-api-tools");
|
|
7
|
-
const define_request_timeout_1 = require("./utils/define-request-timeout");
|
|
8
7
|
const handle_linked_api_error_1 = require("./utils/handle-linked-api-error");
|
|
9
8
|
const logger_1 = require("./utils/logger");
|
|
10
|
-
const BACKGROUND_WORKFLOW_DESCRIPTION = `Linked API actions are queued into a cloud-browser workflow and may take several minutes.
|
|
9
|
+
const BACKGROUND_WORKFLOW_DESCRIPTION = `Linked API actions are queued into a cloud-browser workflow and may take several minutes. The server returns immediately after starting the workflow with {status: 'pending'|'running', workflowId, operationName, message}. To retrieve the final result, call get_workflow_result with the returned workflowId and operationName — it will long-poll until completion or the request budget elapses, then return either the final result or another in-progress snapshot. Do not retry the original tool while a workflow is still running; that creates duplicate queued work.`;
|
|
11
10
|
const NON_WORKFLOW_TOOL_NAMES = new Set(['get_workflow_result', 'get_api_usage']);
|
|
12
|
-
const NOOP_PROGRESS_CALLBACK = (_notification) => { };
|
|
13
11
|
class LinkedApiMCPServer {
|
|
14
12
|
tools;
|
|
15
13
|
constructor() {
|
|
@@ -29,16 +27,13 @@ class LinkedApiMCPServer {
|
|
|
29
27
|
const adminTools = this.tools.adminTools.map((tool) => tool.getTool());
|
|
30
28
|
return [...linkedApiTools, ...adminTools];
|
|
31
29
|
}
|
|
32
|
-
async executeWithTokens(request, { linkedApiToken, identificationToken, mcpClient
|
|
33
|
-
const workflowTimeout = (0, define_request_timeout_1.defineRequestTimeoutInSeconds)(mcpClient) * 1000;
|
|
30
|
+
async executeWithTokens(request, { linkedApiToken, identificationToken, mcpClient }) {
|
|
34
31
|
logger_1.logger.info({
|
|
35
32
|
toolName: request.name,
|
|
36
33
|
arguments: request.arguments,
|
|
37
34
|
mcpClient,
|
|
38
|
-
workflowTimeout,
|
|
39
35
|
}, 'Tool execution started');
|
|
40
|
-
const { name: toolName, arguments: args
|
|
41
|
-
const progressToken = _meta?.progressToken;
|
|
36
|
+
const { name: toolName, arguments: args } = request;
|
|
42
37
|
const startTime = Date.now();
|
|
43
38
|
try {
|
|
44
39
|
const adminTool = this.tools.adminToolByName(toolName);
|
|
@@ -59,23 +54,9 @@ class LinkedApiMCPServer {
|
|
|
59
54
|
data: result,
|
|
60
55
|
}, 'Tool execution successful');
|
|
61
56
|
if (result === undefined) {
|
|
62
|
-
return
|
|
63
|
-
content: [
|
|
64
|
-
{
|
|
65
|
-
type: 'text',
|
|
66
|
-
text: 'Completed',
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
};
|
|
57
|
+
return this.text('Completed');
|
|
70
58
|
}
|
|
71
|
-
return
|
|
72
|
-
content: [
|
|
73
|
-
{
|
|
74
|
-
type: 'text',
|
|
75
|
-
text: JSON.stringify(result, null, 2),
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
};
|
|
59
|
+
return this.text(JSON.stringify(result, null, 2));
|
|
79
60
|
}
|
|
80
61
|
const linkedapi = new node_1.LinkedApi((0, core_1.buildLinkedApiHttpClient)({
|
|
81
62
|
linkedApiToken: linkedApiToken,
|
|
@@ -86,15 +67,27 @@ class LinkedApiMCPServer {
|
|
|
86
67
|
throw new Error(`Unknown tool: ${toolName}`);
|
|
87
68
|
}
|
|
88
69
|
const params = tool.validate(args);
|
|
89
|
-
const
|
|
70
|
+
const result = await tool.execute({
|
|
90
71
|
linkedapi,
|
|
91
72
|
args: params,
|
|
92
|
-
|
|
93
|
-
progressToken,
|
|
94
|
-
progressCallback,
|
|
73
|
+
mcpClient,
|
|
95
74
|
});
|
|
96
|
-
const
|
|
97
|
-
|
|
75
|
+
const duration = this.calculateDuration(startTime);
|
|
76
|
+
if ('workflowStatus' in result) {
|
|
77
|
+
const inProgressBody = {
|
|
78
|
+
status: result.workflowStatus,
|
|
79
|
+
workflowId: result.workflowId,
|
|
80
|
+
operationName: result.operationName,
|
|
81
|
+
message: result.message,
|
|
82
|
+
};
|
|
83
|
+
logger_1.logger.info({
|
|
84
|
+
toolName,
|
|
85
|
+
duration,
|
|
86
|
+
body: inProgressBody,
|
|
87
|
+
}, 'Tool execution returned in-progress snapshot');
|
|
88
|
+
return this.text(JSON.stringify(inProgressBody, null, 2));
|
|
89
|
+
}
|
|
90
|
+
const { data, errors } = result;
|
|
98
91
|
if (errors.length > 0 && !data) {
|
|
99
92
|
logger_1.logger.error({
|
|
100
93
|
toolName,
|
|
@@ -117,23 +110,9 @@ class LinkedApiMCPServer {
|
|
|
117
110
|
data,
|
|
118
111
|
}, 'Tool execution successful');
|
|
119
112
|
if (data) {
|
|
120
|
-
return
|
|
121
|
-
content: [
|
|
122
|
-
{
|
|
123
|
-
type: 'text',
|
|
124
|
-
text: JSON.stringify(data, null, 2),
|
|
125
|
-
},
|
|
126
|
-
],
|
|
127
|
-
};
|
|
113
|
+
return this.text(JSON.stringify(data, null, 2));
|
|
128
114
|
}
|
|
129
|
-
return
|
|
130
|
-
content: [
|
|
131
|
-
{
|
|
132
|
-
type: 'text',
|
|
133
|
-
text: 'Completed',
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
};
|
|
115
|
+
return this.text('Completed');
|
|
137
116
|
}
|
|
138
117
|
catch (error) {
|
|
139
118
|
const duration = this.calculateDuration(startTime);
|
|
@@ -152,7 +131,7 @@ class LinkedApiMCPServer {
|
|
|
152
131
|
},
|
|
153
132
|
],
|
|
154
133
|
structuredContent: body,
|
|
155
|
-
isError:
|
|
134
|
+
isError: true,
|
|
156
135
|
};
|
|
157
136
|
}
|
|
158
137
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -162,16 +141,19 @@ class LinkedApiMCPServer {
|
|
|
162
141
|
error: errorMessage,
|
|
163
142
|
stack: error instanceof Error ? error.stack : undefined,
|
|
164
143
|
}, 'Tool execution failed with unknown error');
|
|
165
|
-
return {
|
|
166
|
-
content: [
|
|
167
|
-
{
|
|
168
|
-
type: 'text',
|
|
169
|
-
text: `Error executing ${toolName}: ${errorMessage}`,
|
|
170
|
-
},
|
|
171
|
-
],
|
|
172
|
-
};
|
|
144
|
+
return this.text(`Error executing ${toolName}: ${errorMessage}`);
|
|
173
145
|
}
|
|
174
146
|
}
|
|
147
|
+
text(text) {
|
|
148
|
+
return {
|
|
149
|
+
content: [
|
|
150
|
+
{
|
|
151
|
+
type: 'text',
|
|
152
|
+
text,
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
};
|
|
156
|
+
}
|
|
175
157
|
calculateDuration(startTime) {
|
|
176
158
|
const endTime = Date.now();
|
|
177
159
|
return `${((endTime - startTime) / 1000).toFixed(2)} seconds`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-server.js","sourceRoot":"","sources":["../src/linked-api-server.ts"],"names":[],"mappings":";;;AAAA,0CAA8F;AAC9F,oDAAqE;AAGrE,yDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"linked-api-server.js","sourceRoot":"","sources":["../src/linked-api-server.ts"],"names":[],"mappings":";;;AAAA,0CAA8F;AAC9F,oDAAqE;AAGrE,yDAAoD;AACpD,6EAAuE;AACvE,2CAAwC;AAGxC,MAAM,+BAA+B,GACnC,mjBAA4jB,CAAC;AAC/jB,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAS,CAAC,qBAAqB,EAAE,eAAe,CAAU,CAAC,CAAC;AAMnG,MAAa,kBAAkB;IACrB,KAAK,CAAiB;IAE9B;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,iCAAc,EAAE,CAAC;IACpC,CAAC;IAEM,QAAQ;QACb,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,OAAO;gBACL,GAAG,UAAU;gBACb,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,OAAO,+BAA+B,EAAE;aAC/E,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,OAA0C,EAC1C,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAA6B;QAE7E,eAAM,CAAC,IAAI,CACT;YACE,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS;SACV,EACD,wBAAwB,CACzB,CAAC;QACF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,IAAI,qBAAc,CAAC;oBAC/B,cAAc;oBACd,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC;oBACrC,KAAK;oBACL,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACnD,eAAM,CAAC,IAAI,CACT;oBACE,QAAQ;oBACR,QAAQ;oBACR,IAAI,EAAE,MAAM;iBACb,EACD,2BAA2B,CAC5B,CAAC;gBACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,gBAAS,CAC7B,IAAA,+BAAwB,EACtB;gBACE,cAAc,EAAE,cAAc;gBAC9B,mBAAmB,EAAE,mBAAmB;aACzC,EACD,KAAK,CACN,CACF,CAAC;YAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;gBAChC,SAAS;gBACT,IAAI,EAAE,MAAe;gBACrB,SAAS;aACV,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEnD,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,cAAc,GAAG;oBACrB,MAAM,EAAE,MAAM,CAAC,cAAc;oBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;gBACF,eAAM,CAAC,IAAI,CACT;oBACE,QAAQ;oBACR,QAAQ;oBACR,IAAI,EAAE,cAAc;iBACrB,EACD,8CAA8C,CAC/C,CAAC;gBACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YAChC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/B,eAAM,CAAC,KAAK,CACV;oBACE,QAAQ;oBACR,QAAQ;oBACR,MAAM;iBACP,EACD,uBAAuB,CACxB,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;yBAC9C;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,eAAM,CAAC,IAAI,CACT;gBACE,QAAQ;gBACR,QAAQ;gBACR,IAAI;aACL,EACD,2BAA2B,CAC5B,CAAC;YACF,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,KAAK,YAAY,qBAAc,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,IAAA,8CAAoB,EAAC,KAAK,CAAC,CAAC;gBACzC,eAAM,CAAC,KAAK,CACV;oBACE,QAAQ;oBACR,QAAQ;oBACR,IAAI;iBACL,EACD,6CAA6C,CAC9C,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;yBACpC;qBACF;oBACD,iBAAiB,EAAE,IAAI;oBACvB,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,eAAM,CAAC,KAAK,CACV;gBACE,QAAQ;gBACR,QAAQ;gBACR,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACxD,EACD,0CAA0C,CAC3C,CAAC;YAEF,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,QAAQ,KAAK,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,IAAY;QACvB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,SAAiB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAChE,CAAC;CACF;AA9LD,gDA8LC"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import LinkedApi
|
|
1
|
+
import LinkedApi from '@linkedapi/node';
|
|
2
2
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import type { TLinkedApiToolResult } from './types/linked-api-tool-result.type.js';
|
|
3
4
|
import { AdminTool } from './utils/admin-tool.js';
|
|
4
|
-
import { LinkedApiProgressNotification } from './utils/types.js';
|
|
5
5
|
interface TRegisteredLinkedApiTool {
|
|
6
6
|
readonly name: string;
|
|
7
7
|
getTool(): Tool;
|
|
8
8
|
validate(args: unknown): unknown;
|
|
9
|
-
execute(
|
|
9
|
+
execute(options: {
|
|
10
10
|
linkedapi: LinkedApi;
|
|
11
11
|
args: never;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
progressCallback: (progress: LinkedApiProgressNotification) => void;
|
|
15
|
-
}): Promise<TMappedResponse<unknown>>;
|
|
12
|
+
mcpClient: string;
|
|
13
|
+
}): Promise<TLinkedApiToolResult<unknown>>;
|
|
16
14
|
}
|
|
17
15
|
export declare class LinkedApiTools {
|
|
18
16
|
readonly tools: ReadonlyArray<TRegisteredLinkedApiTool>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-tools.d.ts","sourceRoot":"","sources":["../src/linked-api-tools.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,
|
|
1
|
+
{"version":3,"file":"linked-api-tools.d.ts","sourceRoot":"","sources":["../src/linked-api-tools.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAuC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,wBAAwB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,OAAO,CAAC,OAAO,EAAE;QACf,SAAS,EAAE,SAAS,CAAC;QACrB,IAAI,EAAE,KAAK,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;CAC5C;AAED,qBAAa,cAAc;IACzB,SAAgB,KAAK,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAC/D,SAAgB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;;IAkDhE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAI9D,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS;CAG9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-tools.js","sourceRoot":"","sources":["../src/linked-api-tools.ts"],"names":[],"mappings":";;;AAGA,+EAA2E;AAC3E,qFAAiF;AACjF,yEAAqE;AACrE,iFAA4E;AAC5E,mEAA+D;AAC/D,+FAA0F;AAC1F,iFAA6E;AAC7E,yEAAqE;AACrE,qEAAiE;AACjE,mEAA+D;AAC/D,mFAA+E;AAC/E,mEAA+D;AAC/D,2DAAwD;AACxD,mFAA+E;AAC/E,+DAA4D;AAC5D,6DAA0D;AAC1D,yDAAsD;AACtD,2EAAiE;AACjE,qEAAkE;AAClE,2EAAuE;AACvE,qEAAiE;AACjE,mEAA+D;AAC/D,2EAAuE;AACvE,2EAAuE;AACvE,qEAAiE;AACjE,mEAA+D;AAC/D,+DAA2D;AAC3D,uEAAoE;AACpE,6EAA0E;AAC1E,uFAAmF;AACnF,6EAA0E;AAC1E,6DAA0D;AAC1D,qEAAkE;AAClE,+DAA4D;AAC5D,mFAA+E;AAC/E,6DAA0D;AAC1D,2FAAuF;
|
|
1
|
+
{"version":3,"file":"linked-api-tools.js","sourceRoot":"","sources":["../src/linked-api-tools.ts"],"names":[],"mappings":";;;AAGA,+EAA2E;AAC3E,qFAAiF;AACjF,yEAAqE;AACrE,iFAA4E;AAC5E,mEAA+D;AAC/D,+FAA0F;AAC1F,iFAA6E;AAC7E,yEAAqE;AACrE,qEAAiE;AACjE,mEAA+D;AAC/D,mFAA+E;AAC/E,mEAA+D;AAC/D,2DAAwD;AACxD,mFAA+E;AAC/E,+DAA4D;AAC5D,6DAA0D;AAC1D,yDAAsD;AACtD,2EAAiE;AACjE,qEAAkE;AAClE,2EAAuE;AACvE,qEAAiE;AACjE,mEAA+D;AAC/D,2EAAuE;AACvE,2EAAuE;AACvE,qEAAiE;AACjE,mEAA+D;AAC/D,+DAA2D;AAC3D,uEAAoE;AACpE,6EAA0E;AAC1E,uFAAmF;AACnF,6EAA0E;AAC1E,6DAA0D;AAC1D,qEAAkE;AAClE,+DAA4D;AAC5D,mFAA+E;AAC/E,6DAA0D;AAC1D,2FAAuF;AAevF,MAAa,cAAc;IACT,KAAK,CAA0C;IAC/C,UAAU,CAA6C;IAEvE;QACE,IAAI,CAAC,KAAK,GAAG;YACX,iBAAiB;YACjB,IAAI,iCAAe,EAAE;YACrB,IAAI,yCAAmB,EAAE;YACzB,IAAI,sDAAyB,EAAE;YAC/B,IAAI,iDAAuB,EAAE;YAC7B,IAAI,sDAAyB,EAAE;YAC/B,IAAI,8DAA6B,EAAE;YACnC,IAAI,0DAA2B,EAAE;YACjC,IAAI,2CAAoB,EAAE;YAC1B,IAAI,yCAAmB,EAAE;YACzB,IAAI,mCAAgB,EAAE;YACtB,IAAI,mCAAgB,EAAE;YACtB,IAAI,iCAAe,EAAE;YACrB,IAAI,6BAAa,EAAE;YACnB,IAAI,kCAAe,EAAE;YACrB,IAAI,sCAAiB,EAAE;YACvB,IAAI,+BAAc,EAAE;YACpB,IAAI,iCAAe,EAAE;YACrB,IAAI,iDAAuB,EAAE;YAC7B,wBAAwB;YACxB,IAAI,sCAAiB,EAAE;YACvB,IAAI,8CAAqB,EAAE;YAC3B,IAAI,8CAAqB,EAAE;YAC3B,IAAI,wCAAkB,EAAE;YACxB,IAAI,wCAAkB,EAAE;YACxB,IAAI,sCAAiB,EAAE;YACvB,cAAc;YACd,IAAI,sDAAyB,EAAE;YAC/B,IAAI,8CAAqB,EAAE;YAC3B,IAAI,wCAAe,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,iEAA8B,EAAE;YACpC,IAAI,sCAAiB,EAAE;YACvB,IAAI,sCAAiB,EAAE;YACvB,IAAI,4CAAoB,EAAE;YAC1B,IAAI,kDAAuB,EAAE;YAC7B,IAAI,wDAA0B,EAAE;YAChC,IAAI,oDAAwB,EAAE;YAC9B,IAAI,mDAAuB,EAAE;YAC7B,IAAI,wCAAkB,EAAE;YACxB,IAAI,4CAAoB,EAAE;SAC3B,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvD,CAAC;IAEM,eAAe,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5D,CAAC;CACF;AA3DD,wCA2DC"}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare const systemPrompt = "You are a Linked API MCP server that provides access to LinkedIn data and actions.\n\nCRITICAL PERFORMANCE RULE: Only set optional parameters (retrieveExperience, retrieveEmployees, retrievePosts, etc.) to true if the user explicitly requests that specific data. Each additional parameter significantly increases execution time.\n\nDEFAULT BEHAVIOR: Always use basic requests first. For example:\n- fetch_person(personUrl) - gets name, title, company (fast)\n- Only add retrieveExperience: true if user asks for work history\n- Only add retrievePosts: true if user asks for posts/content\n\nDON'T enable multiple optional flags unless the user specifically requests all that data.\n\nAUTHENTICATION ERROR HANDLING\n\nWHEN YOU GET AN AUTHENTICATION ERROR:\nThe MCP client must provide valid authentication tokens to use Linked API services.\n\nREQUIRED TOKENS (have to be provided in headers in each request):\n- linked-api-token: Your Linked API access token from linkedapi.io\n- identification-token: Your identification token from linkedapi.io\n\nTOKEN SETUP:\n1. Visit https://linkedapi.io to get tokens\n2. Set headers with every request\n3. Keep tokens secure and never share them in logs or error messages\n\nBACKGROUND WORKFLOW HANDLING\n\nLINKEDIN WORKFLOWS RUN IN THE BACKGROUND:\n- Linked API operations often take 3-5 minutes or longer\n- To keep the MCP client responsive, workflows continue in the background\n- This is INTENTIONAL DESIGN for better user experience\n- You receive periodic updates about workflow progress\n- Simply continue listening for updates using get_workflow_result\n\nWHEN A WORKFLOW IS RUNNING IN BACKGROUND:\n1. You'll receive a status message with: workflowId and operationName\n2. Use get_workflow_result(workflowId, operationName) to continue listening for updates\n3. Keep listening until you get the final results\n4. This is normal workflow operation - the task is actively running\n\nEXAMPLE BACKGROUND WORKFLOW MESSAGE:\n{\n \"message\": \"Workflow is running in the background. Continue listening for updates.\",\n \"workflowId\": \"account-12345-abcde\",\n \"operationName\": \"searchCompanies\"\n}\n\nRESPONSE: \"Great! The search is running in the background. Let me continue listening for updates.\"\n\nALWAYS EXPLAIN TO USERS:\n- The workflow is actively running in the background\n- You're continuing to listen for updates\n- This ensures responsive interaction while processing\n- This is how Linked API provides optimal user experience\n\nCLIENT ACTION WHEN YOU SEE A BACKGROUND WORKFLOW MESSAGE:\n- Immediately call the get_workflow_result tool with the provided workflowId and operationName\n- Keep calling get_workflow_result until the final result is returned\n- Do NOT retry the original tool; the workflow is already running\n- Treat this as normal, successful behavior (not an error)\n\nREQUIRED PARAMETERS FOR get_workflow_result:\n- workflowId: The exact value from the background message\n- operationName: The exact value from the background message (required for correct type restoration)\n\nGENERIC MCP CALL EXAMPLE:\n{\n \"name\": \"get_workflow_result\",\n \"arguments\": {\n \"workflowId\": \"account-12345-abcde\",\n \"operationName\": \"searchCompanies\"\n }\n}\n\nRemember: Background workflows = Active processing with responsive updates!";
|
|
1
|
+
export declare const systemPrompt = "You are a Linked API MCP server that provides access to LinkedIn data and actions.\n\nCRITICAL PERFORMANCE RULE: Only set optional parameters (retrieveExperience, retrieveEmployees, retrievePosts, etc.) to true if the user explicitly requests that specific data. Each additional parameter significantly increases execution time.\n\nDEFAULT BEHAVIOR: Always use basic requests first. For example:\n- fetch_person(personUrl) - gets name, title, company (fast)\n- Only add retrieveExperience: true if user asks for work history\n- Only add retrievePosts: true if user asks for posts/content\n\nDON'T enable multiple optional flags unless the user specifically requests all that data.\n\nAUTHENTICATION ERROR HANDLING\n\nWHEN YOU GET AN AUTHENTICATION ERROR:\nThe MCP client must provide valid authentication tokens to use Linked API services.\n\nREQUIRED TOKENS (have to be provided in headers in each request):\n- linked-api-token: Your Linked API access token from linkedapi.io\n- identification-token: Your identification token from linkedapi.io\n\nTOKEN SETUP:\n1. Visit https://linkedapi.io to get tokens\n2. Set headers with every request\n3. Keep tokens secure and never share them in logs or error messages\n\nBACKGROUND WORKFLOW HANDLING\n\nLINKEDIN WORKFLOWS RUN IN THE BACKGROUND:\n- Linked API operations often take 3-5 minutes or longer\n- To keep the MCP client responsive, workflows continue in the background\n- This is INTENTIONAL DESIGN for better user experience\n- You receive periodic updates about workflow progress\n- Simply continue listening for updates using get_workflow_result\n\nWHEN A WORKFLOW IS RUNNING IN BACKGROUND:\n1. You'll receive a status message with: workflowId, status, message, and operationName\n2. Use get_workflow_result(workflowId, operationName) to continue listening for updates\n3. Keep listening until you get the final results\n4. This is normal workflow operation - the task is actively running\n\nEXAMPLE BACKGROUND WORKFLOW MESSAGE:\n{\n \"message\": \"Workflow is running in the background. Continue listening for updates.\",\n \"status\": \"running\",\n \"workflowId\": \"account-12345-abcde\",\n \"operationName\": \"searchCompanies\"\n}\n\nRESPONSE: \"Great! The search is running in the background. Let me continue listening for updates.\"\n\nALWAYS EXPLAIN TO USERS:\n- The workflow is actively running in the background\n- You're continuing to listen for updates\n- This ensures responsive interaction while processing\n- This is how Linked API provides optimal user experience\n\nCLIENT ACTION WHEN YOU SEE A BACKGROUND WORKFLOW MESSAGE:\n- Immediately call the get_workflow_result tool with the provided workflowId and operationName\n- Keep calling get_workflow_result until the final result is returned\n- Do NOT retry the original tool; the workflow is already running\n- Treat this as normal, successful behavior (not an error)\n\nREQUIRED PARAMETERS FOR get_workflow_result:\n- workflowId: The exact value from the background message\n- operationName: The exact value from the background message (required for correct type restoration)\n\nGENERIC MCP CALL EXAMPLE:\n{\n \"name\": \"get_workflow_result\",\n \"arguments\": {\n \"workflowId\": \"account-12345-abcde\",\n \"operationName\": \"searchCompanies\"\n }\n}\n\nRemember: Background workflows = Active processing with responsive updates!";
|
|
2
2
|
export declare const parameterUsageGuidelines = "Parameter Usage Guidelines:\n\nFAST:\n- Basic person/company info (no optional flags)\n- Simple searches\n- Send messages, connection requests\n\nSLOW:\n- retrievePosts, retrieveComments, retrieveReactions \n- retrieveEmployees, retrieveDMs\n- Complex searches\n\nVERY SLOW:\n- Multiple optional flags together\n- Large employee lists\n- Extensive post history\n\nOnly enable what the user explicitly requests.";
|
|
3
|
-
export declare const backgroundWorkflowPrompt = "LINKED API BACKGROUND WORKFLOWS GUIDE\n\nIMPORTANT: Background workflows are NORMAL and OPTIMAL behavior!\n\nWHY WORKFLOWS RUN IN BACKGROUND:\n- Linked API operations are naturally slow (5+ minutes)\n- MCP client stays responsive by running workflows in background\n- This is INTENTIONAL DESIGN for better user experience\n- Your operation continues processing while you get updates\n\nWHAT TO DO WHEN WORKFLOW RUNS IN BACKGROUND:\n1. Look for workflowId and operationName in the status message\n2. Immediately call get_workflow_result(workflowId, operationName) to continue listening\n3. Repeat get_workflow_result until you get final results\n4. Do NOT re-run the original tool; the workflow is already executing\n5. Treat this as normal, successful operation (not an error)\n\nEXAMPLE BACKGROUND WORKFLOW MESSAGE:\n{\n \"message\": \"Workflow is running in the background. Continue listening for updates.\",\n \"workflowId\": \"account-12345-abcde\", \n \"operationName\": \"searchCompanies\"\n}\n\nCORRECT RESPONSE:\n\"Perfect! The search is running in the background. Let me continue listening by calling get_workflow_result with the provided parameters.\"\n\nGENERIC MCP CALL TO CONTINUE LISTENING:\n{\n \"name\": \"get_workflow_result\",\n \"arguments\": {\n \"workflowId\": \"account-12345-abcde\",\n \"operationName\": \"searchCompanies\"\n }\n}\n\nINCORRECT RESPONSE:\n\"Sorry, there was an error. The search failed.\"\n\nREMEMBER:\n\u2705 Background workflows = Active processing (operation is running)\n\u274C Background workflows \u2260 Errors (operation is not broken)\n\uD83D\uDD04 Always continue listening for workflow updates\n\u23F1\uFE0F Linked API uses background processing for optimal UX\n\nCOMMON MISTAKES TO AVOID:\n- Retrying the original tool instead of calling get_workflow_result\n- Omitting operationName (it is required)\n- Treating the background message as a failure instead of an active process";
|
|
3
|
+
export declare const backgroundWorkflowPrompt = "LINKED API BACKGROUND WORKFLOWS GUIDE\n\nIMPORTANT: Background workflows are NORMAL and OPTIMAL behavior!\n\nWHY WORKFLOWS RUN IN BACKGROUND:\n- Linked API operations are naturally slow (5+ minutes)\n- MCP client stays responsive by running workflows in background\n- This is INTENTIONAL DESIGN for better user experience\n- Your operation continues processing while you get updates\n\nWHAT TO DO WHEN WORKFLOW RUNS IN BACKGROUND:\n1. Look for workflowId and operationName in the status message\n2. Immediately call get_workflow_result(workflowId, operationName) to continue listening\n3. Repeat get_workflow_result until you get final results\n4. Do NOT re-run the original tool; the workflow is already executing\n5. Treat this as normal, successful operation (not an error)\n\nEXAMPLE BACKGROUND WORKFLOW MESSAGE:\n{\n \"message\": \"Workflow is running in the background. Continue listening for updates.\",\n \"status\": \"running\",\n \"workflowId\": \"account-12345-abcde\", \n \"operationName\": \"searchCompanies\"\n}\n\nCORRECT RESPONSE:\n\"Perfect! The search is running in the background. Let me continue listening by calling get_workflow_result with the provided parameters.\"\n\nGENERIC MCP CALL TO CONTINUE LISTENING:\n{\n \"name\": \"get_workflow_result\",\n \"arguments\": {\n \"workflowId\": \"account-12345-abcde\",\n \"operationName\": \"searchCompanies\"\n }\n}\n\nINCORRECT RESPONSE:\n\"Sorry, there was an error. The search failed.\"\n\nREMEMBER:\n\u2705 Background workflows = Active processing (operation is running)\n\u274C Background workflows \u2260 Errors (operation is not broken)\n\uD83D\uDD04 Always continue listening for workflow updates\n\u23F1\uFE0F Linked API uses background processing for optimal UX\n\nCOMMON MISTAKES TO AVOID:\n- Retrying the original tool instead of calling get_workflow_result\n- Omitting operationName (it is required)\n- Treating the background message as a failure instead of an active process";
|
|
4
4
|
export declare const authenticationPrompt = "AUTHENTICATION REQUIREMENTS:\n- MCP clients must provide valid authentication tokens to use Linked API services\n- linked-api-token: Main Linked API access token from linkedapi.io\n- identification-token: Account identification token from linkedapi.io\n\nTOKEN SETUP:\n1. Visit https://linkedapi.io to get tokens\n2. Set headers with every request in MCP client configuration\n3. Keep tokens secure and never share them in logs or error messages\n\nMore information: https://linkedapi.io/mcp/installation/";
|
|
5
5
|
export declare const availablePrompts: {
|
|
6
6
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,gzGA2EmD,CAAC;AAE7E,eAAO,MAAM,wBAAwB,gaAiBU,CAAC;AAEhD,eAAO,MAAM,wBAAwB,q7DAiDuC,CAAC;AAE7E,eAAO,MAAM,oBAAoB,8fAUwB,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;GAiB5B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAarD"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -37,7 +37,7 @@ LINKEDIN WORKFLOWS RUN IN THE BACKGROUND:
|
|
|
37
37
|
- Simply continue listening for updates using get_workflow_result
|
|
38
38
|
|
|
39
39
|
WHEN A WORKFLOW IS RUNNING IN BACKGROUND:
|
|
40
|
-
1. You'll receive a status message with: workflowId and operationName
|
|
40
|
+
1. You'll receive a status message with: workflowId, status, message, and operationName
|
|
41
41
|
2. Use get_workflow_result(workflowId, operationName) to continue listening for updates
|
|
42
42
|
3. Keep listening until you get the final results
|
|
43
43
|
4. This is normal workflow operation - the task is actively running
|
|
@@ -45,6 +45,7 @@ WHEN A WORKFLOW IS RUNNING IN BACKGROUND:
|
|
|
45
45
|
EXAMPLE BACKGROUND WORKFLOW MESSAGE:
|
|
46
46
|
{
|
|
47
47
|
"message": "Workflow is running in the background. Continue listening for updates.",
|
|
48
|
+
"status": "running",
|
|
48
49
|
"workflowId": "account-12345-abcde",
|
|
49
50
|
"operationName": "searchCompanies"
|
|
50
51
|
}
|
|
@@ -115,6 +116,7 @@ WHAT TO DO WHEN WORKFLOW RUNS IN BACKGROUND:
|
|
|
115
116
|
EXAMPLE BACKGROUND WORKFLOW MESSAGE:
|
|
116
117
|
{
|
|
117
118
|
"message": "Workflow is running in the background. Continue listening for updates.",
|
|
119
|
+
"status": "running",
|
|
118
120
|
"workflowId": "account-12345-abcde",
|
|
119
121
|
"operationName": "searchCompanies"
|
|
120
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":";;;AAkLA,4CAaC;AA/LY,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA2EgD,CAAC;AAEhE,QAAA,wBAAwB,GAAG;;;;;;;;;;;;;;;;;+CAiBO,CAAC;AAEnC,QAAA,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAiDoC,CAAC;AAEhE,QAAA,oBAAoB,GAAG;;;;;;;;;;yDAUqB,CAAC;AAE7C,QAAA,gBAAgB,GAAG;IAC9B;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,kEAAkE;KAChF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,8DAA8D;KAC5E;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,8DAA8D;KAC5E;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,+CAA+C;KAC7D;CACF,CAAC;AAEF,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,wBAAwB;YAC3B,OAAO,oBAAY,CAAC;QACtB,KAAK,iBAAiB;YACpB,OAAO,gCAAwB,CAAC;QAClC,KAAK,sBAAsB;YACzB,OAAO,gCAAwB,CAAC;QAClC,KAAK,6BAA6B;YAChC,OAAO,4BAAoB,CAAC;QAC9B;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
|
|
@@ -11,8 +11,6 @@ export declare class GetApiUsageTool extends LinkedApiTool<TApiUsageParams, TApi
|
|
|
11
11
|
execute({ linkedapi, args, }: {
|
|
12
12
|
linkedapi: LinkedApi;
|
|
13
13
|
args: TApiUsageParams;
|
|
14
|
-
workflowTimeout: number;
|
|
15
|
-
progressToken?: string | number;
|
|
16
14
|
}): Promise<TMappedResponse<TApiUsageAction[]>>;
|
|
17
15
|
getTool(): Tool;
|
|
18
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-api-usage-stats.d.ts","sourceRoot":"","sources":["../../src/tools/get-api-usage-stats.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,eAAgB,SAAQ,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC;IACpF,SAAgB,IAAI,mBAAmB;IACvC,SAAS,CAAC,QAAQ,CAAC,MAAM;;;sBAGtB;IAEmB,OAAO,CAAC,EAC5B,SAAS,EACT,IAAI,GACL,EAAE;QACD,SAAS,EAAE,SAAS,CAAC;QACrB,IAAI,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"get-api-usage-stats.d.ts","sourceRoot":"","sources":["../../src/tools/get-api-usage-stats.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,eAAgB,SAAQ,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC;IACpF,SAAgB,IAAI,mBAAmB;IACvC,SAAS,CAAC,QAAQ,CAAC,MAAM;;;sBAGtB;IAEmB,OAAO,CAAC,EAC5B,SAAS,EACT,IAAI,GACL,EAAE;QACD,SAAS,EAAE,SAAS,CAAC;QACrB,IAAI,EAAE,eAAe,CAAC;KACvB,GAAG,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;IAI/B,OAAO,IAAI,IAAI;CAsBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-api-usage-stats.js","sourceRoot":"","sources":["../../src/tools/get-api-usage-stats.ts"],"names":[],"mappings":";;;;;;AAEA,8CAAoB;AAEpB,oEAA4D;AAE5D,MAAa,eAAgB,SAAQ,kCAAiD;IACpE,IAAI,GAAG,eAAe,CAAC;IACpB,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC;QACnC,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE;QACjB,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE;KAChB,CAAC,CAAC;IAEa,KAAK,CAAC,OAAO,CAAC,EAC5B,SAAS,EACT,IAAI,
|
|
1
|
+
{"version":3,"file":"get-api-usage-stats.js","sourceRoot":"","sources":["../../src/tools/get-api-usage-stats.ts"],"names":[],"mappings":";;;;;;AAEA,8CAAoB;AAEpB,oEAA4D;AAE5D,MAAa,eAAgB,SAAQ,kCAAiD;IACpE,IAAI,GAAG,eAAe,CAAC;IACpB,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC;QACnC,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE;QACjB,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE;KAChB,CAAC,CAAC;IAEa,KAAK,CAAC,OAAO,CAAC,EAC5B,SAAS,EACT,IAAI,GAIL;QACC,OAAO,MAAM,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEe,OAAO;QACrB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,2EAA2E;YACxF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,wFAAwF;qBAC3F;oBACD,GAAG,EAAE;wBACH,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,sFAAsF;qBACzF;iBACF;gBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aAC3B;SACF,CAAC;IACJ,CAAC;CACF;AAvCD,0CAuCC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import LinkedApi, { TConversationPollResult, TMappedResponse } from '@linkedapi/node';
|
|
2
2
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
import z from 'zod';
|
|
4
|
+
import type { TWorkflowAck } from '../types/linked-api-tool-result.type.js';
|
|
4
5
|
import { LinkedApiTool } from '../utils/linked-api-tool.js';
|
|
5
|
-
import { LinkedApiProgressNotification } from '../utils/types.js';
|
|
6
6
|
export declare class GetConversationTool extends LinkedApiTool<{
|
|
7
7
|
personUrl: string;
|
|
8
8
|
since?: string;
|
|
@@ -12,17 +12,14 @@ export declare class GetConversationTool extends LinkedApiTool<{
|
|
|
12
12
|
personUrl: z.ZodString;
|
|
13
13
|
since: z.ZodOptional<z.ZodString>;
|
|
14
14
|
}, z.core.$strip>;
|
|
15
|
-
execute({ linkedapi, args: { personUrl, since },
|
|
15
|
+
execute({ linkedapi, args: { personUrl, since }, }: {
|
|
16
16
|
linkedapi: LinkedApi;
|
|
17
17
|
args: {
|
|
18
18
|
personUrl: string;
|
|
19
19
|
since?: string;
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
progressCallback: (progress: LinkedApiProgressNotification) => void;
|
|
24
|
-
}): Promise<TMappedResponse<TConversationPollResult>>;
|
|
25
|
-
private getConversation;
|
|
21
|
+
}): Promise<TMappedResponse<TConversationPollResult> | TWorkflowAck>;
|
|
22
|
+
private pollConversation;
|
|
26
23
|
getTool(): Tool;
|
|
27
24
|
}
|
|
28
25
|
//# sourceMappingURL=get-conversation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-conversation.d.ts","sourceRoot":"","sources":["../../src/tools/get-conversation.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAEhB,uBAAuB,EACvB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"get-conversation.d.ts","sourceRoot":"","sources":["../../src/tools/get-conversation.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAEhB,uBAAuB,EACvB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,mBAAoB,SAAQ,aAAa,CACpD;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACrC,uBAAuB,CACxB;IACC,SAAgB,IAAI,sBAAsB;IAC1C,SAAS,CAAC,QAAQ,CAAC,MAAM;;;sBAGtB;IAEmB,OAAO,CAAC,EAC5B,SAAS,EACT,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAC3B,EAAE;QACD,SAAS,EAAE,SAAS,CAAC;QACrB,IAAI,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7C,GAAG,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,GAAG,YAAY,CAAC;YAUtD,gBAAgB;IAkBd,OAAO,IAAI,IAAI;CAuBhC"}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.GetConversationTool = void 0;
|
|
7
7
|
const node_1 = require("@linkedapi/node");
|
|
8
8
|
const zod_1 = __importDefault(require("zod"));
|
|
9
|
-
const execute_with_progress_js_1 = require("../utils/execute-with-progress.js");
|
|
10
9
|
const linked_api_tool_js_1 = require("../utils/linked-api-tool.js");
|
|
11
10
|
class GetConversationTool extends linked_api_tool_js_1.LinkedApiTool {
|
|
12
11
|
name = 'get_conversation';
|
|
@@ -14,31 +13,16 @@ class GetConversationTool extends linked_api_tool_js_1.LinkedApiTool {
|
|
|
14
13
|
personUrl: zod_1.default.string(),
|
|
15
14
|
since: zod_1.default.string().optional(),
|
|
16
15
|
});
|
|
17
|
-
async execute({ linkedapi, args: { personUrl, since },
|
|
18
|
-
const conversations = await this.
|
|
16
|
+
async execute({ linkedapi, args: { personUrl, since }, }) {
|
|
17
|
+
const conversations = await this.pollConversation(linkedapi, personUrl, since);
|
|
19
18
|
if (conversations.errors.length === 0) {
|
|
20
19
|
return conversations;
|
|
21
20
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
operation: linkedapi.syncConversation,
|
|
26
|
-
workflowTimeout,
|
|
27
|
-
params: { personUrl },
|
|
28
|
-
progressToken,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
if (error instanceof node_1.LinkedApiWorkflowTimeoutError) {
|
|
33
|
-
error.message = `${error.message}
|
|
34
|
-
|
|
35
|
-
After get_workflow_result completes this sync workflow, call get_conversation again with the same personUrl to read the synchronized messages.`;
|
|
36
|
-
}
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
39
|
-
return await this.getConversation(linkedapi, personUrl, since);
|
|
21
|
+
const ack = await linkedapi.syncConversation.execute({ personUrl });
|
|
22
|
+
return { ...ack,
|
|
23
|
+
operationName: node_1.OPERATION_NAME.syncConversation };
|
|
40
24
|
}
|
|
41
|
-
async
|
|
25
|
+
async pollConversation(linkedapi, personUrl, since) {
|
|
42
26
|
const conversations = await linkedapi.pollConversations([
|
|
43
27
|
{
|
|
44
28
|
personUrl: personUrl,
|
|
@@ -54,7 +38,7 @@ After get_workflow_result completes this sync workflow, call get_conversation ag
|
|
|
54
38
|
getTool() {
|
|
55
39
|
return {
|
|
56
40
|
name: this.name,
|
|
57
|
-
description: '
|
|
41
|
+
description: 'Retrieve a conversation with a LinkedIn person via standard LinkedIn messaging. Returns the conversation immediately if it has already been synced. If the conversation has not been synced yet, this tool starts a syncConversation workflow and returns its ack ({status, workflowId, operationName: "syncConversation", message}); the client should call get_workflow_result with that workflowId until completion, then call get_conversation again to read the synced messages.',
|
|
58
42
|
inputSchema: {
|
|
59
43
|
type: 'object',
|
|
60
44
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-conversation.js","sourceRoot":"","sources":["../../src/tools/get-conversation.ts"],"names":[],"mappings":";;;;;;AAAA,0CAIyB;AAEzB,8CAAoB;
|
|
1
|
+
{"version":3,"file":"get-conversation.js","sourceRoot":"","sources":["../../src/tools/get-conversation.ts"],"names":[],"mappings":";;;;;;AAAA,0CAIyB;AAEzB,8CAAoB;AAGpB,oEAA4D;AAE5D,MAAa,mBAAoB,SAAQ,kCAGxC;IACiB,IAAI,GAAG,kBAAkB,CAAC;IACvB,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC;QACnC,SAAS,EAAE,aAAC,CAAC,MAAM,EAAE;QACrB,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC,CAAC;IAEa,KAAK,CAAC,OAAO,CAAC,EAC5B,SAAS,EACT,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAI3B;QACC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/E,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,GAAG,GAAG;YACnB,aAAa,EAAE,qBAAc,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,SAAoB,EACpB,SAAiB,EACjB,KAAc;QAEd,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC;YACtD;gBACE,SAAS,EAAE,SAAS;gBACpB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,KAAK;aACb;SACF,CAAC,CAAC;QACH,OAAO;YACL,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5D,MAAM,EAAE,aAAa,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC;IAEe,OAAO;QACrB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EACT,udAAud;YACzd,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE;wBACT,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,mHAAmH;qBACtH;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,0KAA0K;qBAC7K;iBACF;gBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;aACxB;SACF,CAAC;IACJ,CAAC;CACF;AAnED,kDAmEC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import LinkedApi, { TMappedResponse } from '@linkedapi/node';
|
|
2
2
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
import z from 'zod';
|
|
4
|
+
import type { TWorkflowAck } from '../types/linked-api-tool-result.type.js';
|
|
4
5
|
import { LinkedApiTool } from '../utils/linked-api-tool.js';
|
|
5
|
-
import { LinkedApiProgressNotification } from '../utils/types.js';
|
|
6
6
|
interface IGetWorkflowResultParams {
|
|
7
7
|
workflowId: string;
|
|
8
8
|
operationName: string;
|
|
9
|
+
waitSeconds?: number;
|
|
9
10
|
}
|
|
10
11
|
export declare class GetWorkflowResultTool extends LinkedApiTool<IGetWorkflowResultParams, unknown> {
|
|
11
12
|
readonly name = "get_workflow_result";
|
|
@@ -38,14 +39,13 @@ export declare class GetWorkflowResultTool extends LinkedApiTool<IGetWorkflowRes
|
|
|
38
39
|
nvFetchCompany: "nvFetchCompany";
|
|
39
40
|
nvFetchPerson: "nvFetchPerson";
|
|
40
41
|
}>;
|
|
42
|
+
waitSeconds: z.ZodOptional<z.ZodNumber>;
|
|
41
43
|
}, z.core.$strip>;
|
|
42
|
-
execute({ linkedapi, args: { workflowId, operationName
|
|
44
|
+
execute({ linkedapi, args: { workflowId, operationName, waitSeconds }, mcpClient, }: {
|
|
43
45
|
linkedapi: LinkedApi;
|
|
44
46
|
args: IGetWorkflowResultParams;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
progressCallback: (progress: LinkedApiProgressNotification) => void;
|
|
48
|
-
}): Promise<TMappedResponse<unknown>>;
|
|
47
|
+
mcpClient: string;
|
|
48
|
+
}): Promise<TMappedResponse<unknown> | TWorkflowAck>;
|
|
49
49
|
getTool(): Tool;
|
|
50
50
|
}
|
|
51
51
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-workflow-result.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-result.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"get-workflow-result.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-result.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAGhB,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D,UAAU,wBAAwB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,qBAAsB,SAAQ,aAAa,CAAC,wBAAwB,EAAE,OAAO,CAAC;IACzF,SAAgB,IAAI,yBAAyB;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAItB;IAEmB,OAAO,CAAC,EAC5B,SAAS,EACT,IAAI,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,EAChD,SAAS,GACV,EAAE;QACD,SAAS,EAAE,SAAS,CAAC;QACrB,IAAI,EAAE,wBAAwB,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;IA4BpC,OAAO,IAAI,IAAI;CA2BhC"}
|