@linkedapi/mcp 2.0.1 → 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.
@@ -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;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
+ {"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"}
@@ -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;AA3DD,wCA2DC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
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.0.1",
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.0",
33
+ "@linkedapi/node": "^2.0.4",
34
34
  "@modelcontextprotocol/sdk": "^1.17.4",
35
35
  "zod": "^4.1.1"
36
36
  },
@@ -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
+ }