@coldiq/mcp 0.3.39 → 0.3.41
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/registry.d.ts.map +1 -1
- package/dist/registry.js +17 -5
- package/dist/registry.js.map +1 -1
- package/dist/tools/enrich-company-bulk.d.ts +1 -0
- package/dist/tools/enrich-company-bulk.d.ts.map +1 -1
- package/dist/tools/enrich-company-bulk.js +1 -0
- package/dist/tools/enrich-company-bulk.js.map +1 -1
- package/dist/tools/enrich-company.d.ts +1 -0
- package/dist/tools/enrich-company.d.ts.map +1 -1
- package/dist/tools/enrich-company.js +1 -0
- package/dist/tools/enrich-company.js.map +1 -1
- package/dist/tools/enrich-person-bulk.d.ts +1 -0
- package/dist/tools/enrich-person-bulk.d.ts.map +1 -1
- package/dist/tools/enrich-person-bulk.js +1 -0
- package/dist/tools/enrich-person-bulk.js.map +1 -1
- package/dist/tools/enrich-person.d.ts +1 -0
- package/dist/tools/enrich-person.d.ts.map +1 -1
- package/dist/tools/enrich-person.js +1 -0
- package/dist/tools/enrich-person.js.map +1 -1
- package/dist/tools/find-email.d.ts +1 -0
- package/dist/tools/find-email.d.ts.map +1 -1
- package/dist/tools/find-email.js +1 -0
- package/dist/tools/find-email.js.map +1 -1
- package/dist/tools/find-emails-bulk.d.ts +1 -0
- package/dist/tools/find-emails-bulk.d.ts.map +1 -1
- package/dist/tools/find-emails-bulk.js +1 -0
- package/dist/tools/find-emails-bulk.js.map +1 -1
- package/dist/tools/find-emails.d.ts +1 -0
- package/dist/tools/find-emails.d.ts.map +1 -1
- package/dist/tools/find-emails.js +1 -0
- package/dist/tools/find-emails.js.map +1 -1
- package/dist/tools/find-phone-bulk.d.ts +1 -0
- package/dist/tools/find-phone-bulk.d.ts.map +1 -1
- package/dist/tools/find-phone-bulk.js +1 -0
- package/dist/tools/find-phone-bulk.js.map +1 -1
- package/dist/tools/find-phone.d.ts +1 -0
- package/dist/tools/find-phone.d.ts.map +1 -1
- package/dist/tools/find-phone.js +1 -0
- package/dist/tools/find-phone.js.map +1 -1
- package/dist/tools/verify-email.d.ts +1 -1
- package/dist/tools/verify-email.d.ts.map +1 -1
- package/dist/tools/verify-email.js +1 -1
- package/dist/tools/verify-email.js.map +1 -1
- package/dist/tools/verify-emails-bulk.d.ts +1 -0
- package/dist/tools/verify-emails-bulk.d.ts.map +1 -1
- package/dist/tools/verify-emails-bulk.js +2 -0
- package/dist/tools/verify-emails-bulk.js.map +1 -1
- package/dist/verb-client.d.ts.map +1 -1
- package/dist/verb-client.js +4 -1
- package/dist/verb-client.js.map +1 -1
- package/package.json +1 -1
- package/src/registry.ts +17 -5
- package/src/tools/enrich-company-bulk.ts +1 -0
- package/src/tools/enrich-company.ts +1 -0
- package/src/tools/enrich-person-bulk.ts +1 -0
- package/src/tools/enrich-person.ts +1 -0
- package/src/tools/find-email.ts +1 -0
- package/src/tools/find-emails-bulk.ts +1 -0
- package/src/tools/find-emails.ts +1 -0
- package/src/tools/find-phone-bulk.ts +1 -0
- package/src/tools/find-phone.ts +1 -0
- package/src/tools/verify-email.ts +1 -1
- package/src/tools/verify-emails-bulk.ts +2 -0
- package/src/verb-client.ts +3 -1
- package/tests/gtm/README.md +2 -2
- package/tests/gtm/harness.ts +2 -1
- package/tests/registry-linkupapi.test.ts +2 -2
- package/tests/registry.test.ts +2 -2
|
@@ -16,6 +16,7 @@ export declare const enrichCompanyBulkSchema: {
|
|
|
16
16
|
name?: string | undefined;
|
|
17
17
|
}>, "many">;
|
|
18
18
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
19
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
19
20
|
};
|
|
20
21
|
export declare function enrichCompanyBulkHandler(input: Record<string, unknown>): Promise<{
|
|
21
22
|
content: {
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;;;CAcnC,CAAA;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAG5E"}
|
|
@@ -16,6 +16,7 @@ export const enrichCompanyBulkSchema = {
|
|
|
16
16
|
.max(5000)
|
|
17
17
|
.describe('Companies to enrich (1–5000). Each needs at least one of domain, linkedin_url, or name.'),
|
|
18
18
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
19
|
+
max_credits: z.number().positive().optional().describe('Per-row spend cap: a provider that would enrich the row but costs more than this is skipped (the row comes back not_found rather than overspending).'),
|
|
19
20
|
};
|
|
20
21
|
export async function enrichCompanyBulkHandler(input) {
|
|
21
22
|
const res = await callApi('POST', '/company/enrich/bulk/submit', input);
|
|
@@ -1 +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;
|
|
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;IAChG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sJAAsJ,CAAC;CAC/M,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"}
|
|
@@ -6,6 +6,7 @@ export declare const enrichCompanySchema: {
|
|
|
6
6
|
linkedin_url: z.ZodOptional<z.ZodString>;
|
|
7
7
|
name: z.ZodOptional<z.ZodString>;
|
|
8
8
|
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
9
10
|
};
|
|
10
11
|
export declare function enrichCompanyHandler(input: Record<string, unknown>): Promise<{
|
|
11
12
|
content: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich-company.d.ts","sourceRoot":"","sources":["../../src/tools/enrich-company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,iBAAiB,mBAAmB,CAAA;AAEjD,eAAO,MAAM,wBAAwB,QAEyJ,CAAA;AAE9L,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"enrich-company.d.ts","sourceRoot":"","sources":["../../src/tools/enrich-company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,iBAAiB,mBAAmB,CAAA;AAEjD,eAAO,MAAM,wBAAwB,QAEyJ,CAAA;AAE9L,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAA;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAExE"}
|
|
@@ -9,6 +9,7 @@ export const enrichCompanySchema = {
|
|
|
9
9
|
linkedin_url: z.string().url().optional().describe('Company LinkedIn URL (e.g. "https://www.linkedin.com/company/stripe")'),
|
|
10
10
|
name: z.string().optional().describe('Company name (e.g. "Stripe")'),
|
|
11
11
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('enrich_company').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
12
|
+
max_credits: z.number().positive().optional().describe('Per-record spend cap: a provider that would enrich this company but costs more than this is skipped, so you never pay more than N credits (returns not_found if nothing answers in budget).'),
|
|
12
13
|
};
|
|
13
14
|
export async function enrichCompanyHandler(input) {
|
|
14
15
|
return callVerb('/company/enrich', input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich-company.js","sourceRoot":"","sources":["../../src/tools/enrich-company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAA;AAEjD,MAAM,CAAC,MAAM,wBAAwB,GACnC,kUAAkU;IAClU,4LAA4L,CAAA;AAE9L,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;IAC3H,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACpE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;
|
|
1
|
+
{"version":3,"file":"enrich-company.js","sourceRoot":"","sources":["../../src/tools/enrich-company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAA;AAEjD,MAAM,CAAC,MAAM,wBAAwB,GACnC,kUAAkU;IAClU,4LAA4L,CAAA;AAE9L,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;IAC3H,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACpE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;IACnW,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6LAA6L,CAAC;CACtP,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAA8B;IACvE,OAAO,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC"}
|
|
@@ -25,6 +25,7 @@ export declare const enrichPersonBulkSchema: {
|
|
|
25
25
|
email?: string | undefined;
|
|
26
26
|
}>, "many">;
|
|
27
27
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
28
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
28
29
|
};
|
|
29
30
|
export declare function enrichPersonBulkHandler(input: Record<string, unknown>): Promise<{
|
|
30
31
|
content: {
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;CAiBlC,CAAA;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAG3E"}
|
|
@@ -19,6 +19,7 @@ export const enrichPersonBulkSchema = {
|
|
|
19
19
|
.max(5000)
|
|
20
20
|
.describe('People to enrich (1–5000). Each needs an email, a linkedin_url, or name + company/domain.'),
|
|
21
21
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
22
|
+
max_credits: z.number().positive().optional().describe('Per-row spend cap: a provider that would enrich the row but costs more than this is skipped (the row comes back not_found rather than overspending).'),
|
|
22
23
|
};
|
|
23
24
|
export async function enrichPersonBulkHandler(input) {
|
|
24
25
|
const res = await callApi('POST', '/person/enrich/bulk/submit', input);
|
|
@@ -1 +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;
|
|
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;IAChG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sJAAsJ,CAAC;CAC/M,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"}
|
|
@@ -10,6 +10,7 @@ export declare const enrichPersonSchema: {
|
|
|
10
10
|
linkedin_url: z.ZodOptional<z.ZodString>;
|
|
11
11
|
phone: z.ZodOptional<z.ZodString>;
|
|
12
12
|
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
13
14
|
};
|
|
14
15
|
export declare function enrichPersonHandler(input: Record<string, unknown>): Promise<{
|
|
15
16
|
content: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich-person.d.ts","sourceRoot":"","sources":["../../src/tools/enrich-person.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,gBAAgB,kBAAkB,CAAA;AAE/C,eAAO,MAAM,uBAAuB,QAOiI,CAAA;AAErK,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"enrich-person.d.ts","sourceRoot":"","sources":["../../src/tools/enrich-person.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,gBAAgB,kBAAkB,CAAA;AAE/C,eAAO,MAAM,uBAAuB,QAOiI,CAAA;AAErK,eAAO,MAAM,kBAAkB;;;;;;;;;;CAU9B,CAAA;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAEvE"}
|
|
@@ -18,6 +18,7 @@ export const enrichPersonSchema = {
|
|
|
18
18
|
linkedin_url: z.string().url().optional().describe('LinkedIn profile URL for direct profile lookup (e.g. "https://www.linkedin.com/in/michel-lieben")'),
|
|
19
19
|
phone: z.string().optional().describe('Phone number for reverse phone lookup'),
|
|
20
20
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('enrich_person').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
21
|
+
max_credits: z.number().positive().optional().describe('Per-record spend cap: a provider that would enrich this person but costs more than this is skipped, so you never pay more than N credits (returns not_found if nothing answers in budget).'),
|
|
21
22
|
};
|
|
22
23
|
export async function enrichPersonHandler(input) {
|
|
23
24
|
return callVerb('/person/enrich', input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich-person.js","sourceRoot":"","sources":["../../src/tools/enrich-person.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAA;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAClC,gEAAgE;IAChE,2FAA2F;IAC3F,4EAA4E;IAC5E,8IAA8I;IAC9I,oIAAoI;IACpI,6IAA6I;IAC7I,mKAAmK,CAAA;AAErK,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;IACxH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;IAC/G,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC/D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACtF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;IAC1G,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mGAAmG,CAAC;IACvJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC9E,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;
|
|
1
|
+
{"version":3,"file":"enrich-person.js","sourceRoot":"","sources":["../../src/tools/enrich-person.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAA;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAClC,gEAAgE;IAChE,2FAA2F;IAC3F,4EAA4E;IAC5E,8IAA8I;IAC9I,oIAAoI;IACpI,6IAA6I;IAC7I,mKAAmK,CAAA;AAErK,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;IACxH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;IAC/G,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC/D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACtF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;IAC1G,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mGAAmG,CAAC;IACvJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC9E,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;IAClW,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4LAA4L,CAAC;CACrP,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAA8B;IACtE,OAAO,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -9,6 +9,7 @@ export declare const findEmailSchema: {
|
|
|
9
9
|
linkedin_url: z.ZodOptional<z.ZodString>;
|
|
10
10
|
resolve_current_employer: z.ZodOptional<z.ZodBoolean>;
|
|
11
11
|
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
12
13
|
};
|
|
13
14
|
export declare function findEmailHandler(input: Record<string, unknown>): Promise<{
|
|
14
15
|
content: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-email.d.ts","sourceRoot":"","sources":["../../src/tools/find-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,aAAa,eAAe,CAAA;AAEzC,eAAO,MAAM,oBAAoB,QAI2F,CAAA;AAE5H,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"find-email.d.ts","sourceRoot":"","sources":["../../src/tools/find-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,aAAa,eAAe,CAAA;AAEzC,eAAO,MAAM,oBAAoB,QAI2F,CAAA;AAE5H,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAA;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAEpE"}
|
package/dist/tools/find-email.js
CHANGED
|
@@ -14,6 +14,7 @@ export const findEmailSchema = {
|
|
|
14
14
|
linkedin_url: z.string().optional().describe('LinkedIn profile URL — alternative to name+domain'),
|
|
15
15
|
resolve_current_employer: z.boolean().optional().describe('Opt-in: on a miss with a linkedin_url, enrich the person to resolve their CURRENT employer\'s domain and retry once — recovers stale/acquired input domains (e.g. Atmel→microchip.com). Extra ~1 credit for the enrich hop, disclosed in _meta.employer_resolution. Default false.'),
|
|
16
16
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('find_email').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
17
|
+
max_credits: z.number().positive().optional().describe('Per-record spend cap: a provider that would find the email but costs more than this is skipped, so you never pay more than N credits for one email (returns not_found if nothing answers in budget). Stops one pricey provider (e.g. PDL ~17cr) from dominating a large run.'),
|
|
17
18
|
};
|
|
18
19
|
export async function findEmailHandler(input) {
|
|
19
20
|
return callVerb('/email/find', input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../src/tools/find-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAA;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAC/B,mEAAmE;IACnE,mFAAmF;IACnF,4IAA4I;IAC5I,0HAA0H,CAAA;AAE5H,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACtE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACpF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACjG,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oRAAoR,CAAC;IAC/U,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;
|
|
1
|
+
{"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../src/tools/find-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAA;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAC/B,mEAAmE;IACnE,mFAAmF;IACnF,4IAA4I;IAC5I,0HAA0H,CAAA;AAE5H,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACtE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACpF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACjG,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oRAAoR,CAAC;IAC/U,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;IAC/V,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8QAA8Q,CAAC;CACvU,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAA8B;IACnE,OAAO,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -26,6 +26,7 @@ export declare const findEmailsBulkSchema: {
|
|
|
26
26
|
}>, "many">;
|
|
27
27
|
resolve_current_employer: z.ZodOptional<z.ZodBoolean>;
|
|
28
28
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
29
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
29
30
|
};
|
|
30
31
|
export declare function findEmailsBulkHandler(input: Record<string, unknown>): Promise<{
|
|
31
32
|
content: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-emails-bulk.d.ts","sourceRoot":"","sources":["../../src/tools/find-emails-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kBAAkB,qBAAqB,CAAA;AAEpD,eAAO,MAAM,yBAAyB,QAUwC,CAAA;AAE9E,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"find-emails-bulk.d.ts","sourceRoot":"","sources":["../../src/tools/find-emails-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kBAAkB,qBAAqB,CAAA;AAEpD,eAAO,MAAM,yBAAyB,QAUwC,CAAA;AAE9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBhC,CAAA;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAGzE"}
|
|
@@ -26,6 +26,7 @@ export const findEmailsBulkSchema = {
|
|
|
26
26
|
.describe('People to find emails for (1–5000). Searchable = linkedin_url alone, OR first_name + last_name + (domain or company_name).'),
|
|
27
27
|
resolve_current_employer: z.boolean().optional().describe('Opt-in, applies to every row: when a row misses and has a linkedin_url, enrich the person to resolve their CURRENT employer\'s domain and retry once — recovers stale/acquired input domains (e.g. Atmel→microchip.com). Extra ~1 credit per resolved row. Default false.'),
|
|
28
28
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
29
|
+
max_credits: z.number().positive().optional().describe('Per-row spend cap: a provider that would find the email but costs more than this is skipped (the row comes back not_found rather than overspending). Caps a pricey provider (e.g. PDL ~17cr) across the whole list.'),
|
|
29
30
|
};
|
|
30
31
|
export async function findEmailsBulkHandler(input) {
|
|
31
32
|
const res = await callApi('POST', '/email/find/bulk/submit', input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-emails-bulk.js","sourceRoot":"","sources":["../../src/tools/find-emails-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,yBAAyB,GACpC,kHAAkH;IAClH,mHAAmH;IACnH,oDAAoD;IACpD,yLAAyL;IACzL,qKAAqK;IACrK,mKAAmK;IACnK,mGAAmG;IACnG,wHAAwH;IACxH,0HAA0H;IAC1H,4EAA4E,CAAA;AAE9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yFAAyF,CAAC;QAC7H,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;QACzG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;KAC5H,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,4HAA4H,CAAC;IACzI,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2QAA2Q,CAAC;IACtU,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"find-emails-bulk.js","sourceRoot":"","sources":["../../src/tools/find-emails-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,yBAAyB,GACpC,kHAAkH;IAClH,mHAAmH;IACnH,oDAAoD;IACpD,yLAAyL;IACzL,qKAAqK;IACrK,mKAAmK;IACnK,mGAAmG;IACnG,wHAAwH;IACxH,0HAA0H;IAC1H,4EAA4E,CAAA;AAE9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yFAAyF,CAAC;QAC7H,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;QACzG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;KAC5H,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,4HAA4H,CAAC;IACzI,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2QAA2Q,CAAC;IACtU,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAChG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qNAAqN,CAAC;CAC9Q,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAA8B;IACxE,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"}
|
|
@@ -23,6 +23,7 @@ export declare const findEmailsSchema: {
|
|
|
23
23
|
}>, "many">;
|
|
24
24
|
resolve_current_employer: z.ZodOptional<z.ZodBoolean>;
|
|
25
25
|
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
26
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
26
27
|
};
|
|
27
28
|
type ToolResult = {
|
|
28
29
|
content: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-emails.d.ts","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,qBAAqB,QAUyB,CAAA;AAE3D,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"find-emails.d.ts","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,qBAAqB,QAUyB,CAAA;AAE3D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;CAiB5B,CAAA;AASD,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAMlF,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CA0C3F"}
|
|
@@ -26,6 +26,7 @@ export const findEmailsSchema = {
|
|
|
26
26
|
.describe('People to find emails for (max 50)'),
|
|
27
27
|
resolve_current_employer: z.boolean().optional().describe('Opt-in, applies to every person in the batch: on a miss with a linkedin_url, enrich the person to resolve their CURRENT employer\'s domain and retry once — recovers stale/acquired input domains (e.g. Atmel→microchip.com). Extra ~1 credit per resolved person. Default false.'),
|
|
28
28
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically run the best waterfall — recommended for most use cases. Available providers: ${FIND_EMAILS_PROVIDERS.join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
29
|
+
max_credits: z.number().positive().optional().describe('Per-person spend cap applied to every person in the batch: a provider that would find the email but costs more than this is skipped, so you never pay more than N credits per email. Stops one pricey provider (e.g. PDL ~17cr) from dominating a large run.'),
|
|
29
30
|
};
|
|
30
31
|
// Split large batches into sequential sub-batches so each HTTP call stays well
|
|
31
32
|
// under the server's bulk wall-clock budget (and thus Cloudflare's ~100s edge
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-emails.js","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAA;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAChC,6DAA6D;IAC7D,mEAAmE;IACnE,0EAA0E;IAC1E,uDAAuD;IACvD,0FAA0F;IAC1F,kHAAkH;IAClH,sGAAsG;IACtG,uGAAuG;IACvG,oGAAoG;IACpG,yDAAyD,CAAA;AAE3D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;QACjG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;KAC9H,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,oCAAoC,CAAC;IACjD,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mRAAmR,CAAC;IAC9U,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oKAAoK,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;
|
|
1
|
+
{"version":3,"file":"find-emails.js","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export declare const findPhoneBulkSchema: {
|
|
|
22
22
|
company_domain?: string | undefined;
|
|
23
23
|
}>, "many">;
|
|
24
24
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
25
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
25
26
|
};
|
|
26
27
|
export declare function findPhoneBulkHandler(input: Record<string, unknown>): Promise<{
|
|
27
28
|
content: {
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;;;;;;;;;CAgB/B,CAAA;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAGxE"}
|
|
@@ -18,6 +18,7 @@ export const findPhoneBulkSchema = {
|
|
|
18
18
|
.max(5000)
|
|
19
19
|
.describe('People to find phone numbers for (1–5000). Each needs a linkedin_url, or name + company_domain/name.'),
|
|
20
20
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
21
|
+
max_credits: z.number().positive().optional().describe('Per-row spend cap: a provider that would return a number but costs more than this is skipped (the row comes back not_found rather than overspending). Phone lookups can be 10+ credits — this bounds them.'),
|
|
21
22
|
};
|
|
22
23
|
export async function findPhoneBulkHandler(input) {
|
|
23
24
|
const res = await callApi('POST', '/phone/find/bulk/submit', input);
|
|
@@ -1 +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;
|
|
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;IAChG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4MAA4M,CAAC;CACrQ,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"}
|
|
@@ -8,6 +8,7 @@ export declare const findPhoneSchema: {
|
|
|
8
8
|
company_domain: z.ZodOptional<z.ZodString>;
|
|
9
9
|
company_name: z.ZodOptional<z.ZodString>;
|
|
10
10
|
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
|
+
max_credits: z.ZodOptional<z.ZodNumber>;
|
|
11
12
|
};
|
|
12
13
|
export declare function findPhoneHandler(input: Record<string, unknown>): Promise<{
|
|
13
14
|
content: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-phone.d.ts","sourceRoot":"","sources":["../../src/tools/find-phone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,aAAa,eAAe,CAAA;AAEzC,eAAO,MAAM,oBAAoB,sMAC+J,CAAA;AAEhM,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"find-phone.d.ts","sourceRoot":"","sources":["../../src/tools/find-phone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,aAAa,eAAe,CAAA;AAEzC,eAAO,MAAM,oBAAoB,sMAC+J,CAAA;AAEhM,eAAO,MAAM,eAAe;;;;;;;;CAQ3B,CAAA;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAGpE"}
|
package/dist/tools/find-phone.js
CHANGED
|
@@ -10,6 +10,7 @@ export const findPhoneSchema = {
|
|
|
10
10
|
company_domain: z.string().optional().describe('Company domain, e.g. coldiq.com'),
|
|
11
11
|
company_name: z.string().optional().describe('Company name (alternative to company_domain)'),
|
|
12
12
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('find_phone').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
13
|
+
max_credits: z.number().positive().optional().describe('Per-record spend cap: a provider that would return a number but costs more than this is skipped, so you never pay more than N credits for one phone (returns not_found if nothing answers in budget). Phone lookups can be 10+ credits — this bounds them.'),
|
|
13
14
|
};
|
|
14
15
|
export async function findPhoneHandler(input) {
|
|
15
16
|
// MCP schema predates the verb: `company_domain` → the verb's `domain`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-phone.js","sourceRoot":"","sources":["../../src/tools/find-phone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAA;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAC/B,8LAA8L,CAAA;AAEhM,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACxF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACtF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACjF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAC5F,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;
|
|
1
|
+
{"version":3,"file":"find-phone.js","sourceRoot":"","sources":["../../src/tools/find-phone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAA;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAC/B,8LAA8L,CAAA;AAEhM,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACxF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACtF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACjF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAC5F,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;IAC/V,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4PAA4P,CAAC;CACrT,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAA8B;IACnE,wEAAwE;IACxE,OAAO,QAAQ,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AAChF,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const verifyEmailName = "verify_email";
|
|
3
|
-
export declare const verifyEmailDescription = "Check whether an email address is valid and deliverable. Returns a normalized `status` field \u2014 one of \"valid\", \"invalid\", \"catch_all\", \"risky\", \"disposable\", \"unknown\" \u2014 alongside the raw provider response.
|
|
3
|
+
export declare const verifyEmailDescription = "Check whether an email address is valid and deliverable. Returns a normalized `status` field \u2014 one of \"valid\", \"invalid\", \"catch_all\", \"risky\", \"disposable\", \"unknown\" \u2014 alongside the raw provider response. BounceBan leads the waterfall: it resolves catch-all and risky addresses without sending (the gap most verifiers leave as \"unknown\"); if it cannot conclude, the chain falls through to leadmagic, findymail, icypeas, instantly, and linkupapi. Findymail only distinguishes valid vs invalid. Use before cold outreach to protect sender reputation. ColdIQ automatically runs the waterfall \u2014 pass use_providers only if you need a specific tool.";
|
|
4
4
|
export declare const verifyEmailSchema: {
|
|
5
5
|
email: z.ZodString;
|
|
6
6
|
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-email.d.ts","sourceRoot":"","sources":["../../src/tools/verify-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,eAAe,iBAAiB,CAAA;AAE7C,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"verify-email.d.ts","sourceRoot":"","sources":["../../src/tools/verify-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,eAAe,iBAAiB,CAAA;AAE7C,eAAO,MAAM,sBAAsB,sqBACqmB,CAAA;AAExoB,eAAO,MAAM,iBAAiB;;;CAG7B,CAAA;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAEtE"}
|
|
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { callVerb } from '../verb-client.js';
|
|
3
3
|
import { getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
4
4
|
export const verifyEmailName = 'verify_email';
|
|
5
|
-
export const verifyEmailDescription = 'Check whether an email address is valid and deliverable. Returns a normalized `status` field — one of "valid", "invalid", "catch_all", "risky", "disposable", "unknown" — alongside the raw provider response.
|
|
5
|
+
export const verifyEmailDescription = 'Check whether an email address is valid and deliverable. Returns a normalized `status` field — one of "valid", "invalid", "catch_all", "risky", "disposable", "unknown" — alongside the raw provider response. BounceBan leads the waterfall: it resolves catch-all and risky addresses without sending (the gap most verifiers leave as "unknown"); if it cannot conclude, the chain falls through to leadmagic, findymail, icypeas, instantly, and linkupapi. Findymail only distinguishes valid vs invalid. Use before cold outreach to protect sender reputation. ColdIQ automatically runs the waterfall — pass use_providers only if you need a specific tool.';
|
|
6
6
|
export const verifyEmailSchema = {
|
|
7
7
|
email: z.string().email().describe('Email address to verify'),
|
|
8
8
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('verify_email').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-email.js","sourceRoot":"","sources":["../../src/tools/verify-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAA;AAE7C,MAAM,CAAC,MAAM,sBAAsB,GACjC,
|
|
1
|
+
{"version":3,"file":"verify-email.js","sourceRoot":"","sources":["../../src/tools/verify-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAA;AAE7C,MAAM,CAAC,MAAM,sBAAsB,GACjC,soBAAsoB,CAAA;AAExoB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC7D,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;CAClW,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAA8B;IACrE,OAAO,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -3,6 +3,7 @@ export declare const verifyEmailsBulkName = "verify_emails_bulk";
|
|
|
3
3
|
export declare const verifyEmailsBulkDescription: string;
|
|
4
4
|
export declare const verifyEmailsBulkSchema: {
|
|
5
5
|
emails: z.ZodArray<z.ZodString, "many">;
|
|
6
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
6
7
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
7
8
|
};
|
|
8
9
|
export declare function verifyEmailsBulkHandler(input: Record<string, unknown>): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-emails-bulk.d.ts","sourceRoot":"","sources":["../../src/tools/verify-emails-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,eAAO,MAAM,2BAA2B,
|
|
1
|
+
{"version":3,"file":"verify-emails-bulk.d.ts","sourceRoot":"","sources":["../../src/tools/verify-emails-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,eAAO,MAAM,2BAA2B,QAUQ,CAAA;AAEhD,eAAO,MAAM,sBAAsB;;;;CAIlC,CAAA;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAG3E"}
|
|
@@ -9,9 +9,11 @@ export const verifyEmailsBulkDescription = 'Verify up to 5,000 emails in one ASY
|
|
|
9
9
|
'means the address was SKIPPED (rate-limited / never checked) and is safe to re-submit — do not discard those contacts; ' +
|
|
10
10
|
'only `provider_indeterminate` (or no reason) is a real "couldn\'t determine". ' +
|
|
11
11
|
'The 202 response includes `credits_reserved` (worst-case hold, settled to actual on completion) and a `low_balance_warning` when low. ' +
|
|
12
|
+
'PROVIDER: runs on BounceBan by default — it resolves catch-all/risky addresses without sending (~0.2 credits per conclusively-verified email). If the BounceBan submit fails, the job AUTOMATICALLY falls back to Icypeas (0.1 credits/verified, no catch-all resolution) — bulk verify survives a single-provider outage. Pinning use_providers:["bounceban"] or ["icypeas"] is STRICT: a pinned backend\'s failure returns an error instead of switching. Any other verifier returns a clear error (never silently ignored). ' +
|
|
12
13
|
'For a single email use verify_email instead.';
|
|
13
14
|
export const verifyEmailsBulkSchema = {
|
|
14
15
|
emails: z.array(z.string()).min(1).max(5000).describe('Emails to verify (1–5000). Invalid/duplicate entries are dropped server-side.'),
|
|
16
|
+
use_providers: z.array(z.string()).optional().describe('Provider pin. Omit for the default: BounceBan (catch-all/risky resolution, ~0.2 cr/verified) with automatic Icypeas failover (0.1 cr/verified). An explicit "bounceban" or "icypeas" pin is strict — its backend\'s failure returns an error, never a silent switch. Any other verifier returns a clear error.'),
|
|
15
17
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
16
18
|
};
|
|
17
19
|
export async function verifyEmailsBulkHandler(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-emails-bulk.js","sourceRoot":"","sources":["../../src/tools/verify-emails-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,mHAAmH;IACnH,sIAAsI;IACtI,2HAA2H;IAC3H,4GAA4G;IAC5G,gIAAgI;IAChI,yHAAyH;IACzH,gFAAgF;IAChF,wIAAwI;IACxI,8CAA8C,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,+EAA+E,CAAC;IACtI,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,2BAA2B,EAAE,KAAK,CAAC,CAAA;IACrE,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"}
|
|
1
|
+
{"version":3,"file":"verify-emails-bulk.js","sourceRoot":"","sources":["../../src/tools/verify-emails-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,mHAAmH;IACnH,sIAAsI;IACtI,2HAA2H;IAC3H,4GAA4G;IAC5G,gIAAgI;IAChI,yHAAyH;IACzH,gFAAgF;IAChF,wIAAwI;IACxI,igBAAigB;IACjgB,8CAA8C,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,+EAA+E,CAAC;IACtI,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gTAAgT,CAAC;IACxW,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,2BAA2B,EAAE,KAAK,CAAC,CAAA;IACrE,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verb-client.d.ts","sourceRoot":"","sources":["../src/verb-client.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"verb-client.d.ts","sourceRoot":"","sources":["../src/verb-client.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA6D3E"}
|
package/dist/verb-client.js
CHANGED
|
@@ -8,7 +8,7 @@ export async function callVerb(verbPath, input, opts) {
|
|
|
8
8
|
work[opts.remap[k] ?? k] = v;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
const { use_providers, fields, reveal, resolve_current_employer, ...rest } = work;
|
|
11
|
+
const { use_providers, fields, reveal, resolve_current_employer, max_credits, ...rest } = work;
|
|
12
12
|
// 2. Resolve the provider pin: explicit use_providers wins; otherwise a
|
|
13
13
|
// tool-specific provider field (e.g. search_places `provider`).
|
|
14
14
|
let providerPin = Array.isArray(use_providers) && use_providers.length ? use_providers : undefined;
|
|
@@ -37,6 +37,9 @@ export async function callVerb(verbPath, input, opts) {
|
|
|
37
37
|
envelope.reveal = reveal;
|
|
38
38
|
if (resolve_current_employer !== undefined)
|
|
39
39
|
envelope.resolve_current_employer = resolve_current_employer;
|
|
40
|
+
// Top-level (never inside `input`) so it applies to the single OR bulk envelope.
|
|
41
|
+
if (max_credits !== undefined)
|
|
42
|
+
envelope.max_credits = max_credits;
|
|
40
43
|
const res = await callApi('POST', verbPath, envelope);
|
|
41
44
|
// 4. Re-attach the per-item correlation id to bulk results (positional).
|
|
42
45
|
let data = res.data;
|
package/dist/verb-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verb-client.js","sourceRoot":"","sources":["../src/verb-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AA8BrC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,KAA8B,EAC9B,IAAsB;IAEtB,wEAAwE;IACxE,IAAI,IAAI,GAA4B,KAAK,CAAA;IACzC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;QAChB,IAAI,GAAG,EAAE,CAAA;QACT,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"verb-client.js","sourceRoot":"","sources":["../src/verb-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/registry.ts
CHANGED
|
@@ -1834,11 +1834,23 @@ const findEmailProviders: ProviderEntry[] = [
|
|
|
1834
1834
|
const INSTANTLY_TERMINAL_STATUSES = new Set(['valid', 'invalid', 'unknown', 'risky', 'catch_all', 'disposable'])
|
|
1835
1835
|
|
|
1836
1836
|
const verifyEmailProviders: ProviderEntry[] = [
|
|
1837
|
+
{
|
|
1838
|
+
// Catch-all specialist + cheapest conclusive verifier — leads the chain.
|
|
1839
|
+
id: 'bounceban',
|
|
1840
|
+
endpoint: '/bounceban/verify/single',
|
|
1841
|
+
method: 'POST',
|
|
1842
|
+
priority: 1,
|
|
1843
|
+
mapParams: (input) => ({ body: { email: input.email } }),
|
|
1844
|
+
hasResult: (data) => {
|
|
1845
|
+
const d = data as Record<string, unknown>
|
|
1846
|
+
return d.result === 'deliverable' || d.result === 'undeliverable' || d.result === 'risky'
|
|
1847
|
+
},
|
|
1848
|
+
},
|
|
1837
1849
|
{
|
|
1838
1850
|
id: 'findymail',
|
|
1839
1851
|
endpoint: '/findymail/verify',
|
|
1840
1852
|
method: 'POST',
|
|
1841
|
-
priority:
|
|
1853
|
+
priority: 3,
|
|
1842
1854
|
mapParams: (input) => ({ body: { email: input.email } }),
|
|
1843
1855
|
hasResult: (data) => {
|
|
1844
1856
|
const d = data as Record<string, unknown>
|
|
@@ -1850,7 +1862,7 @@ const verifyEmailProviders: ProviderEntry[] = [
|
|
|
1850
1862
|
id: 'icypeas',
|
|
1851
1863
|
endpoint: '/icypeas/email-verification',
|
|
1852
1864
|
method: 'POST',
|
|
1853
|
-
priority:
|
|
1865
|
+
priority: 4,
|
|
1854
1866
|
mapParams: (input) => ({ body: { email: input.email } }),
|
|
1855
1867
|
hasResult: (data) => {
|
|
1856
1868
|
const d = data as Record<string, unknown>
|
|
@@ -1862,7 +1874,7 @@ const verifyEmailProviders: ProviderEntry[] = [
|
|
|
1862
1874
|
id: 'instantly',
|
|
1863
1875
|
endpoint: '/instantly/email-verification',
|
|
1864
1876
|
method: 'POST',
|
|
1865
|
-
priority:
|
|
1877
|
+
priority: 5,
|
|
1866
1878
|
mapParams: (input) => ({ body: { email: input.email } }),
|
|
1867
1879
|
hasResult: (data) => {
|
|
1868
1880
|
const d = data as Record<string, unknown>
|
|
@@ -1889,7 +1901,7 @@ const verifyEmailProviders: ProviderEntry[] = [
|
|
|
1889
1901
|
id: 'linkupapi-validate',
|
|
1890
1902
|
endpoint: '/linkupapi/data/mail/validate',
|
|
1891
1903
|
method: 'POST',
|
|
1892
|
-
priority:
|
|
1904
|
+
priority: 6,
|
|
1893
1905
|
mapParams: (input) => ({ body: { email: input.email } }),
|
|
1894
1906
|
hasResult: (data) => {
|
|
1895
1907
|
const d = data as Record<string, unknown>
|
|
@@ -1900,7 +1912,7 @@ const verifyEmailProviders: ProviderEntry[] = [
|
|
|
1900
1912
|
id: 'leadmagic',
|
|
1901
1913
|
endpoint: '/leadmagic/people/email-validation',
|
|
1902
1914
|
method: 'POST',
|
|
1903
|
-
priority:
|
|
1915
|
+
priority: 2,
|
|
1904
1916
|
mapParams: (input) => ({ body: { email: input.email } }),
|
|
1905
1917
|
hasResult: (data) => {
|
|
1906
1918
|
const d = data as Record<string, unknown>
|
|
@@ -22,6 +22,7 @@ export const enrichCompanyBulkSchema = {
|
|
|
22
22
|
.max(5000)
|
|
23
23
|
.describe('Companies to enrich (1–5000). Each needs at least one of domain, linkedin_url, or name.'),
|
|
24
24
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
25
|
+
max_credits: z.number().positive().optional().describe('Per-row spend cap: a provider that would enrich the row but costs more than this is skipped (the row comes back not_found rather than overspending).'),
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export async function enrichCompanyBulkHandler(input: Record<string, unknown>) {
|
|
@@ -13,6 +13,7 @@ export const enrichCompanySchema = {
|
|
|
13
13
|
linkedin_url: z.string().url().optional().describe('Company LinkedIn URL (e.g. "https://www.linkedin.com/company/stripe")'),
|
|
14
14
|
name: z.string().optional().describe('Company name (e.g. "Stripe")'),
|
|
15
15
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('enrich_company').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
16
|
+
max_credits: z.number().positive().optional().describe('Per-record spend cap: a provider that would enrich this company but costs more than this is skipped, so you never pay more than N credits (returns not_found if nothing answers in budget).'),
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export async function enrichCompanyHandler(input: Record<string, unknown>) {
|
|
@@ -25,6 +25,7 @@ export const enrichPersonBulkSchema = {
|
|
|
25
25
|
.max(5000)
|
|
26
26
|
.describe('People to enrich (1–5000). Each needs an email, a linkedin_url, or name + company/domain.'),
|
|
27
27
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
28
|
+
max_credits: z.number().positive().optional().describe('Per-row spend cap: a provider that would enrich the row but costs more than this is skipped (the row comes back not_found rather than overspending).'),
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
export async function enrichPersonBulkHandler(input: Record<string, unknown>) {
|
|
@@ -22,6 +22,7 @@ export const enrichPersonSchema = {
|
|
|
22
22
|
linkedin_url: z.string().url().optional().describe('LinkedIn profile URL for direct profile lookup (e.g. "https://www.linkedin.com/in/michel-lieben")'),
|
|
23
23
|
phone: z.string().optional().describe('Phone number for reverse phone lookup'),
|
|
24
24
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('enrich_person').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
25
|
+
max_credits: z.number().positive().optional().describe('Per-record spend cap: a provider that would enrich this person but costs more than this is skipped, so you never pay more than N credits (returns not_found if nothing answers in budget).'),
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export async function enrichPersonHandler(input: Record<string, unknown>) {
|
package/src/tools/find-email.ts
CHANGED
|
@@ -18,6 +18,7 @@ export const findEmailSchema = {
|
|
|
18
18
|
linkedin_url: z.string().optional().describe('LinkedIn profile URL — alternative to name+domain'),
|
|
19
19
|
resolve_current_employer: z.boolean().optional().describe('Opt-in: on a miss with a linkedin_url, enrich the person to resolve their CURRENT employer\'s domain and retry once — recovers stale/acquired input domains (e.g. Atmel→microchip.com). Extra ~1 credit for the enrich hop, disclosed in _meta.employer_resolution. Default false.'),
|
|
20
20
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('find_email').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
21
|
+
max_credits: z.number().positive().optional().describe('Per-record spend cap: a provider that would find the email but costs more than this is skipped, so you never pay more than N credits for one email (returns not_found if nothing answers in budget). Stops one pricey provider (e.g. PDL ~17cr) from dominating a large run.'),
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
export async function findEmailHandler(input: Record<string, unknown>) {
|
|
@@ -32,6 +32,7 @@ export const findEmailsBulkSchema = {
|
|
|
32
32
|
.describe('People to find emails for (1–5000). Searchable = linkedin_url alone, OR first_name + last_name + (domain or company_name).'),
|
|
33
33
|
resolve_current_employer: z.boolean().optional().describe('Opt-in, applies to every row: when a row misses and has a linkedin_url, enrich the person to resolve their CURRENT employer\'s domain and retry once — recovers stale/acquired input domains (e.g. Atmel→microchip.com). Extra ~1 credit per resolved row. Default false.'),
|
|
34
34
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
35
|
+
max_credits: z.number().positive().optional().describe('Per-row spend cap: a provider that would find the email but costs more than this is skipped (the row comes back not_found rather than overspending). Caps a pricey provider (e.g. PDL ~17cr) across the whole list.'),
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
export async function findEmailsBulkHandler(input: Record<string, unknown>) {
|
package/src/tools/find-emails.ts
CHANGED
|
@@ -32,6 +32,7 @@ export const findEmailsSchema = {
|
|
|
32
32
|
.describe('People to find emails for (max 50)'),
|
|
33
33
|
resolve_current_employer: z.boolean().optional().describe('Opt-in, applies to every person in the batch: on a miss with a linkedin_url, enrich the person to resolve their CURRENT employer\'s domain and retry once — recovers stale/acquired input domains (e.g. Atmel→microchip.com). Extra ~1 credit per resolved person. Default false.'),
|
|
34
34
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically run the best waterfall — recommended for most use cases. Available providers: ${FIND_EMAILS_PROVIDERS.join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
35
|
+
max_credits: z.number().positive().optional().describe('Per-person spend cap applied to every person in the batch: a provider that would find the email but costs more than this is skipped, so you never pay more than N credits per email. Stops one pricey provider (e.g. PDL ~17cr) from dominating a large run.'),
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
// Split large batches into sequential sub-batches so each HTTP call stays well
|