@jobtarget/profiles-api-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,37 @@
1
+ import { MCPTool } from "mcp-framework";
2
+ import { z } from "zod";
3
+ import { apiClient, ProfilesApiError } from "../client/ProfilesApiClient.js";
4
+ export class GetProfile extends MCPTool {
5
+ name = "get_profile";
6
+ description = "Retrieve a single candidate profile by its ID. " +
7
+ "Profile IDs are prefixed by source: pdl_ (PeopleDataLabs), jbt_ (JobTarget), or rli_ (ResumeLibrary). " +
8
+ "Returns the full SourcerProfile object including contact details, experience, education, and skills.";
9
+ schema = z.object({
10
+ id: z
11
+ .string()
12
+ .min(1)
13
+ .describe("Profile ID including source prefix (e.g. 'pdl_abc123', 'jbt_456', 'rli_789')"),
14
+ });
15
+ async execute(input) {
16
+ try {
17
+ const profile = await apiClient.get(`/api/v1/profiles/${encodeURIComponent(input.id)}`);
18
+ return {
19
+ content: [
20
+ {
21
+ type: "text",
22
+ text: JSON.stringify(profile, null, 2),
23
+ },
24
+ ],
25
+ };
26
+ }
27
+ catch (error) {
28
+ if (error instanceof ProfilesApiError) {
29
+ if (error.status === 404) {
30
+ throw new Error(`Profile not found: ${input.id}`);
31
+ }
32
+ throw new Error(`Profiles API error (${error.status}): ${error.message}`);
33
+ }
34
+ throw error;
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,40 @@
1
+ import { MCPTool } from "mcp-framework";
2
+ import { z } from "zod";
3
+ export declare class GetProfileLinks extends MCPTool {
4
+ name: string;
5
+ description: string;
6
+ schema: z.ZodObject<{
7
+ recruiterId: z.ZodNumber;
8
+ saved: z.ZodOptional<z.ZodBoolean>;
9
+ unlocked: z.ZodOptional<z.ZodBoolean>;
10
+ hidden: z.ZodOptional<z.ZodBoolean>;
11
+ page: z.ZodDefault<z.ZodNumber>;
12
+ count: z.ZodDefault<z.ZodNumber>;
13
+ includeInvites: z.ZodOptional<z.ZodBoolean>;
14
+ jobId: z.ZodOptional<z.ZodNumber>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ recruiterId: number;
17
+ page: number;
18
+ count: number;
19
+ saved?: boolean | undefined;
20
+ unlocked?: boolean | undefined;
21
+ hidden?: boolean | undefined;
22
+ includeInvites?: boolean | undefined;
23
+ jobId?: number | undefined;
24
+ }, {
25
+ recruiterId: number;
26
+ saved?: boolean | undefined;
27
+ unlocked?: boolean | undefined;
28
+ hidden?: boolean | undefined;
29
+ page?: number | undefined;
30
+ count?: number | undefined;
31
+ includeInvites?: boolean | undefined;
32
+ jobId?: number | undefined;
33
+ }>;
34
+ execute(input: z.infer<typeof this.schema>): Promise<{
35
+ content: Array<{
36
+ type: string;
37
+ text: string;
38
+ }>;
39
+ }>;
40
+ }
@@ -0,0 +1,89 @@
1
+ import { MCPTool } from "mcp-framework";
2
+ import { z } from "zod";
3
+ import { apiClient, ProfilesApiError } from "../client/ProfilesApiClient.js";
4
+ export class GetProfileLinks extends MCPTool {
5
+ name = "get_profile_links";
6
+ description = "Retrieve profile links (saved/unlocked candidates) associated with a recruiter. " +
7
+ "Supports filtering by saved, unlocked, and hidden status. " +
8
+ "Optionally fetches associated profile invites when includeInvites is true. " +
9
+ "Returns paginated ProfileLinks objects with presigned S3 URLs for unlocked profiles.";
10
+ schema = z.object({
11
+ recruiterId: z
12
+ .number()
13
+ .int()
14
+ .positive()
15
+ .describe("Recruiter ID to fetch profile links for"),
16
+ saved: z
17
+ .boolean()
18
+ .optional()
19
+ .describe("Filter: only return saved (true) or unsaved (false) links"),
20
+ unlocked: z
21
+ .boolean()
22
+ .optional()
23
+ .describe("Filter: only return unlocked (true) or locked (false) profiles"),
24
+ hidden: z
25
+ .boolean()
26
+ .optional()
27
+ .describe("Filter: only return hidden (true) or visible (false) profiles"),
28
+ page: z
29
+ .number()
30
+ .int()
31
+ .min(0)
32
+ .default(0)
33
+ .describe("Zero-based page number (default 0)"),
34
+ count: z
35
+ .number()
36
+ .int()
37
+ .min(1)
38
+ .max(100)
39
+ .default(10)
40
+ .describe("Results per page (1–100, default 10)"),
41
+ includeInvites: z
42
+ .boolean()
43
+ .optional()
44
+ .describe("When true, include associated ProfileInvite records for each link"),
45
+ jobId: z
46
+ .number()
47
+ .int()
48
+ .positive()
49
+ .optional()
50
+ .describe("Optional job ID to filter links. Implies includeInvites=true. Must be a valid job ID."),
51
+ });
52
+ async execute(input) {
53
+ const { recruiterId, saved, unlocked, hidden, page, count, includeInvites, jobId } = input;
54
+ const params = new URLSearchParams();
55
+ params.set("page", String(page ?? 0));
56
+ params.set("count", String(count ?? 10));
57
+ if (saved !== undefined)
58
+ params.set("saved", String(saved));
59
+ if (unlocked !== undefined)
60
+ params.set("unlocked", String(unlocked));
61
+ if (hidden !== undefined)
62
+ params.set("hidden", String(hidden));
63
+ if (includeInvites !== undefined)
64
+ params.set("includeInvites", String(includeInvites));
65
+ if (jobId !== undefined)
66
+ params.set("jobId", String(jobId));
67
+ const path = `/api/v1/recruiter/${encodeURIComponent(recruiterId)}/profilelink?${params.toString()}`;
68
+ try {
69
+ const links = await apiClient.get(path);
70
+ return {
71
+ content: [
72
+ {
73
+ type: "text",
74
+ text: JSON.stringify(links, null, 2),
75
+ },
76
+ ],
77
+ };
78
+ }
79
+ catch (error) {
80
+ if (error instanceof ProfilesApiError) {
81
+ if (error.status === 404) {
82
+ throw new Error(`Recruiter not found: ${recruiterId}`);
83
+ }
84
+ throw new Error(`Profiles API error (${error.status}): ${error.message}`);
85
+ }
86
+ throw error;
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,297 @@
1
+ import { MCPTool } from "mcp-framework";
2
+ import { z } from "zod";
3
+ export declare class QueryProfiles extends MCPTool {
4
+ name: string;
5
+ description: string;
6
+ schema: z.ZodObject<{
7
+ query: z.ZodObject<{
8
+ must: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
9
+ term: z.ZodRecord<z.ZodString, z.ZodString>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ term: Record<string, string>;
12
+ }, {
13
+ term: Record<string, string>;
14
+ }>, z.ZodObject<{
15
+ contains: z.ZodRecord<z.ZodString, z.ZodString>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ contains: Record<string, string>;
18
+ }, {
19
+ contains: Record<string, string>;
20
+ }>, z.ZodObject<{
21
+ match: z.ZodRecord<z.ZodString, z.ZodString>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ match: Record<string, string>;
24
+ }, {
25
+ match: Record<string, string>;
26
+ }>, z.ZodObject<{
27
+ fuzzy: z.ZodRecord<z.ZodString, z.ZodString>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ fuzzy: Record<string, string>;
30
+ }, {
31
+ fuzzy: Record<string, string>;
32
+ }>, z.ZodObject<{
33
+ startsWith: z.ZodRecord<z.ZodString, z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ startsWith: Record<string, string>;
36
+ }, {
37
+ startsWith: Record<string, string>;
38
+ }>, z.ZodObject<{
39
+ doesNotStartWith: z.ZodRecord<z.ZodString, z.ZodString>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ doesNotStartWith: Record<string, string>;
42
+ }, {
43
+ doesNotStartWith: Record<string, string>;
44
+ }>]>, "many">>;
45
+ not: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
46
+ term: z.ZodRecord<z.ZodString, z.ZodString>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ term: Record<string, string>;
49
+ }, {
50
+ term: Record<string, string>;
51
+ }>, z.ZodObject<{
52
+ contains: z.ZodRecord<z.ZodString, z.ZodString>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ contains: Record<string, string>;
55
+ }, {
56
+ contains: Record<string, string>;
57
+ }>, z.ZodObject<{
58
+ match: z.ZodRecord<z.ZodString, z.ZodString>;
59
+ }, "strip", z.ZodTypeAny, {
60
+ match: Record<string, string>;
61
+ }, {
62
+ match: Record<string, string>;
63
+ }>, z.ZodObject<{
64
+ fuzzy: z.ZodRecord<z.ZodString, z.ZodString>;
65
+ }, "strip", z.ZodTypeAny, {
66
+ fuzzy: Record<string, string>;
67
+ }, {
68
+ fuzzy: Record<string, string>;
69
+ }>, z.ZodObject<{
70
+ startsWith: z.ZodRecord<z.ZodString, z.ZodString>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ startsWith: Record<string, string>;
73
+ }, {
74
+ startsWith: Record<string, string>;
75
+ }>, z.ZodObject<{
76
+ doesNotStartWith: z.ZodRecord<z.ZodString, z.ZodString>;
77
+ }, "strip", z.ZodTypeAny, {
78
+ doesNotStartWith: Record<string, string>;
79
+ }, {
80
+ doesNotStartWith: Record<string, string>;
81
+ }>]>, "many">>;
82
+ should: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
83
+ term: z.ZodRecord<z.ZodString, z.ZodString>;
84
+ }, "strip", z.ZodTypeAny, {
85
+ term: Record<string, string>;
86
+ }, {
87
+ term: Record<string, string>;
88
+ }>, z.ZodObject<{
89
+ contains: z.ZodRecord<z.ZodString, z.ZodString>;
90
+ }, "strip", z.ZodTypeAny, {
91
+ contains: Record<string, string>;
92
+ }, {
93
+ contains: Record<string, string>;
94
+ }>, z.ZodObject<{
95
+ match: z.ZodRecord<z.ZodString, z.ZodString>;
96
+ }, "strip", z.ZodTypeAny, {
97
+ match: Record<string, string>;
98
+ }, {
99
+ match: Record<string, string>;
100
+ }>, z.ZodObject<{
101
+ fuzzy: z.ZodRecord<z.ZodString, z.ZodString>;
102
+ }, "strip", z.ZodTypeAny, {
103
+ fuzzy: Record<string, string>;
104
+ }, {
105
+ fuzzy: Record<string, string>;
106
+ }>, z.ZodObject<{
107
+ startsWith: z.ZodRecord<z.ZodString, z.ZodString>;
108
+ }, "strip", z.ZodTypeAny, {
109
+ startsWith: Record<string, string>;
110
+ }, {
111
+ startsWith: Record<string, string>;
112
+ }>, z.ZodObject<{
113
+ doesNotStartWith: z.ZodRecord<z.ZodString, z.ZodString>;
114
+ }, "strip", z.ZodTypeAny, {
115
+ doesNotStartWith: Record<string, string>;
116
+ }, {
117
+ doesNotStartWith: Record<string, string>;
118
+ }>]>, "many">>;
119
+ }, "strip", z.ZodTypeAny, {
120
+ must?: ({
121
+ term: Record<string, string>;
122
+ } | {
123
+ contains: Record<string, string>;
124
+ } | {
125
+ match: Record<string, string>;
126
+ } | {
127
+ fuzzy: Record<string, string>;
128
+ } | {
129
+ startsWith: Record<string, string>;
130
+ } | {
131
+ doesNotStartWith: Record<string, string>;
132
+ })[] | undefined;
133
+ not?: ({
134
+ term: Record<string, string>;
135
+ } | {
136
+ contains: Record<string, string>;
137
+ } | {
138
+ match: Record<string, string>;
139
+ } | {
140
+ fuzzy: Record<string, string>;
141
+ } | {
142
+ startsWith: Record<string, string>;
143
+ } | {
144
+ doesNotStartWith: Record<string, string>;
145
+ })[] | undefined;
146
+ should?: ({
147
+ term: Record<string, string>;
148
+ } | {
149
+ contains: Record<string, string>;
150
+ } | {
151
+ match: Record<string, string>;
152
+ } | {
153
+ fuzzy: Record<string, string>;
154
+ } | {
155
+ startsWith: Record<string, string>;
156
+ } | {
157
+ doesNotStartWith: Record<string, string>;
158
+ })[] | undefined;
159
+ }, {
160
+ must?: ({
161
+ term: Record<string, string>;
162
+ } | {
163
+ contains: Record<string, string>;
164
+ } | {
165
+ match: Record<string, string>;
166
+ } | {
167
+ fuzzy: Record<string, string>;
168
+ } | {
169
+ startsWith: Record<string, string>;
170
+ } | {
171
+ doesNotStartWith: Record<string, string>;
172
+ })[] | undefined;
173
+ not?: ({
174
+ term: Record<string, string>;
175
+ } | {
176
+ contains: Record<string, string>;
177
+ } | {
178
+ match: Record<string, string>;
179
+ } | {
180
+ fuzzy: Record<string, string>;
181
+ } | {
182
+ startsWith: Record<string, string>;
183
+ } | {
184
+ doesNotStartWith: Record<string, string>;
185
+ })[] | undefined;
186
+ should?: ({
187
+ term: Record<string, string>;
188
+ } | {
189
+ contains: Record<string, string>;
190
+ } | {
191
+ match: Record<string, string>;
192
+ } | {
193
+ fuzzy: Record<string, string>;
194
+ } | {
195
+ startsWith: Record<string, string>;
196
+ } | {
197
+ doesNotStartWith: Record<string, string>;
198
+ })[] | undefined;
199
+ }>;
200
+ page: z.ZodDefault<z.ZodNumber>;
201
+ count: z.ZodDefault<z.ZodNumber>;
202
+ }, "strip", z.ZodTypeAny, {
203
+ page: number;
204
+ count: number;
205
+ query: {
206
+ must?: ({
207
+ term: Record<string, string>;
208
+ } | {
209
+ contains: Record<string, string>;
210
+ } | {
211
+ match: Record<string, string>;
212
+ } | {
213
+ fuzzy: Record<string, string>;
214
+ } | {
215
+ startsWith: Record<string, string>;
216
+ } | {
217
+ doesNotStartWith: Record<string, string>;
218
+ })[] | undefined;
219
+ not?: ({
220
+ term: Record<string, string>;
221
+ } | {
222
+ contains: Record<string, string>;
223
+ } | {
224
+ match: Record<string, string>;
225
+ } | {
226
+ fuzzy: Record<string, string>;
227
+ } | {
228
+ startsWith: Record<string, string>;
229
+ } | {
230
+ doesNotStartWith: Record<string, string>;
231
+ })[] | undefined;
232
+ should?: ({
233
+ term: Record<string, string>;
234
+ } | {
235
+ contains: Record<string, string>;
236
+ } | {
237
+ match: Record<string, string>;
238
+ } | {
239
+ fuzzy: Record<string, string>;
240
+ } | {
241
+ startsWith: Record<string, string>;
242
+ } | {
243
+ doesNotStartWith: Record<string, string>;
244
+ })[] | undefined;
245
+ };
246
+ }, {
247
+ query: {
248
+ must?: ({
249
+ term: Record<string, string>;
250
+ } | {
251
+ contains: Record<string, string>;
252
+ } | {
253
+ match: Record<string, string>;
254
+ } | {
255
+ fuzzy: Record<string, string>;
256
+ } | {
257
+ startsWith: Record<string, string>;
258
+ } | {
259
+ doesNotStartWith: Record<string, string>;
260
+ })[] | undefined;
261
+ not?: ({
262
+ term: Record<string, string>;
263
+ } | {
264
+ contains: Record<string, string>;
265
+ } | {
266
+ match: Record<string, string>;
267
+ } | {
268
+ fuzzy: Record<string, string>;
269
+ } | {
270
+ startsWith: Record<string, string>;
271
+ } | {
272
+ doesNotStartWith: Record<string, string>;
273
+ })[] | undefined;
274
+ should?: ({
275
+ term: Record<string, string>;
276
+ } | {
277
+ contains: Record<string, string>;
278
+ } | {
279
+ match: Record<string, string>;
280
+ } | {
281
+ fuzzy: Record<string, string>;
282
+ } | {
283
+ startsWith: Record<string, string>;
284
+ } | {
285
+ doesNotStartWith: Record<string, string>;
286
+ })[] | undefined;
287
+ };
288
+ page?: number | undefined;
289
+ count?: number | undefined;
290
+ }>;
291
+ execute(input: z.infer<typeof this.schema>): Promise<{
292
+ content: Array<{
293
+ type: string;
294
+ text: string;
295
+ }>;
296
+ }>;
297
+ }
@@ -0,0 +1,82 @@
1
+ import { MCPTool } from "mcp-framework";
2
+ import { z } from "zod";
3
+ import { apiClient, ProfilesApiError } from "../client/ProfilesApiClient.js";
4
+ // A single query clause maps one field to one value.
5
+ const QueryClauseSchema = z.record(z.string()).describe('Single field-value pair, e.g. {"currentTitle": "Software Engineer"}');
6
+ // Supported query types.
7
+ const QueryNodeSchema = z.union([
8
+ z.object({ term: QueryClauseSchema }).describe("Exact-match (case-sensitive)"),
9
+ z.object({ contains: QueryClauseSchema }).describe("Wildcard / partial match"),
10
+ z.object({ match: QueryClauseSchema }).describe("Full-text analyzed match"),
11
+ z.object({ fuzzy: QueryClauseSchema }).describe("Approximate match (typo-tolerant)"),
12
+ z.object({ startsWith: QueryClauseSchema }).describe("Prefix match"),
13
+ z.object({ doesNotStartWith: QueryClauseSchema }).describe("Negative prefix match"),
14
+ ]);
15
+ const BooleanQuerySchema = z.object({
16
+ must: z
17
+ .array(QueryNodeSchema)
18
+ .optional()
19
+ .describe("Clauses that MUST match (AND logic)"),
20
+ not: z
21
+ .array(QueryNodeSchema)
22
+ .optional()
23
+ .describe("Clauses that MUST NOT match (NOT logic)"),
24
+ should: z
25
+ .array(QueryNodeSchema)
26
+ .optional()
27
+ .describe("Clauses that SHOULD match (OR logic)"),
28
+ });
29
+ export class QueryProfiles extends MCPTool {
30
+ name = "query_profiles";
31
+ description = "Execute an advanced boolean query against the profile index using Elasticsearch-style syntax. " +
32
+ "Supports must/not/should clauses with term, contains, match, fuzzy, startsWith, and doesNotStartWith operators. " +
33
+ "Use this for complex filtering scenarios not covered by search_profiles. " +
34
+ "Searchable fields include: fullName, firstName, lastName, currentTitle, normalizedTitle, " +
35
+ "currentEmployer, skills, experience.title.name, experience.company.name, education.school.name, " +
36
+ "location.name, location.region, emails.emailAddress, and many more.";
37
+ schema = z.object({
38
+ query: BooleanQuerySchema.describe("Boolean query with must, not, and/or should clauses. At least one clause list is required."),
39
+ page: z
40
+ .number()
41
+ .int()
42
+ .min(0)
43
+ .default(0)
44
+ .describe("Zero-based page number (default 0)"),
45
+ count: z
46
+ .number()
47
+ .int()
48
+ .min(1)
49
+ .max(100)
50
+ .default(10)
51
+ .describe("Results per page (1–100, default 10)"),
52
+ });
53
+ async execute(input) {
54
+ const { query, page, count } = input;
55
+ if ((!query.must || query.must.length === 0) &&
56
+ (!query.not || query.not.length === 0) &&
57
+ (!query.should || query.should.length === 0)) {
58
+ throw new Error("query must contain at least one clause in must, not, or should");
59
+ }
60
+ try {
61
+ const results = await apiClient.post("/api/v1/profiles/query", {
62
+ query,
63
+ page,
64
+ count,
65
+ });
66
+ return {
67
+ content: [
68
+ {
69
+ type: "text",
70
+ text: JSON.stringify(results, null, 2),
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ catch (error) {
76
+ if (error instanceof ProfilesApiError) {
77
+ throw new Error(`Profiles API error (${error.status}): ${error.message}`);
78
+ }
79
+ throw error;
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,101 @@
1
+ import { MCPTool } from "mcp-framework";
2
+ import { z } from "zod";
3
+ export declare class SearchProfiles extends MCPTool {
4
+ name: string;
5
+ description: string;
6
+ schema: z.ZodObject<{
7
+ source: z.ZodEnum<["PeopleDataLabs", "JobTarget", "ResumeLibrary"]>;
8
+ what: z.ZodString;
9
+ where: z.ZodOptional<z.ZodString>;
10
+ latitude: z.ZodOptional<z.ZodNumber>;
11
+ longitude: z.ZodOptional<z.ZodNumber>;
12
+ radius: z.ZodOptional<z.ZodNumber>;
13
+ page: z.ZodDefault<z.ZodNumber>;
14
+ count: z.ZodDefault<z.ZodNumber>;
15
+ companies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16
+ jobTitles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
+ recentlyActive: z.ZodOptional<z.ZodBoolean>;
18
+ companyId: z.ZodOptional<z.ZodNumber>;
19
+ fuzziness: z.ZodOptional<z.ZodEnum<["Auto", "0", "1", "2"]>>;
20
+ type: z.ZodOptional<z.ZodEnum<["best_fields", "most_fields", "cross_fields"]>>;
21
+ weights: z.ZodOptional<z.ZodObject<{
22
+ w_text: z.ZodOptional<z.ZodNumber>;
23
+ w_recency: z.ZodOptional<z.ZodNumber>;
24
+ w_signal_data: z.ZodOptional<z.ZodNumber>;
25
+ w_contact: z.ZodOptional<z.ZodNumber>;
26
+ w_job_title: z.ZodOptional<z.ZodNumber>;
27
+ w_distance: z.ZodOptional<z.ZodNumber>;
28
+ w_phone: z.ZodOptional<z.ZodNumber>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ w_text?: number | undefined;
31
+ w_recency?: number | undefined;
32
+ w_signal_data?: number | undefined;
33
+ w_contact?: number | undefined;
34
+ w_job_title?: number | undefined;
35
+ w_distance?: number | undefined;
36
+ w_phone?: number | undefined;
37
+ }, {
38
+ w_text?: number | undefined;
39
+ w_recency?: number | undefined;
40
+ w_signal_data?: number | undefined;
41
+ w_contact?: number | undefined;
42
+ w_job_title?: number | undefined;
43
+ w_distance?: number | undefined;
44
+ w_phone?: number | undefined;
45
+ }>>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ page: number;
48
+ count: number;
49
+ source: "PeopleDataLabs" | "JobTarget" | "ResumeLibrary";
50
+ what: string;
51
+ type?: "best_fields" | "most_fields" | "cross_fields" | undefined;
52
+ where?: string | undefined;
53
+ latitude?: number | undefined;
54
+ longitude?: number | undefined;
55
+ radius?: number | undefined;
56
+ companies?: string[] | undefined;
57
+ jobTitles?: string[] | undefined;
58
+ recentlyActive?: boolean | undefined;
59
+ companyId?: number | undefined;
60
+ fuzziness?: "0" | "1" | "2" | "Auto" | undefined;
61
+ weights?: {
62
+ w_text?: number | undefined;
63
+ w_recency?: number | undefined;
64
+ w_signal_data?: number | undefined;
65
+ w_contact?: number | undefined;
66
+ w_job_title?: number | undefined;
67
+ w_distance?: number | undefined;
68
+ w_phone?: number | undefined;
69
+ } | undefined;
70
+ }, {
71
+ source: "PeopleDataLabs" | "JobTarget" | "ResumeLibrary";
72
+ what: string;
73
+ type?: "best_fields" | "most_fields" | "cross_fields" | undefined;
74
+ page?: number | undefined;
75
+ count?: number | undefined;
76
+ where?: string | undefined;
77
+ latitude?: number | undefined;
78
+ longitude?: number | undefined;
79
+ radius?: number | undefined;
80
+ companies?: string[] | undefined;
81
+ jobTitles?: string[] | undefined;
82
+ recentlyActive?: boolean | undefined;
83
+ companyId?: number | undefined;
84
+ fuzziness?: "0" | "1" | "2" | "Auto" | undefined;
85
+ weights?: {
86
+ w_text?: number | undefined;
87
+ w_recency?: number | undefined;
88
+ w_signal_data?: number | undefined;
89
+ w_contact?: number | undefined;
90
+ w_job_title?: number | undefined;
91
+ w_distance?: number | undefined;
92
+ w_phone?: number | undefined;
93
+ } | undefined;
94
+ }>;
95
+ execute(input: z.infer<typeof this.schema>): Promise<{
96
+ content: Array<{
97
+ type: string;
98
+ text: string;
99
+ }>;
100
+ }>;
101
+ }