@coldiq/mcp 0.3.32 → 0.3.34
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/tools/find-emails-bulk.d.ts +3 -0
- package/dist/tools/find-emails-bulk.d.ts.map +1 -1
- package/dist/tools/find-emails-bulk.js +13 -10
- package/dist/tools/find-emails-bulk.js.map +1 -1
- package/dist/tools/get-bulk-job.d.ts.map +1 -1
- package/dist/tools/get-bulk-job.js +1 -0
- package/dist/tools/get-bulk-job.js.map +1 -1
- package/package.json +1 -1
- package/src/tools/find-emails-bulk.ts +13 -10
- package/src/tools/get-bulk-job.ts +1 -0
|
@@ -7,18 +7,21 @@ export declare const findEmailsBulkSchema: {
|
|
|
7
7
|
first_name: z.ZodOptional<z.ZodString>;
|
|
8
8
|
last_name: z.ZodOptional<z.ZodString>;
|
|
9
9
|
domain: z.ZodOptional<z.ZodString>;
|
|
10
|
+
company_name: z.ZodOptional<z.ZodString>;
|
|
10
11
|
linkedin_url: z.ZodOptional<z.ZodString>;
|
|
11
12
|
}, "strip", z.ZodTypeAny, {
|
|
12
13
|
domain?: string | undefined;
|
|
13
14
|
id?: string | undefined;
|
|
14
15
|
linkedin_url?: string | undefined;
|
|
15
16
|
first_name?: string | undefined;
|
|
17
|
+
company_name?: string | undefined;
|
|
16
18
|
last_name?: string | undefined;
|
|
17
19
|
}, {
|
|
18
20
|
domain?: string | undefined;
|
|
19
21
|
id?: string | undefined;
|
|
20
22
|
linkedin_url?: string | undefined;
|
|
21
23
|
first_name?: string | undefined;
|
|
24
|
+
company_name?: string | undefined;
|
|
22
25
|
last_name?: string | undefined;
|
|
23
26
|
}>, "many">;
|
|
24
27
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
@@ -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,
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;CAgBhC,CAAA;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAGzE"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { callApi } from '../client.js';
|
|
3
3
|
export const findEmailsBulkName = 'find_emails_bulk';
|
|
4
|
-
export const findEmailsBulkDescription = 'Find professional emails for up to 5,000 people in one ASYNC job.
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
'
|
|
10
|
-
'
|
|
11
|
-
'you
|
|
4
|
+
export const findEmailsBulkDescription = 'Find professional emails for up to 5,000 people in one ASYNC job. Each row runs the SAME managed multi-provider ' +
|
|
5
|
+
'waterfall as find_email — a LinkedIn URL is searched directly, so pass it whenever you have it. Returns a job_id ' +
|
|
6
|
+
'immediately — this does NOT return emails inline. ' +
|
|
7
|
+
'Poll get_bulk_job(job_id) until status is "done" (minutes for small jobs, up to a couple of hours for thousands of rows), then read the found/not_found summary and page through rows. ' +
|
|
8
|
+
'A row is searchable with a linkedin_url alone, OR first_name + last_name + (domain or company_name); unsearchable rows come back as not_found and are not charged. ' +
|
|
9
|
+
'Billing is per row, charge-on-success (no upfront reservation; misses are free). A "found" row means an email was LOCATED, not verified deliverable: each row\'s ' +
|
|
10
|
+
'result carries a `confidence` (high/medium/unknown) — treat medium/unknown as unverified and run ' +
|
|
11
|
+
'verify_emails_bulk before sending, or you risk bounces. A located email the provider itself flags as a low-confidence ' +
|
|
12
|
+
'pattern guess comes back as verdict `guessed` instead of `found` and is FREE — never send a `guessed` email unverified. ' +
|
|
13
|
+
'For 50 or fewer people that you want back inline, use find_emails instead.';
|
|
12
14
|
export const findEmailsBulkSchema = {
|
|
13
15
|
people: z
|
|
14
16
|
.array(z.object({
|
|
@@ -16,11 +18,12 @@ export const findEmailsBulkSchema = {
|
|
|
16
18
|
first_name: z.string().optional().describe('First name'),
|
|
17
19
|
last_name: z.string().optional().describe('Last name'),
|
|
18
20
|
domain: z.string().optional().describe('Company domain (e.g. "stripe.com")'),
|
|
19
|
-
|
|
21
|
+
company_name: z.string().optional().describe('Company name — company signal when the domain is unknown.'),
|
|
22
|
+
linkedin_url: z.string().optional().describe('LinkedIn profile URL — searchable on its own; pass it whenever you have it.'),
|
|
20
23
|
}))
|
|
21
24
|
.min(1)
|
|
22
25
|
.max(5000)
|
|
23
|
-
.describe('People to find emails for (1–5000).
|
|
26
|
+
.describe('People to find emails for (1–5000). Searchable = linkedin_url alone, OR first_name + last_name + (domain or company_name).'),
|
|
24
27
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
25
28
|
};
|
|
26
29
|
export async function findEmailsBulkHandler(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,
|
|
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,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACjG,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-bulk-job.d.ts","sourceRoot":"","sources":["../../src/tools/get-bulk-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,cAAc,iBAAiB,CAAA;AAE5C,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"get-bulk-job.d.ts","sourceRoot":"","sources":["../../src/tools/get-bulk-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,cAAc,iBAAiB,CAAA;AAE5C,eAAO,MAAM,qBAAqB,QASsB,CAAA;AAExD,eAAO,MAAM,gBAAgB;;;;CAI5B,CAAA;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GAIrE"}
|
|
@@ -4,6 +4,7 @@ export const getBulkJobName = 'get_bulk_job';
|
|
|
4
4
|
export const getBulkJobDescription = 'Poll any async bulk job (verify_emails_bulk, find_emails_bulk, enrich_person_bulk, enrich_company_bulk, find_phone_bulk). ' +
|
|
5
5
|
'Returns { status, items_total, items_processed, summary, coverage, credits_reserved, credits_charged, page }. Poll until status is "done" (or "timed_out"). ' +
|
|
6
6
|
'Use the `summary` per-verdict counts for totals — do NOT expect all rows inline: rows come one page at a time (default 100). ' +
|
|
7
|
+
'For find jobs, verdict `guessed` means an email was located but the provider marked it a low-confidence pattern guess — it is NOT billed; verify it before sending. ' +
|
|
7
8
|
'The `coverage` block {conclusive, skipped, unverifiable, failed, pending} tells you how much was truly resolved: `skipped` rows (per-row ' +
|
|
8
9
|
'`result.reason` chunk_failed/not_returned/timed_out) were never conclusively checked and are safe to re-submit; `failed` is a hard error (retry unlikely to help). ' +
|
|
9
10
|
'`credits_charged` (null until settled) is the actual spend; `credits_reserved` is the worst-case hold. Each row echoes its submitted `input`, ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-bulk-job.js","sourceRoot":"","sources":["../../src/tools/get-bulk-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAA;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAChC,4HAA4H;IAC5H,8JAA8J;IAC9J,+HAA+H;IAC/H,2IAA2I;IAC3I,qKAAqK;IACrK,gJAAgJ;IAChJ,yIAAyI;IACzI,sDAAsD,CAAA;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACjF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4LAA4L,CAAC;IAC1O,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CACvG,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA8B;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IACjC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,UAAU,EAAE,IAAI,CAAC,CAAA;IAClE,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":"get-bulk-job.js","sourceRoot":"","sources":["../../src/tools/get-bulk-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAA;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAChC,4HAA4H;IAC5H,8JAA8J;IAC9J,+HAA+H;IAC/H,sKAAsK;IACtK,2IAA2I;IAC3I,qKAAqK;IACrK,gJAAgJ;IAChJ,yIAAyI;IACzI,sDAAsD,CAAA;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACjF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4LAA4L,CAAC;IAC1O,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CACvG,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA8B;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IACjC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,UAAU,EAAE,IAAI,CAAC,CAAA;IAClE,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
|
@@ -4,14 +4,16 @@ import { callApi } from '../client.js'
|
|
|
4
4
|
export const findEmailsBulkName = 'find_emails_bulk'
|
|
5
5
|
|
|
6
6
|
export const findEmailsBulkDescription =
|
|
7
|
-
'Find professional emails for up to 5,000 people in one ASYNC job.
|
|
8
|
-
'
|
|
9
|
-
'
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'
|
|
13
|
-
'
|
|
14
|
-
'you
|
|
7
|
+
'Find professional emails for up to 5,000 people in one ASYNC job. Each row runs the SAME managed multi-provider ' +
|
|
8
|
+
'waterfall as find_email — a LinkedIn URL is searched directly, so pass it whenever you have it. Returns a job_id ' +
|
|
9
|
+
'immediately — this does NOT return emails inline. ' +
|
|
10
|
+
'Poll get_bulk_job(job_id) until status is "done" (minutes for small jobs, up to a couple of hours for thousands of rows), then read the found/not_found summary and page through rows. ' +
|
|
11
|
+
'A row is searchable with a linkedin_url alone, OR first_name + last_name + (domain or company_name); unsearchable rows come back as not_found and are not charged. ' +
|
|
12
|
+
'Billing is per row, charge-on-success (no upfront reservation; misses are free). A "found" row means an email was LOCATED, not verified deliverable: each row\'s ' +
|
|
13
|
+
'result carries a `confidence` (high/medium/unknown) — treat medium/unknown as unverified and run ' +
|
|
14
|
+
'verify_emails_bulk before sending, or you risk bounces. A located email the provider itself flags as a low-confidence ' +
|
|
15
|
+
'pattern guess comes back as verdict `guessed` instead of `found` and is FREE — never send a `guessed` email unverified. ' +
|
|
16
|
+
'For 50 or fewer people that you want back inline, use find_emails instead.'
|
|
15
17
|
|
|
16
18
|
export const findEmailsBulkSchema = {
|
|
17
19
|
people: z
|
|
@@ -21,12 +23,13 @@ export const findEmailsBulkSchema = {
|
|
|
21
23
|
first_name: z.string().optional().describe('First name'),
|
|
22
24
|
last_name: z.string().optional().describe('Last name'),
|
|
23
25
|
domain: z.string().optional().describe('Company domain (e.g. "stripe.com")'),
|
|
24
|
-
|
|
26
|
+
company_name: z.string().optional().describe('Company name — company signal when the domain is unknown.'),
|
|
27
|
+
linkedin_url: z.string().optional().describe('LinkedIn profile URL — searchable on its own; pass it whenever you have it.'),
|
|
25
28
|
}),
|
|
26
29
|
)
|
|
27
30
|
.min(1)
|
|
28
31
|
.max(5000)
|
|
29
|
-
.describe('People to find emails for (1–5000).
|
|
32
|
+
.describe('People to find emails for (1–5000). Searchable = linkedin_url alone, OR first_name + last_name + (domain or company_name).'),
|
|
30
33
|
webhook_url: z.string().optional().describe('Optional URL POSTed when the whole job completes.'),
|
|
31
34
|
}
|
|
32
35
|
|
|
@@ -7,6 +7,7 @@ export const getBulkJobDescription =
|
|
|
7
7
|
'Poll any async bulk job (verify_emails_bulk, find_emails_bulk, enrich_person_bulk, enrich_company_bulk, find_phone_bulk). ' +
|
|
8
8
|
'Returns { status, items_total, items_processed, summary, coverage, credits_reserved, credits_charged, page }. Poll until status is "done" (or "timed_out"). ' +
|
|
9
9
|
'Use the `summary` per-verdict counts for totals — do NOT expect all rows inline: rows come one page at a time (default 100). ' +
|
|
10
|
+
'For find jobs, verdict `guessed` means an email was located but the provider marked it a low-confidence pattern guess — it is NOT billed; verify it before sending. ' +
|
|
10
11
|
'The `coverage` block {conclusive, skipped, unverifiable, failed, pending} tells you how much was truly resolved: `skipped` rows (per-row ' +
|
|
11
12
|
'`result.reason` chunk_failed/not_returned/timed_out) were never conclusively checked and are safe to re-submit; `failed` is a hard error (retry unlikely to help). ' +
|
|
12
13
|
'`credits_charged` (null until settled) is the actual spend; `credits_reserved` is the worst-case hold. Each row echoes its submitted `input`, ' +
|