@linkedapi/mcp 0.3.11 → 1.0.1
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/.github/workflows/merge-main.yaml +9 -9
- package/.github/workflows/pr-main.yaml +4 -4
- package/README.md +9 -0
- package/dist/index.js +42 -9
- package/dist/index.js.map +1 -1
- package/dist/linked-api-server.d.ts +7 -4
- package/dist/linked-api-server.d.ts.map +1 -1
- package/dist/linked-api-server.js +62 -8
- package/dist/linked-api-server.js.map +1 -1
- package/dist/linked-api-tools.d.ts +21 -4
- package/dist/linked-api-tools.d.ts.map +1 -1
- package/dist/linked-api-tools.js +54 -28
- package/dist/linked-api-tools.js.map +1 -1
- package/dist/tools/admin-connect-account.d.ts +14 -0
- package/dist/tools/admin-connect-account.d.ts.map +1 -0
- package/dist/tools/admin-connect-account.js +27 -0
- package/dist/tools/admin-connect-account.js.map +1 -0
- package/dist/tools/admin-disconnect-account.d.ts +16 -0
- package/dist/tools/admin-disconnect-account.d.ts.map +1 -0
- package/dist/tools/admin-disconnect-account.js +35 -0
- package/dist/tools/admin-disconnect-account.js.map +1 -0
- package/dist/tools/admin-get-accounts.d.ts +14 -0
- package/dist/tools/admin-get-accounts.d.ts.map +1 -0
- package/dist/tools/admin-get-accounts.js +27 -0
- package/dist/tools/admin-get-accounts.js.map +1 -0
- package/dist/tools/admin-get-limits-usage.d.ts +20 -0
- package/dist/tools/admin-get-limits-usage.d.ts.map +1 -0
- package/dist/tools/admin-get-limits-usage.js +35 -0
- package/dist/tools/admin-get-limits-usage.js.map +1 -0
- package/dist/tools/admin-get-seats.d.ts +18 -0
- package/dist/tools/admin-get-seats.d.ts.map +1 -0
- package/dist/tools/admin-get-seats.js +27 -0
- package/dist/tools/admin-get-seats.js.map +1 -0
- package/dist/tools/admin-get-subscription-status.d.ts +14 -0
- package/dist/tools/admin-get-subscription-status.d.ts.map +1 -0
- package/dist/tools/admin-get-subscription-status.js +27 -0
- package/dist/tools/admin-get-subscription-status.js.map +1 -0
- package/dist/tools/admin-regenerate-token.d.ts +16 -0
- package/dist/tools/admin-regenerate-token.d.ts.map +1 -0
- package/dist/tools/admin-regenerate-token.js +35 -0
- package/dist/tools/admin-regenerate-token.js.map +1 -0
- package/dist/tools/admin-reset-limits.d.ts +16 -0
- package/dist/tools/admin-reset-limits.d.ts.map +1 -0
- package/dist/tools/admin-reset-limits.js +35 -0
- package/dist/tools/admin-reset-limits.js.map +1 -0
- package/dist/tools/admin-set-limits.d.ts +26 -0
- package/dist/tools/admin-set-limits.d.ts.map +1 -0
- package/dist/tools/admin-set-limits.js +68 -0
- package/dist/tools/admin-set-limits.js.map +1 -0
- package/dist/tools/admin-set-seats.d.ts +24 -0
- package/dist/tools/admin-set-seats.d.ts.map +1 -0
- package/dist/tools/admin-set-seats.js +47 -0
- package/dist/tools/admin-set-seats.js.map +1 -0
- package/dist/tools/comment-on-post.d.ts.map +1 -1
- package/dist/tools/comment-on-post.js +1 -1
- package/dist/tools/comment-on-post.js.map +1 -1
- package/dist/tools/create-post.js +1 -1
- package/dist/tools/create-post.js.map +1 -1
- package/dist/tools/execute-custom-workflow.d.ts.map +1 -1
- package/dist/tools/execute-custom-workflow.js +1 -1
- package/dist/tools/execute-custom-workflow.js.map +1 -1
- package/dist/tools/get-conversation.d.ts +3 -1
- package/dist/tools/get-conversation.d.ts.map +1 -1
- package/dist/tools/get-conversation.js +20 -3
- package/dist/tools/get-conversation.js.map +1 -1
- package/dist/tools/get-workflow-result.d.ts +3 -1
- package/dist/tools/get-workflow-result.d.ts.map +1 -1
- package/dist/tools/get-workflow-result.js +7 -4
- package/dist/tools/get-workflow-result.js.map +1 -1
- package/dist/tools/nv-get-conversation.d.ts +3 -1
- package/dist/tools/nv-get-conversation.d.ts.map +1 -1
- package/dist/tools/nv-get-conversation.js +20 -3
- package/dist/tools/nv-get-conversation.js.map +1 -1
- package/dist/tools/nv-send-message.js +1 -1
- package/dist/tools/nv-send-message.js.map +1 -1
- package/dist/tools/react-to-post.js +1 -1
- package/dist/tools/react-to-post.js.map +1 -1
- package/dist/tools/remove-connection.js +1 -1
- package/dist/tools/remove-connection.js.map +1 -1
- package/dist/tools/send-connection-request.js +1 -1
- package/dist/tools/send-connection-request.js.map +1 -1
- package/dist/tools/send-message.d.ts.map +1 -1
- package/dist/tools/send-message.js +1 -1
- package/dist/tools/send-message.js.map +1 -1
- package/dist/tools/withdraw-connection-request.js +1 -1
- package/dist/tools/withdraw-connection-request.js.map +1 -1
- package/dist/utils/admin-tool.d.ts +14 -0
- package/dist/utils/admin-tool.d.ts.map +1 -0
- package/dist/utils/admin-tool.js +10 -0
- package/dist/utils/admin-tool.js.map +1 -0
- package/dist/utils/define-request-timeout.d.ts.map +1 -1
- package/dist/utils/define-request-timeout.js +16 -4
- package/dist/utils/define-request-timeout.js.map +1 -1
- package/dist/utils/execute-with-progress.d.ts +7 -2
- package/dist/utils/execute-with-progress.d.ts.map +1 -1
- package/dist/utils/execute-with-progress.js +19 -9
- package/dist/utils/execute-with-progress.js.map +1 -1
- package/dist/utils/handle-linked-api-error.d.ts +1 -1
- package/dist/utils/handle-linked-api-error.d.ts.map +1 -1
- package/dist/utils/handle-linked-api-error.js +10 -0
- package/dist/utils/handle-linked-api-error.js.map +1 -1
- package/dist/utils/json-http-transport.d.ts.map +1 -1
- package/dist/utils/json-http-transport.js +4 -3
- package/dist/utils/json-http-transport.js.map +1 -1
- package/dist/utils/linked-api-tool.d.ts +10 -14
- package/dist/utils/linked-api-tool.d.ts.map +1 -1
- package/dist/utils/linked-api-tool.js +5 -6
- package/dist/utils/linked-api-tool.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +46 -9
- package/src/linked-api-server.ts +87 -16
- package/src/linked-api-tools.ts +81 -31
- package/src/tools/admin-connect-account.ts +34 -0
- package/src/tools/admin-disconnect-account.ts +40 -0
- package/src/tools/admin-get-accounts.ts +30 -0
- package/src/tools/admin-get-limits-usage.ts +42 -0
- package/src/tools/admin-get-seats.ts +34 -0
- package/src/tools/admin-get-subscription-status.ts +33 -0
- package/src/tools/admin-regenerate-token.ts +43 -0
- package/src/tools/admin-reset-limits.ts +39 -0
- package/src/tools/admin-set-limits.ts +75 -0
- package/src/tools/admin-set-seats.ts +52 -0
- package/src/tools/comment-on-post.ts +2 -1
- package/src/tools/create-post.ts +1 -1
- package/src/tools/execute-custom-workflow.ts +2 -1
- package/src/tools/get-conversation.ts +27 -3
- package/src/tools/get-workflow-result.ts +10 -3
- package/src/tools/nv-get-conversation.ts +27 -3
- package/src/tools/nv-send-message.ts +1 -1
- package/src/tools/react-to-post.ts +1 -1
- package/src/tools/remove-connection.ts +1 -1
- package/src/tools/send-connection-request.ts +1 -1
- package/src/tools/send-message.ts +2 -1
- package/src/tools/withdraw-connection-request.ts +1 -1
- package/src/utils/admin-tool.ts +22 -0
- package/src/utils/define-request-timeout.ts +16 -4
- package/src/utils/execute-with-progress.ts +37 -19
- package/src/utils/handle-linked-api-error.ts +12 -1
- package/src/utils/json-http-transport.ts +4 -3
- package/src/utils/linked-api-tool.ts +16 -18
|
@@ -14,10 +14,10 @@ jobs:
|
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
16
|
- name: Checkout code
|
|
17
|
-
uses: actions/checkout@v4
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
18
|
|
|
19
19
|
- name: Set up Node.js
|
|
20
|
-
uses: actions/setup-node@v4
|
|
20
|
+
uses: actions/setup-node@v4
|
|
21
21
|
with:
|
|
22
22
|
node-version: 20
|
|
23
23
|
|
|
@@ -32,10 +32,10 @@ jobs:
|
|
|
32
32
|
|
|
33
33
|
steps:
|
|
34
34
|
- name: Checkout code
|
|
35
|
-
uses: actions/checkout@v4
|
|
35
|
+
uses: actions/checkout@v4
|
|
36
36
|
|
|
37
37
|
- name: Set up Node.js
|
|
38
|
-
uses: actions/setup-node@v4
|
|
38
|
+
uses: actions/setup-node@v4
|
|
39
39
|
with:
|
|
40
40
|
node-version: 20
|
|
41
41
|
|
|
@@ -52,10 +52,10 @@ jobs:
|
|
|
52
52
|
|
|
53
53
|
steps:
|
|
54
54
|
- name: Checkout code
|
|
55
|
-
uses: actions/checkout@v4
|
|
55
|
+
uses: actions/checkout@v4
|
|
56
56
|
|
|
57
57
|
- name: Set up Node.js
|
|
58
|
-
uses: actions/setup-node@v4
|
|
58
|
+
uses: actions/setup-node@v4
|
|
59
59
|
with:
|
|
60
60
|
node-version: 20
|
|
61
61
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -92,7 +92,7 @@ jobs:
|
|
|
92
92
|
|
|
93
93
|
steps:
|
|
94
94
|
- name: Checkout code
|
|
95
|
-
uses: actions/checkout@v4
|
|
95
|
+
uses: actions/checkout@v4
|
|
96
96
|
|
|
97
97
|
- name: Log in to GitHub Container Registry
|
|
98
98
|
uses: docker/login-action@v3
|
|
@@ -102,14 +102,14 @@ jobs:
|
|
|
102
102
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
103
103
|
|
|
104
104
|
- name: Set up Docker Buildx
|
|
105
|
-
uses: docker/setup-buildx-action@
|
|
105
|
+
uses: docker/setup-buildx-action@v3
|
|
106
106
|
|
|
107
107
|
- name: Set lowercase repository owner
|
|
108
108
|
id: lowercase
|
|
109
109
|
run: echo "repository_owner_lowercase=$(echo '${{ github.repository_owner }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
|
|
110
110
|
|
|
111
111
|
- name: Build and push
|
|
112
|
-
uses: docker/build-push-action@
|
|
112
|
+
uses: docker/build-push-action@v6
|
|
113
113
|
with:
|
|
114
114
|
context: .
|
|
115
115
|
push: true
|
|
@@ -10,10 +10,10 @@ jobs:
|
|
|
10
10
|
|
|
11
11
|
steps:
|
|
12
12
|
- name: Checkout code
|
|
13
|
-
uses: actions/checkout@v4
|
|
13
|
+
uses: actions/checkout@v4
|
|
14
14
|
|
|
15
15
|
- name: Set up Node.js
|
|
16
|
-
uses: actions/setup-node@v4
|
|
16
|
+
uses: actions/setup-node@v4
|
|
17
17
|
with:
|
|
18
18
|
node-version: 20
|
|
19
19
|
|
|
@@ -28,10 +28,10 @@ jobs:
|
|
|
28
28
|
|
|
29
29
|
steps:
|
|
30
30
|
- name: Checkout code
|
|
31
|
-
uses: actions/checkout@v4
|
|
31
|
+
uses: actions/checkout@v4
|
|
32
32
|
|
|
33
33
|
- name: Set up Node.js
|
|
34
|
-
uses: actions/setup-node@v4
|
|
34
|
+
uses: actions/setup-node@v4
|
|
35
35
|
with:
|
|
36
36
|
node-version: 20
|
|
37
37
|
|
package/README.md
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
Linked API MCP server connects your LinkedIn account to AI assistants like Claude, Cursor, and VS Code. Ask them to search for leads, send messages, analyze profiles, and much more – they'll handle it through our cloud browser, safely and automatically.
|
|
2
2
|
|
|
3
3
|
## Use cases
|
|
4
|
+
|
|
4
5
|
- **Sales automation assistant**. Ask your AI to find leads, check their profiles, and draft personalized outreach. It can search for "software engineers at companies with 50-200 employees in San Francisco", analyze their backgrounds, and suggest connection messages that actually make sense.
|
|
5
6
|
- **Recruitment assistant**. Let your assistant search for candidates with specific skills, review their experience, and send initial outreach. It handles the time-consuming parts while you focus on actually talking to people.
|
|
6
7
|
- **Conversation assistant**. Your AI can read your existing LinkedIn conversations and help you respond naturally. It understands the context of your chats, suggests relevant replies, and can even send follow-up messages.
|
|
7
8
|
- **Market research assistant**. Need competitor analysis? Your assistant can gather data about companies, their employees, and recent activities. Get insights about industry trends without spending hours on LinkedIn.
|
|
8
9
|
|
|
9
10
|
## Get started
|
|
11
|
+
|
|
10
12
|
To start using Linked API MCP, spend 2 minutes reading these essential guides:
|
|
11
13
|
|
|
12
14
|
1. [Installation](https://linkedapi.io/mcp/installation/) – set up MCP in Claude, Cursor, VS Code, or Windsurf.
|
|
13
15
|
2. [Available tools](https://linkedapi.io/mcp/available-tools/) – explore all the LinkedIn tools your assistant can call.
|
|
14
16
|
3. [Usage examples](https://linkedapi.io/mcp/usage-examples/) – see real-world examples to get you started quickly.
|
|
15
17
|
|
|
18
|
+
## Long-running actions
|
|
19
|
+
|
|
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
|
+
|
|
22
|
+
If a tool returns `workflowId` and `operationName`, 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.
|
|
23
|
+
|
|
16
24
|
## License
|
|
25
|
+
|
|
17
26
|
This project is licensed under the MIT – see the [LICENSE](https://github.com/Linked-API/linkedapi-mcp/blob/main/LICENSE) file for details.
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,12 @@ const json_http_transport_1 = require("./utils/json-http-transport");
|
|
|
14
14
|
const logger_1 = require("./utils/logger");
|
|
15
15
|
function deriveClientFromUserAgent(userAgent) {
|
|
16
16
|
const ua = userAgent.toLowerCase();
|
|
17
|
+
if (ua.includes('codex'))
|
|
18
|
+
return 'codex';
|
|
19
|
+
if (ua.includes('claude-code') || ua.includes('claude code'))
|
|
20
|
+
return 'claude-code';
|
|
21
|
+
if (ua.includes('claude') || ua.includes('anthropic'))
|
|
22
|
+
return 'claude';
|
|
17
23
|
if (ua.includes('cursor'))
|
|
18
24
|
return 'cursor';
|
|
19
25
|
if (ua.includes('windsurf'))
|
|
@@ -33,6 +39,13 @@ function deriveClientFromUserAgent(userAgent) {
|
|
|
33
39
|
return 'browser';
|
|
34
40
|
return userAgent;
|
|
35
41
|
}
|
|
42
|
+
function normalizeHeaderValue(value) {
|
|
43
|
+
if (Array.isArray(value)) {
|
|
44
|
+
return value.find((item) => item.trim().length > 0)?.trim();
|
|
45
|
+
}
|
|
46
|
+
const normalizedValue = value?.trim();
|
|
47
|
+
return normalizedValue && normalizedValue.length > 0 ? normalizedValue : undefined;
|
|
48
|
+
}
|
|
36
49
|
function getArgValue(flag) {
|
|
37
50
|
const index = process.argv.indexOf(flag);
|
|
38
51
|
if (index === -1)
|
|
@@ -57,8 +70,7 @@ async function main() {
|
|
|
57
70
|
},
|
|
58
71
|
instructions: prompts_1.systemPrompt,
|
|
59
72
|
});
|
|
60
|
-
const
|
|
61
|
-
const linkedApiServer = new linked_api_server_1.LinkedApiMCPServer(progressCallback);
|
|
73
|
+
const linkedApiServer = new linked_api_server_1.LinkedApiMCPServer();
|
|
62
74
|
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
63
75
|
const tools = linkedApiServer.getTools();
|
|
64
76
|
return {
|
|
@@ -103,21 +115,42 @@ async function main() {
|
|
|
103
115
|
const localLinkedApiToken = process.env.LINKED_API_TOKEN;
|
|
104
116
|
const localIdentificationToken = process.env.IDENTIFICATION_TOKEN;
|
|
105
117
|
const headers = extra?.requestInfo?.headers ?? {};
|
|
106
|
-
const linkedApiToken = (headers['linked-api-token'] ?? localLinkedApiToken ?? ''
|
|
107
|
-
const identificationToken = (headers['identification-token'] ??
|
|
108
|
-
|
|
109
|
-
'');
|
|
110
|
-
let mcpClient = (headers['client'] ?? '');
|
|
118
|
+
const linkedApiToken = normalizeHeaderValue(headers['linked-api-token']) ?? localLinkedApiToken ?? '';
|
|
119
|
+
const identificationToken = normalizeHeaderValue(headers['identification-token']) ?? localIdentificationToken ?? '';
|
|
120
|
+
let mcpClient = normalizeHeaderValue(headers['client']) ?? '';
|
|
111
121
|
if (!mcpClient) {
|
|
112
|
-
const userAgentHeader = headers['user-agent'];
|
|
113
|
-
if (
|
|
122
|
+
const userAgentHeader = normalizeHeaderValue(headers['user-agent']);
|
|
123
|
+
if (userAgentHeader) {
|
|
114
124
|
mcpClient = deriveClientFromUserAgent(userAgentHeader);
|
|
115
125
|
}
|
|
116
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
|
+
};
|
|
117
149
|
const result = await linkedApiServer.executeWithTokens(request.params, {
|
|
118
150
|
linkedApiToken,
|
|
119
151
|
identificationToken,
|
|
120
152
|
mcpClient,
|
|
153
|
+
progressCallback,
|
|
121
154
|
});
|
|
122
155
|
return result;
|
|
123
156
|
}
|
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;AAGxC,SAAS,yBAAyB,CAAC,SAAiB;IAClD,MAAM,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/C,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChF,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,IACE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACrB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACrB,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEtB,OAAO,SAAS,CAAC;IACnB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,kDAAkD;KAChE,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EAAE,sBAAY;KAC3B,CACF,CAAC;IAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { TLinkedApiConfig } from '@linkedapi/node';
|
|
2
2
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
import { CallToolResult, ExtendedCallToolRequest, LinkedApiProgressNotification } from './utils/types';
|
|
4
|
+
interface TExecuteWithTokensOptions extends TLinkedApiConfig {
|
|
5
|
+
mcpClient: string;
|
|
6
|
+
progressCallback?: (notification: LinkedApiProgressNotification) => void;
|
|
7
|
+
}
|
|
4
8
|
export declare class LinkedApiMCPServer {
|
|
5
9
|
private tools;
|
|
6
|
-
constructor(
|
|
10
|
+
constructor();
|
|
7
11
|
getTools(): Tool[];
|
|
8
|
-
executeWithTokens(request: ExtendedCallToolRequest['params'], { linkedApiToken, identificationToken, mcpClient }:
|
|
9
|
-
mcpClient: string;
|
|
10
|
-
}): Promise<CallToolResult>;
|
|
12
|
+
executeWithTokens(request: ExtendedCallToolRequest['params'], { linkedApiToken, identificationToken, mcpClient, progressCallback, }: TExecuteWithTokensOptions): Promise<CallToolResult>;
|
|
11
13
|
private calculateDuration;
|
|
12
14
|
}
|
|
15
|
+
export {};
|
|
13
16
|
//# sourceMappingURL=linked-api-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-server.d.ts","sourceRoot":"","sources":["../src/linked-api-server.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;AAM1D,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,eAAe,CAAC;AAOvB,UAAU,yBAA0B,SAAQ,gBAAgB;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,6BAA6B,KAAK,IAAI,CAAC;CAC1E;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiB;;IAMvB,QAAQ,IAAI,IAAI,EAAE;IAgBZ,iBAAiB,CAC5B,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAC1C,EACE,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,gBAAyC,GAC1C,EAAE,yBAAyB,GAC3B,OAAO,CAAC,cAAc,CAAC;IA0K1B,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -7,15 +7,29 @@ const linked_api_tools_1 = require("./linked-api-tools");
|
|
|
7
7
|
const define_request_timeout_1 = require("./utils/define-request-timeout");
|
|
8
8
|
const handle_linked_api_error_1 = require("./utils/handle-linked-api-error");
|
|
9
9
|
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. This is normal LinkedIn automation behavior, not a failed request. If the response contains workflowId and operationName, do not retry this tool; call get_workflow_result with those exact values until the final result is returned.`;
|
|
11
|
+
const NON_WORKFLOW_TOOL_NAMES = new Set(['get_workflow_result', 'get_api_usage']);
|
|
12
|
+
const NOOP_PROGRESS_CALLBACK = (_notification) => { };
|
|
10
13
|
class LinkedApiMCPServer {
|
|
11
14
|
tools;
|
|
12
|
-
constructor(
|
|
13
|
-
this.tools = new linked_api_tools_1.LinkedApiTools(
|
|
15
|
+
constructor() {
|
|
16
|
+
this.tools = new linked_api_tools_1.LinkedApiTools();
|
|
14
17
|
}
|
|
15
18
|
getTools() {
|
|
16
|
-
|
|
19
|
+
const linkedApiTools = this.tools.tools.map((tool) => {
|
|
20
|
+
const definition = tool.getTool();
|
|
21
|
+
if (NON_WORKFLOW_TOOL_NAMES.has(definition.name)) {
|
|
22
|
+
return definition;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
...definition,
|
|
26
|
+
description: `${definition.description}\n\n${BACKGROUND_WORKFLOW_DESCRIPTION}`,
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
const adminTools = this.tools.adminTools.map((tool) => tool.getTool());
|
|
30
|
+
return [...linkedApiTools, ...adminTools];
|
|
17
31
|
}
|
|
18
|
-
async executeWithTokens(request, { linkedApiToken, identificationToken, mcpClient }) {
|
|
32
|
+
async executeWithTokens(request, { linkedApiToken, identificationToken, mcpClient, progressCallback = NOOP_PROGRESS_CALLBACK, }) {
|
|
19
33
|
const workflowTimeout = (0, define_request_timeout_1.defineRequestTimeoutInSeconds)(mcpClient) * 1000;
|
|
20
34
|
logger_1.logger.info({
|
|
21
35
|
toolName: request.name,
|
|
@@ -23,14 +37,50 @@ class LinkedApiMCPServer {
|
|
|
23
37
|
mcpClient,
|
|
24
38
|
workflowTimeout,
|
|
25
39
|
}, 'Tool execution started');
|
|
26
|
-
const linkedapi = new node_1.LinkedApi((0, core_1.buildLinkedApiHttpClient)({
|
|
27
|
-
linkedApiToken: linkedApiToken,
|
|
28
|
-
identificationToken: identificationToken,
|
|
29
|
-
}, 'mcp'));
|
|
30
40
|
const { name: toolName, arguments: args, _meta } = request;
|
|
31
41
|
const progressToken = _meta?.progressToken;
|
|
32
42
|
const startTime = Date.now();
|
|
33
43
|
try {
|
|
44
|
+
const adminTool = this.tools.adminToolByName(toolName);
|
|
45
|
+
if (adminTool) {
|
|
46
|
+
const admin = new node_1.LinkedApiAdmin({
|
|
47
|
+
linkedApiToken,
|
|
48
|
+
client: 'mcp',
|
|
49
|
+
});
|
|
50
|
+
const params = adminTool.validate(args);
|
|
51
|
+
const result = await adminTool.execute({
|
|
52
|
+
admin,
|
|
53
|
+
args: params,
|
|
54
|
+
});
|
|
55
|
+
const duration = this.calculateDuration(startTime);
|
|
56
|
+
logger_1.logger.info({
|
|
57
|
+
toolName,
|
|
58
|
+
duration,
|
|
59
|
+
data: result,
|
|
60
|
+
}, 'Tool execution successful');
|
|
61
|
+
if (result === undefined) {
|
|
62
|
+
return {
|
|
63
|
+
content: [
|
|
64
|
+
{
|
|
65
|
+
type: 'text',
|
|
66
|
+
text: 'Completed',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
content: [
|
|
73
|
+
{
|
|
74
|
+
type: 'text',
|
|
75
|
+
text: JSON.stringify(result, null, 2),
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const linkedapi = new node_1.LinkedApi((0, core_1.buildLinkedApiHttpClient)({
|
|
81
|
+
linkedApiToken: linkedApiToken,
|
|
82
|
+
identificationToken: identificationToken,
|
|
83
|
+
}, 'mcp'));
|
|
34
84
|
const tool = this.tools.toolByName(toolName);
|
|
35
85
|
if (!tool) {
|
|
36
86
|
throw new Error(`Unknown tool: ${toolName}`);
|
|
@@ -41,6 +91,7 @@ class LinkedApiMCPServer {
|
|
|
41
91
|
args: params,
|
|
42
92
|
workflowTimeout,
|
|
43
93
|
progressToken,
|
|
94
|
+
progressCallback,
|
|
44
95
|
});
|
|
45
96
|
const endTime = Date.now();
|
|
46
97
|
const duration = `${((endTime - startTime) / 1000).toFixed(2)} seconds`;
|
|
@@ -51,6 +102,7 @@ class LinkedApiMCPServer {
|
|
|
51
102
|
errors,
|
|
52
103
|
}, 'Tool execution failed');
|
|
53
104
|
return {
|
|
105
|
+
isError: true,
|
|
54
106
|
content: [
|
|
55
107
|
{
|
|
56
108
|
type: 'text',
|
|
@@ -99,6 +151,8 @@ class LinkedApiMCPServer {
|
|
|
99
151
|
text: JSON.stringify(body, null, 2),
|
|
100
152
|
},
|
|
101
153
|
],
|
|
154
|
+
structuredContent: body,
|
|
155
|
+
isError: error.type !== 'workflowTimeout',
|
|
102
156
|
};
|
|
103
157
|
}
|
|
104
158
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-server.js","sourceRoot":"","sources":["../src/linked-api-server.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"linked-api-server.js","sourceRoot":"","sources":["../src/linked-api-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import LinkedApi, { TMappedResponse } from '@linkedapi/node';
|
|
2
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { AdminTool } from './utils/admin-tool.js';
|
|
2
4
|
import { LinkedApiProgressNotification } from './utils/types.js';
|
|
5
|
+
interface TRegisteredLinkedApiTool {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
getTool(): Tool;
|
|
8
|
+
validate(args: unknown): unknown;
|
|
9
|
+
execute({ linkedapi, args, workflowTimeout, progressToken, progressCallback, }: {
|
|
10
|
+
linkedapi: LinkedApi;
|
|
11
|
+
args: never;
|
|
12
|
+
workflowTimeout: number;
|
|
13
|
+
progressToken?: string | number;
|
|
14
|
+
progressCallback: (progress: LinkedApiProgressNotification) => void;
|
|
15
|
+
}): Promise<TMappedResponse<unknown>>;
|
|
16
|
+
}
|
|
3
17
|
export declare class LinkedApiTools {
|
|
4
|
-
readonly tools: ReadonlyArray<
|
|
5
|
-
|
|
6
|
-
|
|
18
|
+
readonly tools: ReadonlyArray<TRegisteredLinkedApiTool>;
|
|
19
|
+
readonly adminTools: ReadonlyArray<AdminTool<unknown, unknown>>;
|
|
20
|
+
constructor();
|
|
21
|
+
toolByName(name: string): TRegisteredLinkedApiTool | undefined;
|
|
22
|
+
adminToolByName(name: string): AdminTool<unknown, unknown> | undefined;
|
|
7
23
|
}
|
|
24
|
+
export {};
|
|
8
25
|
//# sourceMappingURL=linked-api-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-tools.d.ts","sourceRoot":"","sources":["../src/linked-api-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linked-api-tools.d.ts","sourceRoot":"","sources":["../src/linked-api-tools.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAuC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEjE,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,EACN,SAAS,EACT,IAAI,EACJ,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,EAAE;QACD,SAAS,EAAE,SAAS,CAAC;QACrB,IAAI,EAAE,KAAK,CAAC;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;KACrE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;CACvC;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"}
|
package/dist/linked-api-tools.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LinkedApiTools = void 0;
|
|
4
|
+
const admin_connect_account_js_1 = require("./tools/admin-connect-account.js");
|
|
5
|
+
const admin_disconnect_account_js_1 = require("./tools/admin-disconnect-account.js");
|
|
6
|
+
const admin_get_accounts_js_1 = require("./tools/admin-get-accounts.js");
|
|
7
|
+
const admin_get_limits_usage_js_1 = require("./tools/admin-get-limits-usage.js");
|
|
8
|
+
const admin_get_seats_js_1 = require("./tools/admin-get-seats.js");
|
|
9
|
+
const admin_get_subscription_status_js_1 = require("./tools/admin-get-subscription-status.js");
|
|
10
|
+
const admin_regenerate_token_js_1 = require("./tools/admin-regenerate-token.js");
|
|
11
|
+
const admin_reset_limits_js_1 = require("./tools/admin-reset-limits.js");
|
|
12
|
+
const admin_set_limits_js_1 = require("./tools/admin-set-limits.js");
|
|
13
|
+
const admin_set_seats_js_1 = require("./tools/admin-set-seats.js");
|
|
4
14
|
const check_connection_status_js_1 = require("./tools/check-connection-status.js");
|
|
5
15
|
const comment_on_post_js_1 = require("./tools/comment-on-post.js");
|
|
6
16
|
const create_post_js_1 = require("./tools/create-post.js");
|
|
@@ -30,43 +40,59 @@ const send_message_js_1 = require("./tools/send-message.js");
|
|
|
30
40
|
const withdraw_connection_request_js_1 = require("./tools/withdraw-connection-request.js");
|
|
31
41
|
class LinkedApiTools {
|
|
32
42
|
tools;
|
|
33
|
-
|
|
43
|
+
adminTools;
|
|
44
|
+
constructor() {
|
|
34
45
|
this.tools = [
|
|
35
46
|
// Standard tools
|
|
36
|
-
new send_message_js_1.SendMessageTool(
|
|
37
|
-
new get_conversation_js_1.GetConversationTool(
|
|
38
|
-
new check_connection_status_js_1.CheckConnectionStatusTool(
|
|
39
|
-
new retrieve_connections_js_1.RetrieveConnectionsTool(
|
|
40
|
-
new send_connection_request_js_1.SendConnectionRequestTool(
|
|
41
|
-
new withdraw_connection_request_js_1.WithdrawConnectionRequestTool(
|
|
42
|
-
new retrieve_pending_requests_js_1.RetrievePendingRequestsTool(
|
|
43
|
-
new remove_connection_js_1.RemoveConnectionTool(
|
|
44
|
-
new search_companies_js_1.SearchCompaniesTool(
|
|
45
|
-
new search_people_js_1.SearchPeopleTool(
|
|
46
|
-
new fetch_company_js_1.FetchCompanyTool(
|
|
47
|
-
new fetch_person_js_1.FetchPersonTool(
|
|
48
|
-
new fetch_post_js_1.FetchPostTool(
|
|
49
|
-
new react_to_post_js_1.ReactToPostTool(
|
|
50
|
-
new comment_on_post_js_1.CommentOnPostTool(
|
|
51
|
-
new create_post_js_1.CreatePostTool(
|
|
52
|
-
new retrieve_ssi_js_1.RetrieveSSITool(
|
|
53
|
-
new retrieve_performance_js_1.RetrievePerformanceTool(
|
|
47
|
+
new send_message_js_1.SendMessageTool(),
|
|
48
|
+
new get_conversation_js_1.GetConversationTool(),
|
|
49
|
+
new check_connection_status_js_1.CheckConnectionStatusTool(),
|
|
50
|
+
new retrieve_connections_js_1.RetrieveConnectionsTool(),
|
|
51
|
+
new send_connection_request_js_1.SendConnectionRequestTool(),
|
|
52
|
+
new withdraw_connection_request_js_1.WithdrawConnectionRequestTool(),
|
|
53
|
+
new retrieve_pending_requests_js_1.RetrievePendingRequestsTool(),
|
|
54
|
+
new remove_connection_js_1.RemoveConnectionTool(),
|
|
55
|
+
new search_companies_js_1.SearchCompaniesTool(),
|
|
56
|
+
new search_people_js_1.SearchPeopleTool(),
|
|
57
|
+
new fetch_company_js_1.FetchCompanyTool(),
|
|
58
|
+
new fetch_person_js_1.FetchPersonTool(),
|
|
59
|
+
new fetch_post_js_1.FetchPostTool(),
|
|
60
|
+
new react_to_post_js_1.ReactToPostTool(),
|
|
61
|
+
new comment_on_post_js_1.CommentOnPostTool(),
|
|
62
|
+
new create_post_js_1.CreatePostTool(),
|
|
63
|
+
new retrieve_ssi_js_1.RetrieveSSITool(),
|
|
64
|
+
new retrieve_performance_js_1.RetrievePerformanceTool(),
|
|
54
65
|
// Sales Navigator tools
|
|
55
|
-
new nv_send_message_js_1.NvSendMessageTool(
|
|
56
|
-
new nv_get_conversation_js_1.NvGetConversationTool(
|
|
57
|
-
new nv_search_companies_js_1.NvSearchCompaniesTool(
|
|
58
|
-
new nv_search_people_js_1.NvSearchPeopleTool(
|
|
59
|
-
new nv_fetch_company_js_1.NvFetchCompanyTool(
|
|
60
|
-
new nv_fetch_person_js_1.NvFetchPersonTool(
|
|
66
|
+
new nv_send_message_js_1.NvSendMessageTool(),
|
|
67
|
+
new nv_get_conversation_js_1.NvGetConversationTool(),
|
|
68
|
+
new nv_search_companies_js_1.NvSearchCompaniesTool(),
|
|
69
|
+
new nv_search_people_js_1.NvSearchPeopleTool(),
|
|
70
|
+
new nv_fetch_company_js_1.NvFetchCompanyTool(),
|
|
71
|
+
new nv_fetch_person_js_1.NvFetchPersonTool(),
|
|
61
72
|
// Other tools
|
|
62
|
-
new execute_custom_workflow_js_1.ExecuteCustomWorkflowTool(
|
|
63
|
-
new get_workflow_result_js_1.GetWorkflowResultTool(
|
|
64
|
-
new get_api_usage_stats_js_1.GetApiUsageTool(
|
|
73
|
+
new execute_custom_workflow_js_1.ExecuteCustomWorkflowTool(),
|
|
74
|
+
new get_workflow_result_js_1.GetWorkflowResultTool(),
|
|
75
|
+
new get_api_usage_stats_js_1.GetApiUsageTool(),
|
|
76
|
+
];
|
|
77
|
+
this.adminTools = [
|
|
78
|
+
new admin_get_subscription_status_js_1.AdminGetSubscriptionStatusTool(),
|
|
79
|
+
new admin_get_seats_js_1.AdminGetSeatsTool(),
|
|
80
|
+
new admin_set_seats_js_1.AdminSetSeatsTool(),
|
|
81
|
+
new admin_get_accounts_js_1.AdminGetAccountsTool(),
|
|
82
|
+
new admin_connect_account_js_1.AdminConnectAccountTool(),
|
|
83
|
+
new admin_disconnect_account_js_1.AdminDisconnectAccountTool(),
|
|
84
|
+
new admin_regenerate_token_js_1.AdminRegenerateTokenTool(),
|
|
85
|
+
new admin_get_limits_usage_js_1.AdminGetLimitsUsageTool(),
|
|
86
|
+
new admin_set_limits_js_1.AdminSetLimitsTool(),
|
|
87
|
+
new admin_reset_limits_js_1.AdminResetLimitsTool(),
|
|
65
88
|
];
|
|
66
89
|
}
|
|
67
90
|
toolByName(name) {
|
|
68
91
|
return this.tools.find((tool) => tool.name === name);
|
|
69
92
|
}
|
|
93
|
+
adminToolByName(name) {
|
|
94
|
+
return this.adminTools.find((tool) => tool.name === name);
|
|
95
|
+
}
|
|
70
96
|
}
|
|
71
97
|
exports.LinkedApiTools = LinkedApiTools;
|
|
72
98
|
//# sourceMappingURL=linked-api-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linked-api-tools.js","sourceRoot":"","sources":["../src/linked-api-tools.ts"],"names":[],"mappings":";;;
|
|
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;AAuBvF,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LinkedApiAdmin, TCreateConnectionSessionResult } from '@linkedapi/node';
|
|
2
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import z from 'zod';
|
|
4
|
+
import { AdminTool } from '../utils/admin-tool.js';
|
|
5
|
+
export declare class AdminConnectAccountTool extends AdminTool<Record<string, never>, TCreateConnectionSessionResult> {
|
|
6
|
+
readonly name = "admin_connect_account";
|
|
7
|
+
protected readonly schema: z.ZodObject<{}, z.core.$strip>;
|
|
8
|
+
execute({ admin, }: {
|
|
9
|
+
admin: LinkedApiAdmin;
|
|
10
|
+
args: Record<string, never>;
|
|
11
|
+
}): Promise<TCreateConnectionSessionResult>;
|
|
12
|
+
getTool(): Tool;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=admin-connect-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-connect-account.d.ts","sourceRoot":"","sources":["../../src/tools/admin-connect-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,qBAAa,uBAAwB,SAAQ,SAAS,CACpD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,8BAA8B,CAC/B;IACC,SAAgB,IAAI,2BAA2B;IAC/C,SAAS,CAAC,QAAQ,CAAC,MAAM,iCAAgB;IAEnB,OAAO,CAAC,EAC5B,KAAK,GACN,EAAE;QACD,KAAK,EAAE,cAAc,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC7B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAI3B,OAAO,IAAI,IAAI;CAWhC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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.AdminConnectAccountTool = void 0;
|
|
7
|
+
const zod_1 = __importDefault(require("zod"));
|
|
8
|
+
const admin_tool_js_1 = require("../utils/admin-tool.js");
|
|
9
|
+
class AdminConnectAccountTool extends admin_tool_js_1.AdminTool {
|
|
10
|
+
name = 'admin_connect_account';
|
|
11
|
+
schema = zod_1.default.object({});
|
|
12
|
+
async execute({ admin, }) {
|
|
13
|
+
return await admin.accounts.createConnectionSession();
|
|
14
|
+
}
|
|
15
|
+
getTool() {
|
|
16
|
+
return {
|
|
17
|
+
name: this.name,
|
|
18
|
+
description: 'Create a connection session to connect a new LinkedIn account. Returns a sessionId and connectionLink that must be opened in a browser.',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: 'object',
|
|
21
|
+
properties: {},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.AdminConnectAccountTool = AdminConnectAccountTool;
|
|
27
|
+
//# sourceMappingURL=admin-connect-account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-connect-account.js","sourceRoot":"","sources":["../../src/tools/admin-connect-account.ts"],"names":[],"mappings":";;;;;;AAEA,8CAAoB;AAEpB,0DAAmD;AAEnD,MAAa,uBAAwB,SAAQ,yBAG5C;IACiB,IAAI,GAAG,uBAAuB,CAAC;IAC5B,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEzB,KAAK,CAAC,OAAO,CAAC,EAC5B,KAAK,GAIN;QACC,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC;IACxD,CAAC;IAEe,OAAO;QACrB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EACT,yIAAyI;YAC3I,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACf;SACF,CAAC;IACJ,CAAC;CACF;AA3BD,0DA2BC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LinkedApiAdmin, TDisconnectParams } from '@linkedapi/node';
|
|
2
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import z from 'zod';
|
|
4
|
+
import { AdminTool } from '../utils/admin-tool.js';
|
|
5
|
+
export declare class AdminDisconnectAccountTool extends AdminTool<TDisconnectParams, void> {
|
|
6
|
+
readonly name = "admin_disconnect_account";
|
|
7
|
+
protected readonly schema: z.ZodObject<{
|
|
8
|
+
accountId: z.ZodString;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
execute({ admin, args, }: {
|
|
11
|
+
admin: LinkedApiAdmin;
|
|
12
|
+
args: TDisconnectParams;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
getTool(): Tool;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=admin-disconnect-account.d.ts.map
|