@coldiq/mcp 0.1.9 → 0.1.11
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/executor.d.ts +8 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +26 -12
- package/dist/executor.js.map +1 -1
- package/dist/registry.d.ts +9 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +16 -0
- package/dist/registry.js.map +1 -1
- package/dist/tools/enrich-company.d.ts +2 -1
- package/dist/tools/enrich-company.d.ts.map +1 -1
- package/dist/tools/enrich-company.js +10 -3
- package/dist/tools/enrich-company.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 +10 -2
- package/dist/tools/enrich-person.js.map +1 -1
- package/dist/tools/fetch-page-content.d.ts +1 -0
- package/dist/tools/fetch-page-content.d.ts.map +1 -1
- package/dist/tools/fetch-page-content.js +8 -1
- package/dist/tools/fetch-page-content.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 +9 -2
- package/dist/tools/find-email.js.map +1 -1
- package/dist/tools/find-emails.d.ts +8 -0
- package/dist/tools/find-emails.d.ts.map +1 -1
- package/dist/tools/find-emails.js +64 -33
- package/dist/tools/find-emails.js.map +1 -1
- package/dist/tools/find-influencers.d.ts +1 -0
- package/dist/tools/find-influencers.d.ts.map +1 -1
- package/dist/tools/find-influencers.js +8 -1
- package/dist/tools/find-influencers.js.map +1 -1
- package/dist/tools/find-people.d.ts +1 -0
- package/dist/tools/find-people.d.ts.map +1 -1
- package/dist/tools/find-people.js +12 -5
- package/dist/tools/find-people.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 +9 -2
- package/dist/tools/find-phone.js.map +1 -1
- package/dist/tools/find-signals.d.ts +1 -0
- package/dist/tools/find-signals.d.ts.map +1 -1
- package/dist/tools/find-signals.js +14 -7
- package/dist/tools/find-signals.js.map +1 -1
- package/dist/tools/search-ads.d.ts +1 -0
- package/dist/tools/search-ads.d.ts.map +1 -1
- package/dist/tools/search-ads.js +8 -1
- package/dist/tools/search-ads.js.map +1 -1
- package/dist/tools/search-companies.d.ts +2 -1
- package/dist/tools/search-companies.d.ts.map +1 -1
- package/dist/tools/search-companies.js +9 -2
- package/dist/tools/search-companies.js.map +1 -1
- package/dist/tools/search-jobs.d.ts +1 -0
- package/dist/tools/search-jobs.d.ts.map +1 -1
- package/dist/tools/search-jobs.js +9 -2
- package/dist/tools/search-jobs.js.map +1 -1
- package/dist/tools/search-places.d.ts +1 -0
- package/dist/tools/search-places.d.ts.map +1 -1
- package/dist/tools/search-places.js +8 -1
- package/dist/tools/search-places.js.map +1 -1
- package/dist/tools/search-reddit.d.ts +1 -0
- package/dist/tools/search-reddit.d.ts.map +1 -1
- package/dist/tools/search-reddit.js +8 -1
- package/dist/tools/search-reddit.js.map +1 -1
- package/dist/tools/search-seo.d.ts +1 -0
- package/dist/tools/search-seo.d.ts.map +1 -1
- package/dist/tools/search-seo.js +8 -1
- package/dist/tools/search-seo.js.map +1 -1
- package/dist/tools/search-web.d.ts +1 -0
- package/dist/tools/search-web.d.ts.map +1 -1
- package/dist/tools/search-web.js +10 -2
- package/dist/tools/search-web.js.map +1 -1
- package/dist/tools/verify-email.d.ts +2 -1
- package/dist/tools/verify-email.d.ts.map +1 -1
- package/dist/tools/verify-email.js +9 -2
- package/dist/tools/verify-email.js.map +1 -1
- package/dist/utils/fuzzy.d.ts +13 -0
- package/dist/utils/fuzzy.d.ts.map +1 -0
- package/dist/utils/fuzzy.js +46 -0
- package/dist/utils/fuzzy.js.map +1 -0
- package/dist/utils/provider-resolver.d.ts +34 -0
- package/dist/utils/provider-resolver.d.ts.map +1 -0
- package/dist/utils/provider-resolver.js +235 -0
- package/dist/utils/provider-resolver.js.map +1 -0
- package/package.json +1 -1
- package/src/executor.ts +36 -8
- package/src/registry.ts +20 -0
- package/src/tools/enrich-company.ts +10 -3
- package/src/tools/enrich-person.ts +10 -2
- package/src/tools/fetch-page-content.ts +8 -1
- package/src/tools/find-email.ts +9 -2
- package/src/tools/find-emails.ts +78 -41
- package/src/tools/find-influencers.ts +8 -1
- package/src/tools/find-people.ts +12 -5
- package/src/tools/find-phone.ts +9 -2
- package/src/tools/find-signals.ts +15 -7
- package/src/tools/search-ads.ts +8 -1
- package/src/tools/search-companies.ts +9 -2
- package/src/tools/search-jobs.ts +9 -2
- package/src/tools/search-places.ts +8 -1
- package/src/tools/search-reddit.ts +8 -1
- package/src/tools/search-seo.ts +8 -1
- package/src/tools/search-web.ts +10 -2
- package/src/tools/verify-email.ts +9 -2
- package/src/utils/fuzzy.ts +57 -0
- package/src/utils/provider-resolver.ts +306 -0
- package/tests/executor.test.ts +112 -0
- package/tests/registry.test.ts +22 -1
- package/tests/tools/find-email.test.ts +43 -0
- package/tests/tools/find-emails.test.ts +87 -0
- package/tests/tools/search-companies.test.ts +40 -0
- package/tests/utils/fuzzy.test.ts +63 -0
- package/tests/utils/provider-resolver.test.ts +145 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { executeWithFallback, isExecutionError } from '../executor.js';
|
|
3
|
+
import { resolvePreferredProviders, getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
3
4
|
export const enrichPersonName = 'enrich_person';
|
|
4
5
|
export const enrichPersonDescription = "Look up a person's LinkedIn profile and professional details. " +
|
|
5
6
|
'Accepts either an email address (reverse lookup) or name + company (profile enrichment). ' +
|
|
6
|
-
'Returns LinkedIn URL, headline, location, current role, and profile data.'
|
|
7
|
+
'Returns LinkedIn URL, headline, location, current role, and profile data. ' +
|
|
8
|
+
'ColdIQ automatically picks the best provider based on which input fields are present — pass use_providers only if you need a specific tool.';
|
|
7
9
|
export const enrichPersonSchema = {
|
|
8
10
|
email: z.string().email().optional().describe('Email address for reverse lookup — identify the person behind the email'),
|
|
9
11
|
first_name: z.string().optional().describe("Person's first name (use with last_name + company_name or domain)"),
|
|
@@ -12,9 +14,15 @@ export const enrichPersonSchema = {
|
|
|
12
14
|
domain: z.string().optional().describe('Company domain — alternative to company_name (e.g. "coldiq.com")'),
|
|
13
15
|
linkedin_url: z.string().url().optional().describe('LinkedIn profile URL for direct profile lookup (e.g. "https://www.linkedin.com/in/michel-lieben")'),
|
|
14
16
|
phone: z.string().optional().describe('Phone number for reverse phone lookup'),
|
|
17
|
+
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.`),
|
|
15
18
|
};
|
|
16
19
|
export async function enrichPersonHandler(input) {
|
|
17
|
-
const
|
|
20
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
21
|
+
const resolved = resolvePreferredProviders('enrich_person', restInput, rawUseProviders);
|
|
22
|
+
if (!resolved.ok) {
|
|
23
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error, null, 2) }], isError: true };
|
|
24
|
+
}
|
|
25
|
+
const result = await executeWithFallback('enrich_person', restInput, { providers: resolved.providers, matchedFrom: resolved.matchedFrom });
|
|
18
26
|
if (isExecutionError(result)) {
|
|
19
27
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], isError: true };
|
|
20
28
|
}
|
|
@@ -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,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
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,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAA;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAClC,gEAAgE;IAChE,2FAA2F;IAC3F,4EAA4E;IAC5E,6IAA6I,CAAA;AAE/I,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;CACnW,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAA8B;IACtE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAA;IAC9D,MAAM,QAAQ,GAAG,yBAAyB,CAAC,eAAe,EAAE,SAAS,EAAE,eAAe,CAAC,CAAA;IACvF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC/G,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1I,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACvG,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACxF,CAAC"}
|
|
@@ -5,6 +5,7 @@ export declare const fetchPageContentSchema: {
|
|
|
5
5
|
urls: z.ZodArray<z.ZodString, "many">;
|
|
6
6
|
include_text: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
7
7
|
include_summary: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
8
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
8
9
|
};
|
|
9
10
|
export declare function fetchPageContentHandler(input: Record<string, unknown>): Promise<{
|
|
10
11
|
content: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-page-content.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-page-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"fetch-page-content.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-page-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,eAAO,MAAM,2BAA2B,QAIH,CAAA;AAErC,eAAO,MAAM,sBAAsB;;;;;CAiBlC,CAAA;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAW3E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { executeWithFallback, isExecutionError } from '../executor.js';
|
|
3
|
+
import { resolvePreferredProviders, getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
3
4
|
export const fetchPageContentName = 'fetch_page_content';
|
|
4
5
|
export const fetchPageContentDescription = 'Fetch the full text content of one or more web pages given their URLs. ' +
|
|
5
6
|
'Returns extracted page text suitable for RAG, summarisation, or fact extraction. ' +
|
|
@@ -21,9 +22,15 @@ export const fetchPageContentSchema = {
|
|
|
21
22
|
.optional()
|
|
22
23
|
.default(false)
|
|
23
24
|
.describe('Generate a summary for each page in addition to the text (default: false).'),
|
|
25
|
+
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('fetch_page_content').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
24
26
|
};
|
|
25
27
|
export async function fetchPageContentHandler(input) {
|
|
26
|
-
const
|
|
28
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
29
|
+
const resolved = resolvePreferredProviders('fetch_page_content', restInput, rawUseProviders);
|
|
30
|
+
if (!resolved.ok) {
|
|
31
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error, null, 2) }], isError: true };
|
|
32
|
+
}
|
|
33
|
+
const result = await executeWithFallback('fetch_page_content', restInput, { providers: resolved.providers, matchedFrom: resolved.matchedFrom });
|
|
27
34
|
if (isExecutionError(result)) {
|
|
28
35
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], isError: true };
|
|
29
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-page-content.js","sourceRoot":"","sources":["../../src/tools/fetch-page-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"fetch-page-content.js","sourceRoot":"","sources":["../../src/tools/fetch-page-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAEpG,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAA;AAExD,MAAM,CAAC,MAAM,2BAA2B,GACtC,yEAAyE;IACzE,mFAAmF;IACnF,sFAAsF;IACtF,mCAAmC,CAAA;AAErC,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,oDAAoD,CAAC;IACjE,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,4EAA4E,CAAC;IACzF,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gLAAgL,yBAAyB,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;CACxW,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAA8B;IAC1E,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAA;IAC9D,MAAM,QAAQ,GAAG,yBAAyB,CAAC,oBAAoB,EAAE,SAAS,EAAE,eAAe,CAAC,CAAA;IAC5F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC/G,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/I,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACvG,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACxF,CAAC"}
|
|
@@ -7,6 +7,7 @@ export declare const findEmailSchema: {
|
|
|
7
7
|
domain: z.ZodOptional<z.ZodString>;
|
|
8
8
|
company_name: z.ZodOptional<z.ZodString>;
|
|
9
9
|
linkedin_url: z.ZodOptional<z.ZodString>;
|
|
10
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
11
|
};
|
|
11
12
|
export declare function findEmailHandler(input: Record<string, unknown>): Promise<{
|
|
12
13
|
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;
|
|
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;;;;;;;CAO3B,CAAA;AAwBD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAmBpE"}
|
package/dist/tools/find-email.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { executeWithFallback, isExecutionError } from '../executor.js';
|
|
3
|
+
import { resolvePreferredProviders, getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
3
4
|
export const findEmailName = 'find_email';
|
|
4
5
|
export const findEmailDescription = "Find a person's professional email given their name and company. " +
|
|
5
6
|
'For more than one person, ALWAYS use find_emails instead — never loop this tool. ' +
|
|
@@ -11,6 +12,7 @@ export const findEmailSchema = {
|
|
|
11
12
|
domain: z.string().optional().describe('Company domain (e.g. "stripe.com")'),
|
|
12
13
|
company_name: z.string().optional().describe('Company name — alternative to domain'),
|
|
13
14
|
linkedin_url: z.string().optional().describe('LinkedIn profile URL — alternative to name+domain'),
|
|
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('find_email').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
14
16
|
};
|
|
15
17
|
const inputSchema = z
|
|
16
18
|
.object({
|
|
@@ -33,7 +35,12 @@ const inputSchema = z
|
|
|
33
35
|
}
|
|
34
36
|
});
|
|
35
37
|
export async function findEmailHandler(input) {
|
|
36
|
-
const
|
|
38
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
39
|
+
const resolved = resolvePreferredProviders('find_email', restInput, rawUseProviders);
|
|
40
|
+
if (!resolved.ok) {
|
|
41
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error, null, 2) }], isError: true };
|
|
42
|
+
}
|
|
43
|
+
const validation = inputSchema.safeParse(restInput);
|
|
37
44
|
if (!validation.success) {
|
|
38
45
|
const msg = validation.error.issues.map((i) => i.message).join('; ');
|
|
39
46
|
return {
|
|
@@ -41,7 +48,7 @@ export async function findEmailHandler(input) {
|
|
|
41
48
|
isError: true,
|
|
42
49
|
};
|
|
43
50
|
}
|
|
44
|
-
const result = await executeWithFallback('find_email',
|
|
51
|
+
const result = await executeWithFallback('find_email', restInput, { providers: resolved.providers, matchedFrom: resolved.matchedFrom });
|
|
45
52
|
if (isExecutionError(result)) {
|
|
46
53
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], isError: true };
|
|
47
54
|
}
|
|
@@ -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,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../src/tools/find-email.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,19 @@ export declare const findEmailsSchema: {
|
|
|
21
21
|
first_name?: string | undefined;
|
|
22
22
|
last_name?: string | undefined;
|
|
23
23
|
}>, "many">;
|
|
24
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
24
25
|
};
|
|
25
26
|
export declare function findEmailsHandler(input: Record<string, unknown>): Promise<{
|
|
26
27
|
content: {
|
|
27
28
|
type: "text";
|
|
28
29
|
text: string;
|
|
29
30
|
}[];
|
|
31
|
+
isError: boolean;
|
|
32
|
+
} | {
|
|
33
|
+
content: {
|
|
34
|
+
type: "text";
|
|
35
|
+
text: string;
|
|
36
|
+
}[];
|
|
37
|
+
isError?: undefined;
|
|
30
38
|
}>;
|
|
31
39
|
//# sourceMappingURL=find-emails.d.ts.map
|
|
@@ -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;
|
|
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,QAQqE,CAAA;AAEvG,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAe5B,CAAA;AA+HD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAoFrE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { callApi } from '../client.js';
|
|
3
|
+
import { resolvePreferredProviders, buildAllFailedError, FIND_EMAILS_PROVIDERS } from '../utils/provider-resolver.js';
|
|
3
4
|
export const findEmailsName = 'find_emails';
|
|
4
5
|
export const findEmailsDescription = 'Find professional emails for multiple people in one batch. ' +
|
|
5
6
|
'Uses Prospeo bulk first; for any misses, runs FullEnrich and FindyMail/IcyPeas in parallel — ' +
|
|
@@ -7,7 +8,8 @@ export const findEmailsDescription = 'Find professional emails for multiple peop
|
|
|
7
8
|
'Much faster than calling find_email one-by-one. Max 50 people per call. ' +
|
|
8
9
|
'Each person needs a unique id to match results back. ' +
|
|
9
10
|
'Always pass first_name, last_name, and domain — they are the primary enrichment signal. ' +
|
|
10
|
-
'Also pass linkedin_url when available, but never rely on it alone as some providers cannot resolve vanity URLs.'
|
|
11
|
+
'Also pass linkedin_url when available, but never rely on it alone as some providers cannot resolve vanity URLs. ' +
|
|
12
|
+
'ColdIQ automatically picks the best waterfall — pass use_providers only if you need specific tools.';
|
|
11
13
|
export const findEmailsSchema = {
|
|
12
14
|
people: z
|
|
13
15
|
.array(z.object({
|
|
@@ -20,6 +22,7 @@ export const findEmailsSchema = {
|
|
|
20
22
|
.min(1)
|
|
21
23
|
.max(50)
|
|
22
24
|
.describe('People to find emails for (max 50)'),
|
|
25
|
+
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.`),
|
|
23
26
|
};
|
|
24
27
|
function sleep(ms) {
|
|
25
28
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -76,7 +79,9 @@ async function fullEnrichStep(misses, results) {
|
|
|
76
79
|
return;
|
|
77
80
|
}
|
|
78
81
|
}
|
|
79
|
-
async function findymailIcypeasStep(misses, results) {
|
|
82
|
+
async function findymailIcypeasStep(misses, results, allowedProviders) {
|
|
83
|
+
const useFindymail = !allowedProviders || allowedProviders.includes('findymail');
|
|
84
|
+
const useIcypeas = !allowedProviders || allowedProviders.includes('icypeas');
|
|
80
85
|
await Promise.all(misses.map(async (person) => {
|
|
81
86
|
const hit = results.find((r) => r.id === person.id);
|
|
82
87
|
if (!hit)
|
|
@@ -84,20 +89,22 @@ async function findymailIcypeasStep(misses, results) {
|
|
|
84
89
|
// Skip if the parallel FullEnrich branch already filled this person.
|
|
85
90
|
if (hit.email)
|
|
86
91
|
return;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
name
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
if (useFindymail) {
|
|
93
|
+
const fullName = [person.first_name, person.last_name].filter(Boolean).join(' ');
|
|
94
|
+
const fmRes = await callApi('POST', '/findymail/search/name', {
|
|
95
|
+
name: fullName,
|
|
96
|
+
domain: person.domain,
|
|
97
|
+
});
|
|
98
|
+
if (!hit.email && fmRes.ok) {
|
|
99
|
+
const d = fmRes.data;
|
|
100
|
+
if (typeof d.email === 'string' && d.email.includes('@')) {
|
|
101
|
+
hit.email = d.email;
|
|
102
|
+
hit.provider = 'findymail';
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
98
105
|
}
|
|
99
106
|
}
|
|
100
|
-
if (hit.email)
|
|
107
|
+
if (hit.email || !useIcypeas)
|
|
101
108
|
return;
|
|
102
109
|
const icyRes = await callApi('POST', '/icypeas/email-search', {
|
|
103
110
|
firstname: person.first_name,
|
|
@@ -119,29 +126,38 @@ async function findymailIcypeasStep(misses, results) {
|
|
|
119
126
|
}));
|
|
120
127
|
}
|
|
121
128
|
export async function findEmailsHandler(input) {
|
|
122
|
-
const
|
|
129
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
130
|
+
const people = restInput.people;
|
|
131
|
+
const resolved = resolvePreferredProviders('find_emails', restInput, rawUseProviders);
|
|
132
|
+
if (!resolved.ok) {
|
|
133
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error, null, 2) }], isError: true };
|
|
134
|
+
}
|
|
135
|
+
const allowedProviders = resolved.providers;
|
|
136
|
+
const isConstrained = allowedProviders.length > 0;
|
|
123
137
|
const results = people.map((p) => ({ id: p.id, email: null, provider: null }));
|
|
124
138
|
// Step 1: Prospeo bulk — 1 call for all people
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
hit
|
|
139
|
-
|
|
139
|
+
if (!isConstrained || allowedProviders.includes('prospeo')) {
|
|
140
|
+
const bulkBody = {
|
|
141
|
+
data: people.map((p) => p.linkedin_url
|
|
142
|
+
? { identifier: p.id, linkedin_url: p.linkedin_url }
|
|
143
|
+
: { identifier: p.id, first_name: p.first_name, last_name: p.last_name, company_name: p.domain }),
|
|
144
|
+
};
|
|
145
|
+
const bulkRes = await callApi('POST', '/prospeo/bulk-enrich-person', bulkBody);
|
|
146
|
+
if (bulkRes.ok) {
|
|
147
|
+
const data = bulkRes.data;
|
|
148
|
+
for (const item of data.results ?? []) {
|
|
149
|
+
const email = item.person?.email?.email;
|
|
150
|
+
if (typeof email === 'string' && email.includes('@')) {
|
|
151
|
+
const hit = results.find((r) => r.id === item.identifier);
|
|
152
|
+
if (hit) {
|
|
153
|
+
hit.email = email;
|
|
154
|
+
hit.provider = 'prospeo';
|
|
155
|
+
}
|
|
140
156
|
}
|
|
141
157
|
}
|
|
142
158
|
}
|
|
143
159
|
}
|
|
144
|
-
// Steps 2 & 3 run concurrently for
|
|
160
|
+
// Steps 2 & 3 run concurrently for misses.
|
|
145
161
|
// Step 2: FullEnrich bulk async (slow tail, better European coverage)
|
|
146
162
|
// Step 3: per-person FindyMail → IcyPeas waterfall
|
|
147
163
|
// Both branches write to the shared `results` array; every write site checks
|
|
@@ -149,14 +165,29 @@ export async function findEmailsHandler(input) {
|
|
|
149
165
|
// other does not overwrite.
|
|
150
166
|
const misses = missesOf(people, results);
|
|
151
167
|
if (misses.length > 0) {
|
|
152
|
-
|
|
168
|
+
const steps = [];
|
|
169
|
+
if (!isConstrained || allowedProviders.includes('fullenrich')) {
|
|
170
|
+
steps.push(fullEnrichStep(misses, results));
|
|
171
|
+
}
|
|
172
|
+
if (!isConstrained || allowedProviders.includes('findymail') || allowedProviders.includes('icypeas')) {
|
|
173
|
+
steps.push(findymailIcypeasStep(misses, results, isConstrained ? allowedProviders : undefined));
|
|
174
|
+
}
|
|
175
|
+
if (steps.length > 0)
|
|
176
|
+
await Promise.all(steps);
|
|
153
177
|
}
|
|
154
178
|
const found = results.filter((r) => r.email !== null).length;
|
|
179
|
+
if (isConstrained && found === 0) {
|
|
180
|
+
const err = buildAllFailedError(allowedProviders, 'find_emails', FIND_EMAILS_PROVIDERS);
|
|
181
|
+
return { content: [{ type: 'text', text: JSON.stringify(err, null, 2) }], isError: true };
|
|
182
|
+
}
|
|
183
|
+
const meta = resolved.matchedFrom && Object.keys(resolved.matchedFrom).length > 0
|
|
184
|
+
? { matchedFrom: resolved.matchedFrom }
|
|
185
|
+
: undefined;
|
|
155
186
|
return {
|
|
156
187
|
content: [
|
|
157
188
|
{
|
|
158
189
|
type: 'text',
|
|
159
|
-
text: JSON.stringify({ data: { results, found, total: people.length } }, null, 2),
|
|
190
|
+
text: JSON.stringify({ data: { results, found, total: people.length }, ...(meta ? { _meta: meta } : {}) }, null, 2),
|
|
160
191
|
},
|
|
161
192
|
],
|
|
162
193
|
};
|
|
@@ -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,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"find-emails.js","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare const findInfluencersSchema: {
|
|
|
12
12
|
gender: z.ZodOptional<z.ZodEnum<["male", "female"]>>;
|
|
13
13
|
type: z.ZodOptional<z.ZodEnum<["creator", "business"]>>;
|
|
14
14
|
handle: z.ZodOptional<z.ZodString>;
|
|
15
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
15
16
|
};
|
|
16
17
|
export declare function findInfluencersHandler(input: Record<string, unknown>): Promise<{
|
|
17
18
|
content: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-influencers.d.ts","sourceRoot":"","sources":["../../src/tools/find-influencers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"find-influencers.d.ts","sourceRoot":"","sources":["../../src/tools/find-influencers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,mBAAmB,qBAAqB,CAAA;AAErD,eAAO,MAAM,0BAA0B,2aACyX,CAAA;AAEha,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CAkBjC,CAAA;AAED,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAW1E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { executeWithFallback, isExecutionError } from '../executor.js';
|
|
3
|
+
import { resolvePreferredProviders, getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
3
4
|
export const findInfluencersName = 'find_influencers';
|
|
4
5
|
export const findInfluencersDescription = 'Discover and find influencers/creators on Instagram, YouTube, TikTok, Twitch, Twitter, and OnlyFans via 2 providers (Influencers Club Similar, Influencers Club Discovery). Routes by input: handle set → lookalike search (influencers_similar) runs first; no handle → keyword/filter discovery. Filters: location, gender, type (creator/business), AI natural language search, sort. Cost: 1 credit per result returned.';
|
|
5
6
|
export const findInfluencersSchema = {
|
|
@@ -19,9 +20,15 @@ export const findInfluencersSchema = {
|
|
|
19
20
|
type: z.enum(['creator', 'business']).optional(),
|
|
20
21
|
handle: z.string().optional()
|
|
21
22
|
.describe('Find creators similar to this handle. Routes to lookalike search. No @ prefix.'),
|
|
23
|
+
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_influencers').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
22
24
|
};
|
|
23
25
|
export async function findInfluencersHandler(input) {
|
|
24
|
-
const
|
|
26
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
27
|
+
const resolved = resolvePreferredProviders('find_influencers', restInput, rawUseProviders);
|
|
28
|
+
if (!resolved.ok) {
|
|
29
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error, null, 2) }], isError: true };
|
|
30
|
+
}
|
|
31
|
+
const result = await executeWithFallback('find_influencers', restInput, { providers: resolved.providers, matchedFrom: resolved.matchedFrom });
|
|
25
32
|
if (isExecutionError(result)) {
|
|
26
33
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], isError: true };
|
|
27
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-influencers.js","sourceRoot":"","sources":["../../src/tools/find-influencers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"find-influencers.js","sourceRoot":"","sources":["../../src/tools/find-influencers.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export declare const findPeopleSchema: {
|
|
|
9
9
|
locations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
10
|
keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
11
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
13
|
};
|
|
13
14
|
export declare function findPeopleHandler(input: Record<string, unknown>): Promise<{
|
|
14
15
|
content: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-people.d.ts","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"find-people.d.ts","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,qBAAqB,QAS0B,CAAA;AAE5D,eAAO,MAAM,gBAAgB;;;;;;;;;CAS5B,CAAA;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GA6CrE"}
|
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { executeWithFallback, isExecutionError } from '../executor.js';
|
|
3
3
|
import { callApi } from '../client.js';
|
|
4
4
|
import { getProviders } from '../registry.js';
|
|
5
|
+
import { resolvePreferredProviders, getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
5
6
|
export const findPeopleName = 'find_people';
|
|
6
7
|
export const findPeopleDescription = 'Find people at specific companies by job title. ' +
|
|
7
8
|
'Use this — never search_web — to find contacts, executives, or LinkedIn profiles at known companies. ' +
|
|
@@ -20,24 +21,30 @@ export const findPeopleSchema = {
|
|
|
20
21
|
locations: z.array(z.string()).optional().describe('Person or company locations'),
|
|
21
22
|
keywords: z.array(z.string()).optional().describe('Free-text keyword search terms (e.g. ["growth", "AI"])'),
|
|
22
23
|
limit: z.number().min(1).max(500).default(25).describe('Max results across all companies combined (default: 25, max: 500). For multiple companies multiply: e.g. 10 companies × 5 each = 50.'),
|
|
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('find_people').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
23
25
|
};
|
|
24
26
|
export async function findPeopleHandler(input) {
|
|
25
|
-
const
|
|
27
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
28
|
+
const resolved = resolvePreferredProviders('find_people', restInput, rawUseProviders);
|
|
29
|
+
if (!resolved.ok) {
|
|
30
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error, null, 2) }], isError: true };
|
|
31
|
+
}
|
|
32
|
+
const result = await executeWithFallback('find_people', restInput, { providers: resolved.providers, matchedFrom: resolved.matchedFrom });
|
|
26
33
|
if (isExecutionError(result)) {
|
|
27
34
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], isError: true };
|
|
28
35
|
}
|
|
29
36
|
// Gap-fill: if LeadsFactory missed some domains, try Apollo for those.
|
|
30
37
|
// Only runs when domains were the input — if we sent LinkedIn URLs, no_results_domains
|
|
31
38
|
// is unreliable (LF may resolve arbitrary domains from URLs, e.g. linkedin.com itself).
|
|
32
|
-
const inputHadDomains = Array.isArray(
|
|
33
|
-
const inputHadLinkedInUrls = Array.isArray(
|
|
34
|
-
if (result._meta.provider === 'leadsfactory' && inputHadDomains && !inputHadLinkedInUrls) {
|
|
39
|
+
const inputHadDomains = Array.isArray(restInput.company_domains) && restInput.company_domains.length > 0;
|
|
40
|
+
const inputHadLinkedInUrls = Array.isArray(restInput.company_linkedin_urls) && restInput.company_linkedin_urls.length > 0;
|
|
41
|
+
if (resolved.providers.length === 0 && result._meta.provider === 'leadsfactory' && inputHadDomains && !inputHadLinkedInUrls) {
|
|
35
42
|
const data = result.data;
|
|
36
43
|
const missedDomains = data.no_results_domains ?? [];
|
|
37
44
|
if (missedDomains.length > 0) {
|
|
38
45
|
const apollo = getProviders('find_people').find((p) => p.id === 'apollo');
|
|
39
46
|
if (apollo) {
|
|
40
|
-
const gapInput = { ...
|
|
47
|
+
const gapInput = { ...restInput, company_domains: missedDomains, company_linkedin_urls: undefined };
|
|
41
48
|
const payload = apollo.mapParams(gapInput);
|
|
42
49
|
const apolloRes = await callApi(apollo.method, apollo.endpoint, payload.body, payload.queryParams);
|
|
43
50
|
if (apolloRes.ok && apollo.hasResult(apolloRes.data)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-people.js","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"find-people.js","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export declare const findPhoneSchema: {
|
|
|
7
7
|
last_name: z.ZodOptional<z.ZodString>;
|
|
8
8
|
company_domain: z.ZodOptional<z.ZodString>;
|
|
9
9
|
company_name: z.ZodOptional<z.ZodString>;
|
|
10
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
11
|
};
|
|
11
12
|
export declare function findPhoneHandler(input: Record<string, unknown>): Promise<{
|
|
12
13
|
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;
|
|
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;;;;;;;CAO3B,CAAA;AAwBD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAmBpE"}
|
package/dist/tools/find-phone.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { executeWithFallback, isExecutionError } from '../executor.js';
|
|
3
|
+
import { resolvePreferredProviders, getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
3
4
|
export const findPhoneName = 'find_phone';
|
|
4
5
|
export const findPhoneDescription = 'Find a direct phone number for a person. Accepts a LinkedIn URL, or first+last name with company domain/name. Phone lookups are expensive (10+ credits) — use only when specifically needed.';
|
|
5
6
|
export const findPhoneSchema = {
|
|
@@ -8,6 +9,7 @@ export const findPhoneSchema = {
|
|
|
8
9
|
last_name: z.string().optional().describe('Last name (required when no LinkedIn URL)'),
|
|
9
10
|
company_domain: z.string().optional().describe('Company domain, e.g. coldiq.com'),
|
|
10
11
|
company_name: z.string().optional().describe('Company name (alternative to company_domain)'),
|
|
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.`),
|
|
11
13
|
};
|
|
12
14
|
const inputSchema = z
|
|
13
15
|
.object({
|
|
@@ -31,7 +33,12 @@ const inputSchema = z
|
|
|
31
33
|
}
|
|
32
34
|
});
|
|
33
35
|
export async function findPhoneHandler(input) {
|
|
34
|
-
const
|
|
36
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
37
|
+
const resolved = resolvePreferredProviders('find_phone', restInput, rawUseProviders);
|
|
38
|
+
if (!resolved.ok) {
|
|
39
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error, null, 2) }], isError: true };
|
|
40
|
+
}
|
|
41
|
+
const validation = inputSchema.safeParse(restInput);
|
|
35
42
|
if (!validation.success) {
|
|
36
43
|
const msg = validation.error.issues.map((i) => i.message).join('; ');
|
|
37
44
|
return {
|
|
@@ -39,7 +46,7 @@ export async function findPhoneHandler(input) {
|
|
|
39
46
|
isError: true,
|
|
40
47
|
};
|
|
41
48
|
}
|
|
42
|
-
const result = await executeWithFallback('find_phone',
|
|
49
|
+
const result = await executeWithFallback('find_phone', restInput, { providers: resolved.providers, matchedFrom: resolved.matchedFrom });
|
|
43
50
|
if (isExecutionError(result)) {
|
|
44
51
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], isError: true };
|
|
45
52
|
}
|
|
@@ -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,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"find-phone.js","sourceRoot":"","sources":["../../src/tools/find-phone.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export declare const findSignalsSchema: {
|
|
|
9
9
|
industries: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
10
|
countries: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
11
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
13
|
};
|
|
13
14
|
export declare function findSignalsHandler(input: Record<string, unknown>): Promise<{
|
|
14
15
|
content: {
|