@coldiq/mcp 0.3.21 → 0.3.23

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/dist/index.js CHANGED
@@ -10,6 +10,9 @@ import { findEmailsName, findEmailsDescription, findEmailsSchema, findEmailsHand
10
10
  import { verifyEmailName, verifyEmailDescription, verifyEmailSchema, verifyEmailHandler, } from './tools/verify-email.js';
11
11
  import { verifyEmailsBulkName, verifyEmailsBulkDescription, verifyEmailsBulkSchema, verifyEmailsBulkHandler } from './tools/verify-emails-bulk.js';
12
12
  import { findEmailsBulkName, findEmailsBulkDescription, findEmailsBulkSchema, findEmailsBulkHandler } from './tools/find-emails-bulk.js';
13
+ import { enrichPersonBulkName, enrichPersonBulkDescription, enrichPersonBulkSchema, enrichPersonBulkHandler } from './tools/enrich-person-bulk.js';
14
+ import { enrichCompanyBulkName, enrichCompanyBulkDescription, enrichCompanyBulkSchema, enrichCompanyBulkHandler } from './tools/enrich-company-bulk.js';
15
+ import { findPhoneBulkName, findPhoneBulkDescription, findPhoneBulkSchema, findPhoneBulkHandler } from './tools/find-phone-bulk.js';
13
16
  import { getBulkJobName, getBulkJobDescription, getBulkJobSchema, getBulkJobHandler } from './tools/get-bulk-job.js';
14
17
  import { findPhoneName, findPhoneDescription, findPhoneSchema, findPhoneHandler, } from './tools/find-phone.js';
15
18
  import { enrichCompanyName, enrichCompanyDescription, enrichCompanySchema, enrichCompanyHandler, } from './tools/enrich-company.js';
@@ -55,6 +58,9 @@ server.tool(findEmailsName, findEmailsDescription, findEmailsSchema, findEmailsH
55
58
  server.tool(verifyEmailName, verifyEmailDescription, verifyEmailSchema, verifyEmailHandler);
56
59
  server.tool(verifyEmailsBulkName, verifyEmailsBulkDescription, verifyEmailsBulkSchema, verifyEmailsBulkHandler);
57
60
  server.tool(findEmailsBulkName, findEmailsBulkDescription, findEmailsBulkSchema, findEmailsBulkHandler);
61
+ server.tool(enrichPersonBulkName, enrichPersonBulkDescription, enrichPersonBulkSchema, enrichPersonBulkHandler);
62
+ server.tool(enrichCompanyBulkName, enrichCompanyBulkDescription, enrichCompanyBulkSchema, enrichCompanyBulkHandler);
63
+ server.tool(findPhoneBulkName, findPhoneBulkDescription, findPhoneBulkSchema, findPhoneBulkHandler);
58
64
  server.tool(getBulkJobName, getBulkJobDescription, getBulkJobSchema, getBulkJobHandler);
59
65
  server.tool(findPhoneName, findPhoneDescription, findPhoneSchema, findPhoneHandler);
60
66
  server.tool(enrichCompanyName, enrichCompanyDescription, enrichCompanySchema, enrichCompanyHandler);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAClJ,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxI,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAClJ,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACvJ,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACnI,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEpH,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,0CAA0C;AAC1C,UAAU,EAAE,CAAA;AAEZ,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,OAAO;CACjB,EACD;IACE,wEAAwE;IACxE,sEAAsE;IACtE,4EAA4E;IAC5E,0EAA0E;IAC1E,YAAY,EAAE;QACZ,0FAA0F;QAC1F,qPAAqP;QACrP,0LAA0L;QAC1L,sGAAsG;KACvG,CAAC,IAAI,CAAC,IAAI,CAAC;CACb,CACF,CAAA;AAED,qBAAqB;AACrB,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC3G,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACnF,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAC/F,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAA;AAC3F,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC/G,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAA;AACvG,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC/G,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,wBAAwB,CAAC,CAAA;AACnH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;AACnG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACnF,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;AACnG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACnF,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACnF,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAC/F,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC3G,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAC/F,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACnF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAA;AAC3F,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC/G,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC/G,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC3G,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC3G,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACnF,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,4BAA4B,CAAC,CAAA;AACnI,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAE3G,8BAA8B;AAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;AAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ export declare const enrichCompanyBulkName = "enrich_company_bulk";
3
+ export declare const enrichCompanyBulkDescription: string;
4
+ export declare const enrichCompanyBulkSchema: {
5
+ inputs: z.ZodArray<z.ZodObject<{
6
+ domain: z.ZodOptional<z.ZodString>;
7
+ linkedin_url: z.ZodOptional<z.ZodString>;
8
+ name: z.ZodOptional<z.ZodString>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ linkedin_url?: string | undefined;
11
+ domain?: string | undefined;
12
+ name?: string | undefined;
13
+ }, {
14
+ linkedin_url?: string | undefined;
15
+ domain?: string | undefined;
16
+ name?: string | undefined;
17
+ }>, "many">;
18
+ webhook_url: z.ZodOptional<z.ZodString>;
19
+ };
20
+ export declare function enrichCompanyBulkHandler(input: Record<string, unknown>): Promise<{
21
+ content: {
22
+ type: "text";
23
+ text: string;
24
+ }[];
25
+ isError: boolean;
26
+ }>;
27
+ //# sourceMappingURL=enrich-company-bulk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-company-bulk.d.ts","sourceRoot":"","sources":["../../src/tools/enrich-company-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,qBAAqB,wBAAwB,CAAA;AAE1D,eAAO,MAAM,4BAA4B,QAIwE,CAAA;AAEjH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;CAanC,CAAA;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAG5E"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import { callApi } from '../client.js';
3
+ export const enrichCompanyBulkName = 'enrich_company_bulk';
4
+ export const enrichCompanyBulkDescription = 'Enrich up to 5,000 companies (size, industry, funding, technologies, social profiles) in one ASYNC job. Returns a job_id immediately — this does NOT return firmographics inline. ' +
5
+ 'Poll get_bulk_job(job_id) until status is "done" (drains over a few minutes), then page through rows. ' +
6
+ 'Each row runs the same managed waterfall as enrich_company; provide at least one of domain, linkedin_url, or name per company. ' +
7
+ 'Charged only per row a provider enriches (misses are free). For a single company, use enrich_company instead.';
8
+ export const enrichCompanyBulkSchema = {
9
+ inputs: z
10
+ .array(z.object({
11
+ domain: z.string().optional().describe('Company domain (e.g. "coldiq.com").'),
12
+ linkedin_url: z.string().optional().describe('Company LinkedIn URL.'),
13
+ name: z.string().optional().describe('Company name (e.g. "ColdIQ").'),
14
+ }))
15
+ .min(1)
16
+ .max(5000)
17
+ .describe('Companies to enrich (1–5000). Each needs at least one of domain, linkedin_url, or name.'),
18
+ webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
19
+ };
20
+ export async function enrichCompanyBulkHandler(input) {
21
+ const res = await callApi('POST', '/company/enrich/bulk/submit', input);
22
+ return { content: [{ type: 'text', text: JSON.stringify(res.data) }], isError: !res.ok };
23
+ }
24
+ //# sourceMappingURL=enrich-company-bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-company-bulk.js","sourceRoot":"","sources":["../../src/tools/enrich-company-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAA;AAE1D,MAAM,CAAC,MAAM,4BAA4B,GACvC,oLAAoL;IACpL,wGAAwG;IACxG,iIAAiI;IACjI,+GAA+G,CAAA;AAEjH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC7E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACtE,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,yFAAyF,CAAC;IACtG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACjG,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAA8B;IAC3E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,6BAA6B,EAAE,KAAK,CAAC,CAAA;IACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;AACnG,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ export declare const enrichPersonBulkName = "enrich_person_bulk";
3
+ export declare const enrichPersonBulkDescription: string;
4
+ export declare const enrichPersonBulkSchema: {
5
+ inputs: z.ZodArray<z.ZodObject<{
6
+ email: z.ZodOptional<z.ZodString>;
7
+ linkedin_url: z.ZodOptional<z.ZodString>;
8
+ first_name: z.ZodOptional<z.ZodString>;
9
+ last_name: z.ZodOptional<z.ZodString>;
10
+ company_name: z.ZodOptional<z.ZodString>;
11
+ domain: z.ZodOptional<z.ZodString>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ linkedin_url?: string | undefined;
14
+ domain?: string | undefined;
15
+ first_name?: string | undefined;
16
+ company_name?: string | undefined;
17
+ last_name?: string | undefined;
18
+ email?: string | undefined;
19
+ }, {
20
+ linkedin_url?: string | undefined;
21
+ domain?: string | undefined;
22
+ first_name?: string | undefined;
23
+ company_name?: string | undefined;
24
+ last_name?: string | undefined;
25
+ email?: string | undefined;
26
+ }>, "many">;
27
+ webhook_url: z.ZodOptional<z.ZodString>;
28
+ };
29
+ export declare function enrichPersonBulkHandler(input: Record<string, unknown>): Promise<{
30
+ content: {
31
+ type: "text";
32
+ text: string;
33
+ }[];
34
+ isError: boolean;
35
+ }>;
36
+ //# sourceMappingURL=enrich-person-bulk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-person-bulk.d.ts","sourceRoot":"","sources":["../../src/tools/enrich-person-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,eAAO,MAAM,2BAA2B,QAIuE,CAAA;AAE/G,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;CAgBlC,CAAA;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAG3E"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import { callApi } from '../client.js';
3
+ export const enrichPersonBulkName = 'enrich_person_bulk';
4
+ export const enrichPersonBulkDescription = 'Enrich up to 5,000 people (LinkedIn profile + professional details) in one ASYNC job. Returns a job_id immediately — this does NOT return profiles inline. ' +
5
+ 'Poll get_bulk_job(job_id) until status is "done" (drains over a few minutes), then page through rows. ' +
6
+ 'Each row runs the same managed waterfall as enrich_person; provide an email, a linkedin_url, or name + company/domain per person. ' +
7
+ 'Charged only per row a provider enriches (misses are free). For a single person, use enrich_person instead.';
8
+ export const enrichPersonBulkSchema = {
9
+ inputs: z
10
+ .array(z.object({
11
+ email: z.string().optional().describe('Work email — strongest identifier.'),
12
+ linkedin_url: z.string().optional().describe('LinkedIn profile URL.'),
13
+ first_name: z.string().optional().describe('First name (use with last_name + company/domain).'),
14
+ last_name: z.string().optional().describe('Last name.'),
15
+ company_name: z.string().optional().describe('Company name — alternative to domain.'),
16
+ domain: z.string().optional().describe('Company domain (e.g. "coldiq.com").'),
17
+ }))
18
+ .min(1)
19
+ .max(5000)
20
+ .describe('People to enrich (1–5000). Each needs an email, a linkedin_url, or name + company/domain.'),
21
+ webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
22
+ };
23
+ export async function enrichPersonBulkHandler(input) {
24
+ const res = await callApi('POST', '/person/enrich/bulk/submit', input);
25
+ return { content: [{ type: 'text', text: JSON.stringify(res.data) }], isError: !res.ok };
26
+ }
27
+ //# sourceMappingURL=enrich-person-bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-person-bulk.js","sourceRoot":"","sources":["../../src/tools/enrich-person-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAA;AAExD,MAAM,CAAC,MAAM,2BAA2B,GACtC,6JAA6J;IAC7J,wGAAwG;IACxG,oIAAoI;IACpI,6GAA6G,CAAA;AAE/G,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC3E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAC9E,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,2FAA2F,CAAC;IACxG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACjG,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAA8B;IAC1E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAA;IACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;AACnG,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ export declare const findPhoneBulkName = "find_phone_bulk";
3
+ export declare const findPhoneBulkDescription: string;
4
+ export declare const findPhoneBulkSchema: {
5
+ inputs: z.ZodArray<z.ZodObject<{
6
+ linkedin_url: z.ZodOptional<z.ZodString>;
7
+ first_name: z.ZodOptional<z.ZodString>;
8
+ last_name: z.ZodOptional<z.ZodString>;
9
+ company_domain: z.ZodOptional<z.ZodString>;
10
+ company_name: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ linkedin_url?: string | undefined;
13
+ first_name?: string | undefined;
14
+ company_name?: string | undefined;
15
+ last_name?: string | undefined;
16
+ company_domain?: string | undefined;
17
+ }, {
18
+ linkedin_url?: string | undefined;
19
+ first_name?: string | undefined;
20
+ company_name?: string | undefined;
21
+ last_name?: string | undefined;
22
+ company_domain?: string | undefined;
23
+ }>, "many">;
24
+ webhook_url: z.ZodOptional<z.ZodString>;
25
+ };
26
+ export declare function findPhoneBulkHandler(input: Record<string, unknown>): Promise<{
27
+ content: {
28
+ type: "text";
29
+ text: string;
30
+ }[];
31
+ isError: boolean;
32
+ }>;
33
+ //# sourceMappingURL=find-phone-bulk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-phone-bulk.d.ts","sourceRoot":"","sources":["../../src/tools/find-phone-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,iBAAiB,oBAAoB,CAAA;AAElD,eAAO,MAAM,wBAAwB,QAI6J,CAAA;AAElM,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;CAe/B,CAAA;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAGxE"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { callApi } from '../client.js';
3
+ export const findPhoneBulkName = 'find_phone_bulk';
4
+ export const findPhoneBulkDescription = 'Find direct/mobile phone numbers for up to 5,000 people in one ASYNC job. Returns a job_id immediately — this does NOT return numbers inline. ' +
5
+ 'Poll get_bulk_job(job_id) until status is "done" (drains over a few minutes), then page through rows. ' +
6
+ 'Each row runs the same managed waterfall as find_phone; provide a linkedin_url, or first+last name with company_domain/company_name. ' +
7
+ 'Charged only per row a provider returns a number (misses are free). Phone lookups are EXPENSIVE (10+ credits each) — scope the list deliberately. For a single person, use find_phone instead.';
8
+ export const findPhoneBulkSchema = {
9
+ inputs: z
10
+ .array(z.object({
11
+ linkedin_url: z.string().optional().describe('LinkedIn profile URL.'),
12
+ first_name: z.string().optional().describe('First name (with last_name + company_domain/name).'),
13
+ last_name: z.string().optional().describe('Last name.'),
14
+ company_domain: z.string().optional().describe('Company domain (e.g. "coldiq.com").'),
15
+ company_name: z.string().optional().describe('Company name — alternative to company_domain.'),
16
+ }))
17
+ .min(1)
18
+ .max(5000)
19
+ .describe('People to find phone numbers for (1–5000). Each needs a linkedin_url, or name + company_domain/name.'),
20
+ webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
21
+ };
22
+ export async function findPhoneBulkHandler(input) {
23
+ const res = await callApi('POST', '/phone/find/bulk/submit', input);
24
+ return { content: [{ type: 'text', text: JSON.stringify(res.data) }], isError: !res.ok };
25
+ }
26
+ //# sourceMappingURL=find-phone-bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-phone-bulk.js","sourceRoot":"","sources":["../../src/tools/find-phone-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAA;AAElD,MAAM,CAAC,MAAM,wBAAwB,GACnC,gJAAgJ;IAChJ,wGAAwG;IACxG,uIAAuI;IACvI,gMAAgM,CAAA;AAElM,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAChG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACrF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KAC9F,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,sGAAsG,CAAC;IACnH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACjG,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAA8B;IACvE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAA;IACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;AACnG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coldiq/mcp",
3
- "version": "0.3.21",
3
+ "version": "0.3.23",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/src/index.ts CHANGED
@@ -48,6 +48,9 @@ import {
48
48
 
49
49
  import { verifyEmailsBulkName, verifyEmailsBulkDescription, verifyEmailsBulkSchema, verifyEmailsBulkHandler } from './tools/verify-emails-bulk.js'
50
50
  import { findEmailsBulkName, findEmailsBulkDescription, findEmailsBulkSchema, findEmailsBulkHandler } from './tools/find-emails-bulk.js'
51
+ import { enrichPersonBulkName, enrichPersonBulkDescription, enrichPersonBulkSchema, enrichPersonBulkHandler } from './tools/enrich-person-bulk.js'
52
+ import { enrichCompanyBulkName, enrichCompanyBulkDescription, enrichCompanyBulkSchema, enrichCompanyBulkHandler } from './tools/enrich-company-bulk.js'
53
+ import { findPhoneBulkName, findPhoneBulkDescription, findPhoneBulkSchema, findPhoneBulkHandler } from './tools/find-phone-bulk.js'
51
54
  import { getBulkJobName, getBulkJobDescription, getBulkJobSchema, getBulkJobHandler } from './tools/get-bulk-job.js'
52
55
 
53
56
  import {
@@ -207,6 +210,9 @@ server.tool(findEmailsName, findEmailsDescription, findEmailsSchema, findEmailsH
207
210
  server.tool(verifyEmailName, verifyEmailDescription, verifyEmailSchema, verifyEmailHandler)
208
211
  server.tool(verifyEmailsBulkName, verifyEmailsBulkDescription, verifyEmailsBulkSchema, verifyEmailsBulkHandler)
209
212
  server.tool(findEmailsBulkName, findEmailsBulkDescription, findEmailsBulkSchema, findEmailsBulkHandler)
213
+ server.tool(enrichPersonBulkName, enrichPersonBulkDescription, enrichPersonBulkSchema, enrichPersonBulkHandler)
214
+ server.tool(enrichCompanyBulkName, enrichCompanyBulkDescription, enrichCompanyBulkSchema, enrichCompanyBulkHandler)
215
+ server.tool(findPhoneBulkName, findPhoneBulkDescription, findPhoneBulkSchema, findPhoneBulkHandler)
210
216
  server.tool(getBulkJobName, getBulkJobDescription, getBulkJobSchema, getBulkJobHandler)
211
217
  server.tool(findPhoneName, findPhoneDescription, findPhoneSchema, findPhoneHandler)
212
218
  server.tool(enrichCompanyName, enrichCompanyDescription, enrichCompanySchema, enrichCompanyHandler)
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod'
2
+ import { callApi } from '../client.js'
3
+
4
+ export const enrichCompanyBulkName = 'enrich_company_bulk'
5
+
6
+ export const enrichCompanyBulkDescription =
7
+ 'Enrich up to 5,000 companies (size, industry, funding, technologies, social profiles) in one ASYNC job. Returns a job_id immediately — this does NOT return firmographics inline. ' +
8
+ 'Poll get_bulk_job(job_id) until status is "done" (drains over a few minutes), then page through rows. ' +
9
+ 'Each row runs the same managed waterfall as enrich_company; provide at least one of domain, linkedin_url, or name per company. ' +
10
+ 'Charged only per row a provider enriches (misses are free). For a single company, use enrich_company instead.'
11
+
12
+ export const enrichCompanyBulkSchema = {
13
+ inputs: z
14
+ .array(
15
+ z.object({
16
+ domain: z.string().optional().describe('Company domain (e.g. "coldiq.com").'),
17
+ linkedin_url: z.string().optional().describe('Company LinkedIn URL.'),
18
+ name: z.string().optional().describe('Company name (e.g. "ColdIQ").'),
19
+ }),
20
+ )
21
+ .min(1)
22
+ .max(5000)
23
+ .describe('Companies to enrich (1–5000). Each needs at least one of domain, linkedin_url, or name.'),
24
+ webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
25
+ }
26
+
27
+ export async function enrichCompanyBulkHandler(input: Record<string, unknown>) {
28
+ const res = await callApi('POST', '/company/enrich/bulk/submit', input)
29
+ return { content: [{ type: 'text' as const, text: JSON.stringify(res.data) }], isError: !res.ok }
30
+ }
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod'
2
+ import { callApi } from '../client.js'
3
+
4
+ export const enrichPersonBulkName = 'enrich_person_bulk'
5
+
6
+ export const enrichPersonBulkDescription =
7
+ 'Enrich up to 5,000 people (LinkedIn profile + professional details) in one ASYNC job. Returns a job_id immediately — this does NOT return profiles inline. ' +
8
+ 'Poll get_bulk_job(job_id) until status is "done" (drains over a few minutes), then page through rows. ' +
9
+ 'Each row runs the same managed waterfall as enrich_person; provide an email, a linkedin_url, or name + company/domain per person. ' +
10
+ 'Charged only per row a provider enriches (misses are free). For a single person, use enrich_person instead.'
11
+
12
+ export const enrichPersonBulkSchema = {
13
+ inputs: z
14
+ .array(
15
+ z.object({
16
+ email: z.string().optional().describe('Work email — strongest identifier.'),
17
+ linkedin_url: z.string().optional().describe('LinkedIn profile URL.'),
18
+ first_name: z.string().optional().describe('First name (use with last_name + company/domain).'),
19
+ last_name: z.string().optional().describe('Last name.'),
20
+ company_name: z.string().optional().describe('Company name — alternative to domain.'),
21
+ domain: z.string().optional().describe('Company domain (e.g. "coldiq.com").'),
22
+ }),
23
+ )
24
+ .min(1)
25
+ .max(5000)
26
+ .describe('People to enrich (1–5000). Each needs an email, a linkedin_url, or name + company/domain.'),
27
+ webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
28
+ }
29
+
30
+ export async function enrichPersonBulkHandler(input: Record<string, unknown>) {
31
+ const res = await callApi('POST', '/person/enrich/bulk/submit', input)
32
+ return { content: [{ type: 'text' as const, text: JSON.stringify(res.data) }], isError: !res.ok }
33
+ }
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod'
2
+ import { callApi } from '../client.js'
3
+
4
+ export const findPhoneBulkName = 'find_phone_bulk'
5
+
6
+ export const findPhoneBulkDescription =
7
+ 'Find direct/mobile phone numbers for up to 5,000 people in one ASYNC job. Returns a job_id immediately — this does NOT return numbers inline. ' +
8
+ 'Poll get_bulk_job(job_id) until status is "done" (drains over a few minutes), then page through rows. ' +
9
+ 'Each row runs the same managed waterfall as find_phone; provide a linkedin_url, or first+last name with company_domain/company_name. ' +
10
+ 'Charged only per row a provider returns a number (misses are free). Phone lookups are EXPENSIVE (10+ credits each) — scope the list deliberately. For a single person, use find_phone instead.'
11
+
12
+ export const findPhoneBulkSchema = {
13
+ inputs: z
14
+ .array(
15
+ z.object({
16
+ linkedin_url: z.string().optional().describe('LinkedIn profile URL.'),
17
+ first_name: z.string().optional().describe('First name (with last_name + company_domain/name).'),
18
+ last_name: z.string().optional().describe('Last name.'),
19
+ company_domain: z.string().optional().describe('Company domain (e.g. "coldiq.com").'),
20
+ company_name: z.string().optional().describe('Company name — alternative to company_domain.'),
21
+ }),
22
+ )
23
+ .min(1)
24
+ .max(5000)
25
+ .describe('People to find phone numbers for (1–5000). Each needs a linkedin_url, or name + company_domain/name.'),
26
+ webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
27
+ }
28
+
29
+ export async function findPhoneBulkHandler(input: Record<string, unknown>) {
30
+ const res = await callApi('POST', '/phone/find/bulk/submit', input)
31
+ return { content: [{ type: 'text' as const, text: JSON.stringify(res.data) }], isError: !res.ok }
32
+ }
@@ -0,0 +1,70 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest'
2
+ import { z } from 'zod'
3
+
4
+ const callApiMock = vi.fn()
5
+ vi.mock('../src/client.js', () => ({
6
+ callApi: (...args: unknown[]) => callApiMock(...args),
7
+ }))
8
+
9
+ import { enrichPersonBulkHandler, enrichPersonBulkSchema } from '../src/tools/enrich-person-bulk.js'
10
+ import { enrichCompanyBulkHandler, enrichCompanyBulkSchema } from '../src/tools/enrich-company-bulk.js'
11
+ import { findPhoneBulkHandler, findPhoneBulkSchema } from '../src/tools/find-phone-bulk.js'
12
+
13
+ beforeEach(() => {
14
+ callApiMock.mockReset()
15
+ callApiMock.mockResolvedValue({ ok: true, status: 202, data: { job_id: 9, status: 'processing', items_total: 1 }, headers: {} })
16
+ })
17
+
18
+ describe('enrich bulk MCP tools', () => {
19
+ it('enrich_person_bulk POSTs the raw inputs body to the person submit path', async () => {
20
+ const res = await enrichPersonBulkHandler({ inputs: [{ first_name: 'Michel', last_name: 'Lieben', domain: 'coldiq.com' }] })
21
+ const [method, path, body] = callApiMock.mock.calls[0]
22
+ expect(method).toBe('POST')
23
+ expect(path).toBe('/person/enrich/bulk/submit')
24
+ expect(body).toEqual({ inputs: [{ first_name: 'Michel', last_name: 'Lieben', domain: 'coldiq.com' }] }) // no verb-envelope wrapping
25
+ expect(res.isError).toBe(false)
26
+ expect(JSON.parse(res.content[0].text)).toEqual({ job_id: 9, status: 'processing', items_total: 1 })
27
+ })
28
+
29
+ it('enrich_company_bulk POSTs the raw inputs body to the company submit path', async () => {
30
+ await enrichCompanyBulkHandler({ inputs: [{ domain: 'coldiq.com' }] })
31
+ const [, path, body] = callApiMock.mock.calls[0]
32
+ expect(path).toBe('/company/enrich/bulk/submit')
33
+ expect(body).toEqual({ inputs: [{ domain: 'coldiq.com' }] })
34
+ })
35
+
36
+ it('surfaces isError when the submit fails', async () => {
37
+ callApiMock.mockResolvedValue({ ok: false, status: 502, data: { error: 'Provider unavailable' }, headers: {} })
38
+ const res = await enrichPersonBulkHandler({ inputs: [{ email: 'michel@coldiq.com' }] })
39
+ expect(res.isError).toBe(true)
40
+ })
41
+
42
+ it('person schema accepts 1–5000 inputs and rejects an empty or oversize list', () => {
43
+ const schema = z.object(enrichPersonBulkSchema)
44
+ expect(schema.safeParse({ inputs: [{ email: 'michel@coldiq.com' }] }).success).toBe(true)
45
+ expect(schema.safeParse({ inputs: [] }).success).toBe(false)
46
+ expect(schema.safeParse({ inputs: Array.from({ length: 5001 }, () => ({ domain: 'x.com' })) }).success).toBe(false)
47
+ })
48
+
49
+ it('company schema accepts 1–5000 inputs and rejects an empty or oversize list', () => {
50
+ const schema = z.object(enrichCompanyBulkSchema)
51
+ expect(schema.safeParse({ inputs: [{ domain: 'coldiq.com' }] }).success).toBe(true)
52
+ expect(schema.safeParse({ inputs: [] }).success).toBe(false)
53
+ expect(schema.safeParse({ inputs: Array.from({ length: 5001 }, () => ({ domain: 'x.com' })) }).success).toBe(false)
54
+ })
55
+
56
+ it('find_phone_bulk POSTs the raw inputs body to the phone submit path', async () => {
57
+ await findPhoneBulkHandler({ inputs: [{ first_name: 'Michel', last_name: 'Lieben', company_domain: 'coldiq.com' }] })
58
+ const [method, path, body] = callApiMock.mock.calls[0]
59
+ expect(method).toBe('POST')
60
+ expect(path).toBe('/phone/find/bulk/submit')
61
+ expect(body).toEqual({ inputs: [{ first_name: 'Michel', last_name: 'Lieben', company_domain: 'coldiq.com' }] })
62
+ })
63
+
64
+ it('phone schema accepts 1–5000 inputs and rejects an empty or oversize list', () => {
65
+ const schema = z.object(findPhoneBulkSchema)
66
+ expect(schema.safeParse({ inputs: [{ linkedin_url: 'https://www.linkedin.com/in/michel-lieben' }] }).success).toBe(true)
67
+ expect(schema.safeParse({ inputs: [] }).success).toBe(false)
68
+ expect(schema.safeParse({ inputs: Array.from({ length: 5001 }, () => ({ company_domain: 'x.com' })) }).success).toBe(false)
69
+ })
70
+ })