@linkedapi/mcp 2.0.0 → 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/.github/workflows/merge-main.yaml +13 -13
- package/.github/workflows/pr-main.yaml +6 -6
- package/dist/linked-api-tools.d.ts.map +1 -1
- package/dist/linked-api-tools.js +4 -0
- package/dist/linked-api-tools.js.map +1 -1
- package/dist/tools/fetch-job.d.ts +13 -0
- package/dist/tools/fetch-job.d.ts.map +1 -0
- package/dist/tools/fetch-job.js +31 -0
- package/dist/tools/fetch-job.js.map +1 -0
- package/dist/tools/get-workflow-result.d.ts +2 -0
- package/dist/tools/get-workflow-result.d.ts.map +1 -1
- package/dist/tools/search-jobs.d.ts +54 -0
- package/dist/tools/search-jobs.d.ts.map +1 -0
- package/dist/tools/search-jobs.js +165 -0
- package/dist/tools/search-jobs.js.map +1 -0
- package/package.json +2 -5
- package/src/linked-api-tools.ts +4 -0
- package/src/tools/fetch-job.ts +32 -0
- package/src/tools/search-jobs.ts +172 -0
|
@@ -14,12 +14,12 @@ jobs:
|
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
16
|
- name: Checkout code
|
|
17
|
-
uses: actions/checkout@
|
|
17
|
+
uses: actions/checkout@v6
|
|
18
18
|
|
|
19
19
|
- name: Set up Node.js
|
|
20
|
-
uses: actions/setup-node@
|
|
20
|
+
uses: actions/setup-node@v6
|
|
21
21
|
with:
|
|
22
|
-
node-version:
|
|
22
|
+
node-version: 22
|
|
23
23
|
|
|
24
24
|
- name: Install dependencies
|
|
25
25
|
run: npm ci
|
|
@@ -32,12 +32,12 @@ jobs:
|
|
|
32
32
|
|
|
33
33
|
steps:
|
|
34
34
|
- name: Checkout code
|
|
35
|
-
uses: actions/checkout@
|
|
35
|
+
uses: actions/checkout@v6
|
|
36
36
|
|
|
37
37
|
- name: Set up Node.js
|
|
38
|
-
uses: actions/setup-node@
|
|
38
|
+
uses: actions/setup-node@v6
|
|
39
39
|
with:
|
|
40
|
-
node-version:
|
|
40
|
+
node-version: 22
|
|
41
41
|
|
|
42
42
|
- name: Install dependencies
|
|
43
43
|
run: npm ci
|
|
@@ -52,12 +52,12 @@ jobs:
|
|
|
52
52
|
|
|
53
53
|
steps:
|
|
54
54
|
- name: Checkout code
|
|
55
|
-
uses: actions/checkout@
|
|
55
|
+
uses: actions/checkout@v6
|
|
56
56
|
|
|
57
57
|
- name: Set up Node.js
|
|
58
|
-
uses: actions/setup-node@
|
|
58
|
+
uses: actions/setup-node@v6
|
|
59
59
|
with:
|
|
60
|
-
node-version:
|
|
60
|
+
node-version: 22
|
|
61
61
|
registry-url: 'https://registry.npmjs.org'
|
|
62
62
|
|
|
63
63
|
- name: Install dependencies
|
|
@@ -92,24 +92,24 @@ jobs:
|
|
|
92
92
|
|
|
93
93
|
steps:
|
|
94
94
|
- name: Checkout code
|
|
95
|
-
uses: actions/checkout@
|
|
95
|
+
uses: actions/checkout@v6
|
|
96
96
|
|
|
97
97
|
- name: Log in to GitHub Container Registry
|
|
98
|
-
uses: docker/login-action@
|
|
98
|
+
uses: docker/login-action@v4
|
|
99
99
|
with:
|
|
100
100
|
registry: ghcr.io
|
|
101
101
|
username: ${{ github.actor }}
|
|
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@v4
|
|
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@v7
|
|
113
113
|
with:
|
|
114
114
|
context: .
|
|
115
115
|
push: true
|
|
@@ -10,12 +10,12 @@ jobs:
|
|
|
10
10
|
|
|
11
11
|
steps:
|
|
12
12
|
- name: Checkout code
|
|
13
|
-
uses: actions/checkout@
|
|
13
|
+
uses: actions/checkout@v6
|
|
14
14
|
|
|
15
15
|
- name: Set up Node.js
|
|
16
|
-
uses: actions/setup-node@
|
|
16
|
+
uses: actions/setup-node@v6
|
|
17
17
|
with:
|
|
18
|
-
node-version:
|
|
18
|
+
node-version: 22
|
|
19
19
|
|
|
20
20
|
- name: Install dependencies
|
|
21
21
|
run: npm ci
|
|
@@ -28,12 +28,12 @@ jobs:
|
|
|
28
28
|
|
|
29
29
|
steps:
|
|
30
30
|
- name: Checkout code
|
|
31
|
-
uses: actions/checkout@
|
|
31
|
+
uses: actions/checkout@v6
|
|
32
32
|
|
|
33
33
|
- name: Set up Node.js
|
|
34
|
-
uses: actions/setup-node@
|
|
34
|
+
uses: actions/setup-node@v6
|
|
35
35
|
with:
|
|
36
|
-
node-version:
|
|
36
|
+
node-version: 22
|
|
37
37
|
|
|
38
38
|
- name: Install dependencies
|
|
39
39
|
run: npm ci
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAyC1D,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;;IAoDhE,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
|
@@ -16,6 +16,7 @@ const comment_on_post_js_1 = require("./tools/comment-on-post.js");
|
|
|
16
16
|
const create_post_js_1 = require("./tools/create-post.js");
|
|
17
17
|
const execute_custom_workflow_js_1 = require("./tools/execute-custom-workflow.js");
|
|
18
18
|
const fetch_company_js_1 = require("./tools/fetch-company.js");
|
|
19
|
+
const fetch_job_js_1 = require("./tools/fetch-job.js");
|
|
19
20
|
const fetch_person_js_1 = require("./tools/fetch-person.js");
|
|
20
21
|
const fetch_post_js_1 = require("./tools/fetch-post.js");
|
|
21
22
|
const get_api_usage_stats_js_1 = require("./tools/get-api-usage-stats.js");
|
|
@@ -34,6 +35,7 @@ const retrieve_pending_requests_js_1 = require("./tools/retrieve-pending-request
|
|
|
34
35
|
const retrieve_performance_js_1 = require("./tools/retrieve-performance.js");
|
|
35
36
|
const retrieve_ssi_js_1 = require("./tools/retrieve-ssi.js");
|
|
36
37
|
const search_companies_js_1 = require("./tools/search-companies.js");
|
|
38
|
+
const search_jobs_js_1 = require("./tools/search-jobs.js");
|
|
37
39
|
const search_people_js_1 = require("./tools/search-people.js");
|
|
38
40
|
const send_connection_request_js_1 = require("./tools/send-connection-request.js");
|
|
39
41
|
const send_message_js_1 = require("./tools/send-message.js");
|
|
@@ -54,9 +56,11 @@ class LinkedApiTools {
|
|
|
54
56
|
new remove_connection_js_1.RemoveConnectionTool(),
|
|
55
57
|
new search_companies_js_1.SearchCompaniesTool(),
|
|
56
58
|
new search_people_js_1.SearchPeopleTool(),
|
|
59
|
+
new search_jobs_js_1.SearchJobsTool(),
|
|
57
60
|
new fetch_company_js_1.FetchCompanyTool(),
|
|
58
61
|
new fetch_person_js_1.FetchPersonTool(),
|
|
59
62
|
new fetch_post_js_1.FetchPostTool(),
|
|
63
|
+
new fetch_job_js_1.FetchJobTool(),
|
|
60
64
|
new react_to_post_js_1.ReactToPostTool(),
|
|
61
65
|
new comment_on_post_js_1.CommentOnPostTool(),
|
|
62
66
|
new create_post_js_1.CreatePostTool(),
|
|
@@ -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;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;
|
|
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,uDAAoD;AACpD,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,2DAAwD;AACxD,+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,+BAAc,EAAE;YACpB,IAAI,mCAAgB,EAAE;YACtB,IAAI,iCAAe,EAAE;YACrB,IAAI,6BAAa,EAAE;YACnB,IAAI,2BAAY,EAAE;YAClB,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;AA7DD,wCA6DC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TBaseFetchJobParams } from '@linkedapi/node';
|
|
2
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { OperationTool } from '../utils/linked-api-tool.js';
|
|
5
|
+
export declare class FetchJobTool extends OperationTool<TBaseFetchJobParams, unknown> {
|
|
6
|
+
readonly name = "fetch_job";
|
|
7
|
+
readonly operationName: "fetchJob";
|
|
8
|
+
protected readonly schema: z.ZodObject<{
|
|
9
|
+
jobUrl: z.ZodString;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
getTool(): Tool;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=fetch-job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-job.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,YAAa,SAAQ,aAAa,CAAC,mBAAmB,EAAE,OAAO,CAAC;IAC3E,SAAyB,IAAI,eAAe;IAC5C,SAAyB,aAAa,aAA2B;IACjE,mBAA4B,MAAM;;sBAE/B;IAEa,OAAO,IAAI,IAAI;CAkBhC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FetchJobTool = void 0;
|
|
4
|
+
const node_1 = require("@linkedapi/node");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const linked_api_tool_js_1 = require("../utils/linked-api-tool.js");
|
|
7
|
+
class FetchJobTool extends linked_api_tool_js_1.OperationTool {
|
|
8
|
+
name = 'fetch_job';
|
|
9
|
+
operationName = node_1.OPERATION_NAME.fetchJob;
|
|
10
|
+
schema = zod_1.z.object({
|
|
11
|
+
jobUrl: zod_1.z.string(),
|
|
12
|
+
});
|
|
13
|
+
getTool() {
|
|
14
|
+
return {
|
|
15
|
+
name: this.name,
|
|
16
|
+
description: 'Open a LinkedIn job and retrieve its details such as company, location, salary, and description (st.openJob action).',
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
jobUrl: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: "LinkedIn URL of the job. (e.g., 'https://www.linkedin.com/jobs/view/4416248954/')",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ['jobUrl'],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.FetchJobTool = FetchJobTool;
|
|
31
|
+
//# sourceMappingURL=fetch-job.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-job.js","sourceRoot":"","sources":["../../src/tools/fetch-job.ts"],"names":[],"mappings":";;;AAAA,0CAAsE;AAEtE,6BAAwB;AAExB,oEAA4D;AAE5D,MAAa,YAAa,SAAQ,kCAA2C;IAClD,IAAI,GAAG,WAAW,CAAC;IACnB,aAAa,GAAG,qBAAc,CAAC,QAAQ,CAAC;IACrC,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;QAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;KACnB,CAAC,CAAC;IAEa,OAAO;QACrB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EACT,sHAAsH;YACxH,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,mFAAmF;qBACtF;iBACF;gBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;aACrB;SACF,CAAC;IACJ,CAAC;CACF;AAzBD,oCAyBC"}
|
|
@@ -24,9 +24,11 @@ export declare class GetWorkflowResultTool extends LinkedApiTool<IGetWorkflowRes
|
|
|
24
24
|
removeConnection: "removeConnection";
|
|
25
25
|
searchCompanies: "searchCompanies";
|
|
26
26
|
searchPeople: "searchPeople";
|
|
27
|
+
searchJobs: "searchJobs";
|
|
27
28
|
fetchPerson: "fetchPerson";
|
|
28
29
|
fetchCompany: "fetchCompany";
|
|
29
30
|
fetchPost: "fetchPost";
|
|
31
|
+
fetchJob: "fetchJob";
|
|
30
32
|
reactToPost: "reactToPost";
|
|
31
33
|
commentOnPost: "commentOnPost";
|
|
32
34
|
createPost: "createPost";
|
|
@@ -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,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
|
|
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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { TSearchJobsParams } from '@linkedapi/node';
|
|
2
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { OperationTool } from '../utils/linked-api-tool.js';
|
|
5
|
+
export declare class SearchJobsTool extends OperationTool<TSearchJobsParams, unknown> {
|
|
6
|
+
readonly name = "search_jobs";
|
|
7
|
+
readonly operationName: "searchJobs";
|
|
8
|
+
protected readonly schema: z.ZodObject<{
|
|
9
|
+
term: z.ZodOptional<z.ZodString>;
|
|
10
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
filter: z.ZodOptional<z.ZodObject<{
|
|
12
|
+
location: z.ZodOptional<z.ZodString>;
|
|
13
|
+
datePosted: z.ZodOptional<z.ZodEnum<{
|
|
14
|
+
anyTime: "anyTime";
|
|
15
|
+
past24Hours: "past24Hours";
|
|
16
|
+
pastWeek: "pastWeek";
|
|
17
|
+
pastMonth: "pastMonth";
|
|
18
|
+
}>>;
|
|
19
|
+
experienceLevels: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
20
|
+
internship: "internship";
|
|
21
|
+
entryLevel: "entryLevel";
|
|
22
|
+
associate: "associate";
|
|
23
|
+
midSeniorLevel: "midSeniorLevel";
|
|
24
|
+
director: "director";
|
|
25
|
+
executive: "executive";
|
|
26
|
+
}>>>;
|
|
27
|
+
employmentTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
28
|
+
internship: "internship";
|
|
29
|
+
fullTime: "fullTime";
|
|
30
|
+
partTime: "partTime";
|
|
31
|
+
contract: "contract";
|
|
32
|
+
temporary: "temporary";
|
|
33
|
+
volunteer: "volunteer";
|
|
34
|
+
other: "other";
|
|
35
|
+
}>>>;
|
|
36
|
+
workplaceTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
37
|
+
onSite: "onSite";
|
|
38
|
+
remote: "remote";
|
|
39
|
+
hybrid: "hybrid";
|
|
40
|
+
}>>>;
|
|
41
|
+
companies: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
42
|
+
industries: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
43
|
+
jobFunctions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
44
|
+
easyApply: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
+
hasVerifications: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
under10Applicants: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
+
inYourNetwork: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
+
fairChanceEmployer: z.ZodOptional<z.ZodBoolean>;
|
|
49
|
+
}, z.core.$strip>>;
|
|
50
|
+
customSearchUrl: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
getTool(): Tool;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=search-jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-jobs.d.ts","sourceRoot":"","sources":["../../src/tools/search-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,cAAe,SAAQ,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC3E,SAAyB,IAAI,iBAAiB;IAC9C,SAAyB,aAAa,eAA6B;IACnE,mBAA4B,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA4C/B;IAEa,OAAO,IAAI,IAAI;CAoHhC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SearchJobsTool = void 0;
|
|
4
|
+
const node_1 = require("@linkedapi/node");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const linked_api_tool_js_1 = require("../utils/linked-api-tool.js");
|
|
7
|
+
class SearchJobsTool extends linked_api_tool_js_1.OperationTool {
|
|
8
|
+
name = 'search_jobs';
|
|
9
|
+
operationName = node_1.OPERATION_NAME.searchJobs;
|
|
10
|
+
schema = zod_1.z.object({
|
|
11
|
+
term: zod_1.z.string().optional(),
|
|
12
|
+
limit: zod_1.z.number().min(1).max(1000).optional(),
|
|
13
|
+
filter: zod_1.z
|
|
14
|
+
.object({
|
|
15
|
+
location: zod_1.z.string().optional(),
|
|
16
|
+
datePosted: zod_1.z.enum(['anyTime', 'past24Hours', 'pastWeek', 'pastMonth']).optional(),
|
|
17
|
+
experienceLevels: zod_1.z
|
|
18
|
+
.array(zod_1.z.enum([
|
|
19
|
+
'internship',
|
|
20
|
+
'entryLevel',
|
|
21
|
+
'associate',
|
|
22
|
+
'midSeniorLevel',
|
|
23
|
+
'director',
|
|
24
|
+
'executive',
|
|
25
|
+
]))
|
|
26
|
+
.optional(),
|
|
27
|
+
employmentTypes: zod_1.z
|
|
28
|
+
.array(zod_1.z.enum([
|
|
29
|
+
'fullTime',
|
|
30
|
+
'partTime',
|
|
31
|
+
'contract',
|
|
32
|
+
'temporary',
|
|
33
|
+
'volunteer',
|
|
34
|
+
'internship',
|
|
35
|
+
'other',
|
|
36
|
+
]))
|
|
37
|
+
.optional(),
|
|
38
|
+
workplaceTypes: zod_1.z.array(zod_1.z.enum(['onSite', 'remote', 'hybrid'])).optional(),
|
|
39
|
+
companies: zod_1.z.array(zod_1.z.string()).optional(),
|
|
40
|
+
industries: zod_1.z.array(zod_1.z.string()).optional(),
|
|
41
|
+
jobFunctions: zod_1.z.array(zod_1.z.string()).optional(),
|
|
42
|
+
easyApply: zod_1.z.boolean().optional(),
|
|
43
|
+
hasVerifications: zod_1.z.boolean().optional(),
|
|
44
|
+
under10Applicants: zod_1.z.boolean().optional(),
|
|
45
|
+
inYourNetwork: zod_1.z.boolean().optional(),
|
|
46
|
+
fairChanceEmployer: zod_1.z.boolean().optional(),
|
|
47
|
+
})
|
|
48
|
+
.optional(),
|
|
49
|
+
customSearchUrl: zod_1.z.string().optional(),
|
|
50
|
+
});
|
|
51
|
+
getTool() {
|
|
52
|
+
return {
|
|
53
|
+
name: this.name,
|
|
54
|
+
description: 'Allows you to search jobs applying various filtering criteria (st.searchJobs action).',
|
|
55
|
+
inputSchema: {
|
|
56
|
+
type: 'object',
|
|
57
|
+
properties: {
|
|
58
|
+
term: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'Optional. Keyword or phrase to search.',
|
|
61
|
+
},
|
|
62
|
+
limit: {
|
|
63
|
+
type: 'number',
|
|
64
|
+
description: 'Optional. Number of search results to return. Defaults to 10, with a maximum value of 1000.',
|
|
65
|
+
},
|
|
66
|
+
filter: {
|
|
67
|
+
type: 'object',
|
|
68
|
+
description: 'Optional. Object that specifies filtering criteria for jobs. When multiple filter fields are specified, they are combined using AND logic.',
|
|
69
|
+
properties: {
|
|
70
|
+
location: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: 'Optional. Free-form location string.',
|
|
73
|
+
},
|
|
74
|
+
datePosted: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
enum: ['anyTime', 'past24Hours', 'pastWeek', 'pastMonth'],
|
|
77
|
+
description: 'Optional. How recently the job was posted.',
|
|
78
|
+
},
|
|
79
|
+
experienceLevels: {
|
|
80
|
+
type: 'array',
|
|
81
|
+
description: 'Optional. Array of experience levels.',
|
|
82
|
+
items: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
enum: [
|
|
85
|
+
'internship',
|
|
86
|
+
'entryLevel',
|
|
87
|
+
'associate',
|
|
88
|
+
'midSeniorLevel',
|
|
89
|
+
'director',
|
|
90
|
+
'executive',
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
employmentTypes: {
|
|
95
|
+
type: 'array',
|
|
96
|
+
description: 'Optional. Array of employment types.',
|
|
97
|
+
items: {
|
|
98
|
+
type: 'string',
|
|
99
|
+
enum: [
|
|
100
|
+
'fullTime',
|
|
101
|
+
'partTime',
|
|
102
|
+
'contract',
|
|
103
|
+
'temporary',
|
|
104
|
+
'volunteer',
|
|
105
|
+
'internship',
|
|
106
|
+
'other',
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
workplaceTypes: {
|
|
111
|
+
type: 'array',
|
|
112
|
+
description: 'Optional. Array of workplace types.',
|
|
113
|
+
items: {
|
|
114
|
+
type: 'string',
|
|
115
|
+
enum: ['onSite', 'remote', 'hybrid'],
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
companies: {
|
|
119
|
+
type: 'array',
|
|
120
|
+
description: 'Optional. Array of company names.',
|
|
121
|
+
items: { type: 'string' },
|
|
122
|
+
},
|
|
123
|
+
industries: {
|
|
124
|
+
type: 'array',
|
|
125
|
+
description: 'Optional. Array of industry names.',
|
|
126
|
+
items: { type: 'string' },
|
|
127
|
+
},
|
|
128
|
+
jobFunctions: {
|
|
129
|
+
type: 'array',
|
|
130
|
+
description: 'Optional. Array of job function names.',
|
|
131
|
+
items: { type: 'string' },
|
|
132
|
+
},
|
|
133
|
+
easyApply: {
|
|
134
|
+
type: 'boolean',
|
|
135
|
+
description: 'Optional. When true, only jobs with Easy Apply.',
|
|
136
|
+
},
|
|
137
|
+
hasVerifications: {
|
|
138
|
+
type: 'boolean',
|
|
139
|
+
description: 'Optional. When true, only jobs with verification signals.',
|
|
140
|
+
},
|
|
141
|
+
under10Applicants: {
|
|
142
|
+
type: 'boolean',
|
|
143
|
+
description: 'Optional. When true, only jobs with fewer than 10 applicants.',
|
|
144
|
+
},
|
|
145
|
+
inYourNetwork: {
|
|
146
|
+
type: 'boolean',
|
|
147
|
+
description: 'Optional. When true, only jobs from your network.',
|
|
148
|
+
},
|
|
149
|
+
fairChanceEmployer: {
|
|
150
|
+
type: 'boolean',
|
|
151
|
+
description: 'Optional. When true, only fair chance employer jobs.',
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
customSearchUrl: {
|
|
156
|
+
type: 'string',
|
|
157
|
+
description: 'Optional. URL copied from a LinkedIn jobs search page. When specified, overrides term and filter.',
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.SearchJobsTool = SearchJobsTool;
|
|
165
|
+
//# sourceMappingURL=search-jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-jobs.js","sourceRoot":"","sources":["../../src/tools/search-jobs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@linkedapi/mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "MCP server that lets AI assistants control LinkedIn accounts and retrieve real-time data.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"author": "Linked API",
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@linkedapi/node": "^2.0.
|
|
33
|
+
"@linkedapi/node": "^2.0.4",
|
|
34
34
|
"@modelcontextprotocol/sdk": "^1.17.4",
|
|
35
35
|
"zod": "^4.1.1"
|
|
36
36
|
},
|
|
@@ -39,7 +39,6 @@
|
|
|
39
39
|
"@eslint/eslintrc": "^3.3.1",
|
|
40
40
|
"@eslint/js": "^9.24.0",
|
|
41
41
|
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
|
42
|
-
"@types/jest": "^29.5.12",
|
|
43
42
|
"@types/node": "^20.12.12",
|
|
44
43
|
"@typescript-eslint/eslint-plugin": "^8.29.1",
|
|
45
44
|
"@typescript-eslint/parser": "^8.29.1",
|
|
@@ -51,9 +50,7 @@
|
|
|
51
50
|
"eslint-plugin-promise": "^7.2.1",
|
|
52
51
|
"eslint-plugin-unused-imports": "^4.1.4",
|
|
53
52
|
"husky": "^9.1.7",
|
|
54
|
-
"jest": "^29.7.0",
|
|
55
53
|
"prettier": "^3.5.3",
|
|
56
|
-
"ts-jest": "^29.1.2",
|
|
57
54
|
"ts-node": "^10.9.2",
|
|
58
55
|
"tsx": "^4.7.1",
|
|
59
56
|
"typescript": "^5.8.3",
|
package/src/linked-api-tools.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { CommentOnPostTool } from './tools/comment-on-post.js';
|
|
|
16
16
|
import { CreatePostTool } from './tools/create-post.js';
|
|
17
17
|
import { ExecuteCustomWorkflowTool } from './tools/execute-custom-workflow.js';
|
|
18
18
|
import { FetchCompanyTool } from './tools/fetch-company.js';
|
|
19
|
+
import { FetchJobTool } from './tools/fetch-job.js';
|
|
19
20
|
import { FetchPersonTool } from './tools/fetch-person.js';
|
|
20
21
|
import { FetchPostTool } from './tools/fetch-post.js';
|
|
21
22
|
import { GetApiUsageTool } from './tools/get-api-usage-stats.js';
|
|
@@ -34,6 +35,7 @@ import { RetrievePendingRequestsTool } from './tools/retrieve-pending-requests.j
|
|
|
34
35
|
import { RetrievePerformanceTool } from './tools/retrieve-performance.js';
|
|
35
36
|
import { RetrieveSSITool } from './tools/retrieve-ssi.js';
|
|
36
37
|
import { SearchCompaniesTool } from './tools/search-companies.js';
|
|
38
|
+
import { SearchJobsTool } from './tools/search-jobs.js';
|
|
37
39
|
import { SearchPeopleTool } from './tools/search-people.js';
|
|
38
40
|
import { SendConnectionRequestTool } from './tools/send-connection-request.js';
|
|
39
41
|
import { SendMessageTool } from './tools/send-message.js';
|
|
@@ -69,9 +71,11 @@ export class LinkedApiTools {
|
|
|
69
71
|
new RemoveConnectionTool(),
|
|
70
72
|
new SearchCompaniesTool(),
|
|
71
73
|
new SearchPeopleTool(),
|
|
74
|
+
new SearchJobsTool(),
|
|
72
75
|
new FetchCompanyTool(),
|
|
73
76
|
new FetchPersonTool(),
|
|
74
77
|
new FetchPostTool(),
|
|
78
|
+
new FetchJobTool(),
|
|
75
79
|
new ReactToPostTool(),
|
|
76
80
|
new CommentOnPostTool(),
|
|
77
81
|
new CreatePostTool(),
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { OPERATION_NAME, TBaseFetchJobParams } from '@linkedapi/node';
|
|
2
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
import { OperationTool } from '../utils/linked-api-tool.js';
|
|
6
|
+
|
|
7
|
+
export class FetchJobTool extends OperationTool<TBaseFetchJobParams, unknown> {
|
|
8
|
+
public override readonly name = 'fetch_job';
|
|
9
|
+
public override readonly operationName = OPERATION_NAME.fetchJob;
|
|
10
|
+
protected override readonly schema = z.object({
|
|
11
|
+
jobUrl: z.string(),
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
public override getTool(): Tool {
|
|
15
|
+
return {
|
|
16
|
+
name: this.name,
|
|
17
|
+
description:
|
|
18
|
+
'Open a LinkedIn job and retrieve its details such as company, location, salary, and description (st.openJob action).',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: 'object',
|
|
21
|
+
properties: {
|
|
22
|
+
jobUrl: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description:
|
|
25
|
+
"LinkedIn URL of the job. (e.g., 'https://www.linkedin.com/jobs/view/4416248954/')",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
required: ['jobUrl'],
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { OPERATION_NAME, TSearchJobsParams } from '@linkedapi/node';
|
|
2
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
import { OperationTool } from '../utils/linked-api-tool.js';
|
|
6
|
+
|
|
7
|
+
export class SearchJobsTool extends OperationTool<TSearchJobsParams, unknown> {
|
|
8
|
+
public override readonly name = 'search_jobs';
|
|
9
|
+
public override readonly operationName = OPERATION_NAME.searchJobs;
|
|
10
|
+
protected override readonly schema = z.object({
|
|
11
|
+
term: z.string().optional(),
|
|
12
|
+
limit: z.number().min(1).max(1000).optional(),
|
|
13
|
+
filter: z
|
|
14
|
+
.object({
|
|
15
|
+
location: z.string().optional(),
|
|
16
|
+
datePosted: z.enum(['anyTime', 'past24Hours', 'pastWeek', 'pastMonth']).optional(),
|
|
17
|
+
experienceLevels: z
|
|
18
|
+
.array(
|
|
19
|
+
z.enum([
|
|
20
|
+
'internship',
|
|
21
|
+
'entryLevel',
|
|
22
|
+
'associate',
|
|
23
|
+
'midSeniorLevel',
|
|
24
|
+
'director',
|
|
25
|
+
'executive',
|
|
26
|
+
]),
|
|
27
|
+
)
|
|
28
|
+
.optional(),
|
|
29
|
+
employmentTypes: z
|
|
30
|
+
.array(
|
|
31
|
+
z.enum([
|
|
32
|
+
'fullTime',
|
|
33
|
+
'partTime',
|
|
34
|
+
'contract',
|
|
35
|
+
'temporary',
|
|
36
|
+
'volunteer',
|
|
37
|
+
'internship',
|
|
38
|
+
'other',
|
|
39
|
+
]),
|
|
40
|
+
)
|
|
41
|
+
.optional(),
|
|
42
|
+
workplaceTypes: z.array(z.enum(['onSite', 'remote', 'hybrid'])).optional(),
|
|
43
|
+
companies: z.array(z.string()).optional(),
|
|
44
|
+
industries: z.array(z.string()).optional(),
|
|
45
|
+
jobFunctions: z.array(z.string()).optional(),
|
|
46
|
+
easyApply: z.boolean().optional(),
|
|
47
|
+
hasVerifications: z.boolean().optional(),
|
|
48
|
+
under10Applicants: z.boolean().optional(),
|
|
49
|
+
inYourNetwork: z.boolean().optional(),
|
|
50
|
+
fairChanceEmployer: z.boolean().optional(),
|
|
51
|
+
})
|
|
52
|
+
.optional(),
|
|
53
|
+
customSearchUrl: z.string().optional(),
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
public override getTool(): Tool {
|
|
57
|
+
return {
|
|
58
|
+
name: this.name,
|
|
59
|
+
description:
|
|
60
|
+
'Allows you to search jobs applying various filtering criteria (st.searchJobs action).',
|
|
61
|
+
inputSchema: {
|
|
62
|
+
type: 'object',
|
|
63
|
+
properties: {
|
|
64
|
+
term: {
|
|
65
|
+
type: 'string',
|
|
66
|
+
description: 'Optional. Keyword or phrase to search.',
|
|
67
|
+
},
|
|
68
|
+
limit: {
|
|
69
|
+
type: 'number',
|
|
70
|
+
description:
|
|
71
|
+
'Optional. Number of search results to return. Defaults to 10, with a maximum value of 1000.',
|
|
72
|
+
},
|
|
73
|
+
filter: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
description:
|
|
76
|
+
'Optional. Object that specifies filtering criteria for jobs. When multiple filter fields are specified, they are combined using AND logic.',
|
|
77
|
+
properties: {
|
|
78
|
+
location: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'Optional. Free-form location string.',
|
|
81
|
+
},
|
|
82
|
+
datePosted: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
enum: ['anyTime', 'past24Hours', 'pastWeek', 'pastMonth'],
|
|
85
|
+
description: 'Optional. How recently the job was posted.',
|
|
86
|
+
},
|
|
87
|
+
experienceLevels: {
|
|
88
|
+
type: 'array',
|
|
89
|
+
description: 'Optional. Array of experience levels.',
|
|
90
|
+
items: {
|
|
91
|
+
type: 'string',
|
|
92
|
+
enum: [
|
|
93
|
+
'internship',
|
|
94
|
+
'entryLevel',
|
|
95
|
+
'associate',
|
|
96
|
+
'midSeniorLevel',
|
|
97
|
+
'director',
|
|
98
|
+
'executive',
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
employmentTypes: {
|
|
103
|
+
type: 'array',
|
|
104
|
+
description: 'Optional. Array of employment types.',
|
|
105
|
+
items: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
enum: [
|
|
108
|
+
'fullTime',
|
|
109
|
+
'partTime',
|
|
110
|
+
'contract',
|
|
111
|
+
'temporary',
|
|
112
|
+
'volunteer',
|
|
113
|
+
'internship',
|
|
114
|
+
'other',
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
workplaceTypes: {
|
|
119
|
+
type: 'array',
|
|
120
|
+
description: 'Optional. Array of workplace types.',
|
|
121
|
+
items: {
|
|
122
|
+
type: 'string',
|
|
123
|
+
enum: ['onSite', 'remote', 'hybrid'],
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
companies: {
|
|
127
|
+
type: 'array',
|
|
128
|
+
description: 'Optional. Array of company names.',
|
|
129
|
+
items: { type: 'string' },
|
|
130
|
+
},
|
|
131
|
+
industries: {
|
|
132
|
+
type: 'array',
|
|
133
|
+
description: 'Optional. Array of industry names.',
|
|
134
|
+
items: { type: 'string' },
|
|
135
|
+
},
|
|
136
|
+
jobFunctions: {
|
|
137
|
+
type: 'array',
|
|
138
|
+
description: 'Optional. Array of job function names.',
|
|
139
|
+
items: { type: 'string' },
|
|
140
|
+
},
|
|
141
|
+
easyApply: {
|
|
142
|
+
type: 'boolean',
|
|
143
|
+
description: 'Optional. When true, only jobs with Easy Apply.',
|
|
144
|
+
},
|
|
145
|
+
hasVerifications: {
|
|
146
|
+
type: 'boolean',
|
|
147
|
+
description: 'Optional. When true, only jobs with verification signals.',
|
|
148
|
+
},
|
|
149
|
+
under10Applicants: {
|
|
150
|
+
type: 'boolean',
|
|
151
|
+
description: 'Optional. When true, only jobs with fewer than 10 applicants.',
|
|
152
|
+
},
|
|
153
|
+
inYourNetwork: {
|
|
154
|
+
type: 'boolean',
|
|
155
|
+
description: 'Optional. When true, only jobs from your network.',
|
|
156
|
+
},
|
|
157
|
+
fairChanceEmployer: {
|
|
158
|
+
type: 'boolean',
|
|
159
|
+
description: 'Optional. When true, only fair chance employer jobs.',
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
customSearchUrl: {
|
|
164
|
+
type: 'string',
|
|
165
|
+
description:
|
|
166
|
+
'Optional. URL copied from a LinkedIn jobs search page. When specified, overrides term and filter.',
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|