@coldiq/mcp 0.4.1 → 0.4.3
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/provider-availability.d.ts +3 -0
- package/dist/provider-availability.d.ts.map +1 -0
- package/dist/provider-availability.js +25 -0
- package/dist/provider-availability.js.map +1 -0
- package/dist/registry.d.ts +7 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +31 -20
- package/dist/registry.js.map +1 -1
- package/dist/tools/call-endpoint.js +1 -1
- package/dist/tools/call-endpoint.js.map +1 -1
- package/dist/tools/extract-post-engagement.d.ts.map +1 -1
- package/dist/tools/extract-post-engagement.js +2 -2
- package/dist/tools/extract-post-engagement.js.map +1 -1
- package/dist/tools/fetch-page-content.d.ts.map +1 -1
- package/dist/tools/fetch-page-content.js +1 -1
- package/dist/tools/fetch-page-content.js.map +1 -1
- package/dist/tools/find-email.js +2 -2
- package/dist/tools/find-email.js.map +1 -1
- package/dist/tools/find-emails-bulk.js +2 -2
- package/dist/tools/find-emails-bulk.js.map +1 -1
- package/dist/tools/find-emails.js +2 -2
- package/dist/tools/find-emails.js.map +1 -1
- package/dist/tools/find-influencers.js +2 -2
- package/dist/tools/find-influencers.js.map +1 -1
- package/dist/tools/find-people.d.ts.map +1 -1
- package/dist/tools/find-people.js +2 -2
- package/dist/tools/find-people.js.map +1 -1
- package/dist/tools/find-phone-bulk.d.ts.map +1 -1
- package/dist/tools/find-phone-bulk.js +2 -2
- package/dist/tools/find-phone-bulk.js.map +1 -1
- package/dist/tools/find-phone.d.ts +1 -1
- package/dist/tools/find-phone.d.ts.map +1 -1
- package/dist/tools/find-phone.js +2 -2
- package/dist/tools/find-phone.js.map +1 -1
- package/dist/tools/get-endpoint-details.js +2 -2
- package/dist/tools/get-endpoint-details.js.map +1 -1
- package/dist/tools/get-place-reviews.d.ts.map +1 -1
- package/dist/tools/get-place-reviews.js +2 -2
- package/dist/tools/get-place-reviews.js.map +1 -1
- package/dist/tools/list-data-sources.js +2 -2
- package/dist/tools/list-data-sources.js.map +1 -1
- package/dist/tools/search-ads.d.ts +1 -1
- package/dist/tools/search-ads.d.ts.map +1 -1
- package/dist/tools/search-ads.js +2 -2
- package/dist/tools/search-ads.js.map +1 -1
- package/dist/tools/search-companies.d.ts.map +1 -1
- package/dist/tools/search-companies.js +5 -5
- package/dist/tools/search-companies.js.map +1 -1
- package/dist/tools/search-places.d.ts +1 -1
- package/dist/tools/search-places.js +1 -1
- package/dist/tools/search-reddit.d.ts +1 -1
- package/dist/tools/search-reddit.d.ts.map +1 -1
- package/dist/tools/search-reddit.js +2 -2
- package/dist/tools/search-reddit.js.map +1 -1
- package/dist/tools/verify-emails-bulk.js +1 -1
- package/dist/tools/verify-emails-bulk.js.map +1 -1
- package/dist/utils/provider-display.js +5 -5
- package/dist/utils/provider-display.js.map +1 -1
- package/dist/utils/provider-resolver.d.ts +1 -0
- package/dist/utils/provider-resolver.d.ts.map +1 -1
- package/dist/utils/provider-resolver.js +3 -1
- package/dist/utils/provider-resolver.js.map +1 -1
- package/package.json +1 -1
- package/src/provider-availability.ts +27 -0
- package/src/registry.ts +35 -19
- package/src/tools/call-endpoint.ts +1 -1
- package/src/tools/extract-post-engagement.ts +2 -2
- package/src/tools/fetch-page-content.ts +1 -1
- package/src/tools/find-email.ts +2 -2
- package/src/tools/find-emails-bulk.ts +2 -2
- package/src/tools/find-emails.ts +2 -2
- package/src/tools/find-influencers.ts +2 -2
- package/src/tools/find-people.ts +2 -2
- package/src/tools/find-phone-bulk.ts +2 -2
- package/src/tools/find-phone.ts +2 -2
- package/src/tools/get-endpoint-details.ts +2 -2
- package/src/tools/get-place-reviews.ts +2 -2
- package/src/tools/list-data-sources.ts +2 -2
- package/src/tools/search-ads.ts +2 -2
- package/src/tools/search-companies.ts +5 -5
- package/src/tools/search-places.ts +1 -1
- package/src/tools/search-reddit.ts +2 -2
- package/src/tools/verify-emails-bulk.ts +1 -1
- package/src/utils/provider-display.ts +5 -5
- package/src/utils/provider-resolver.ts +4 -1
- package/test-linkupapi-live.ts +1 -1
- package/test-phone-live.ts +1 -1
- package/test-search-live.ts +1 -1
- package/tests/live/companyenrich-hybrid-probe.ts +1 -1
- package/tests/provider-availability.test.ts +83 -0
- package/tests/registry-enrich-person.test.ts +7 -5
- package/tests/registry-find-people.test.ts +2 -2
- package/tests/registry.test.ts +32 -32
- package/tests/tools/call-endpoint.test.ts +4 -4
- package/tests/tools/get-endpoint-details.test.ts +4 -4
- package/tests/tools/list-data-sources.test.ts +1 -1
- package/tests/tools/search-endpoints.test.ts +2 -2
- package/tests/utils/provider-display.test.ts +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-availability.d.ts","sourceRoot":"","sources":["../src/provider-availability.ts"],"names":[],"mappings":"AAqBA,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI3D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code-owned provider kill switch for the standalone MCP package.
|
|
3
|
+
*
|
|
4
|
+
* This package is built and published separately from the Worker, so it keeps a
|
|
5
|
+
* small mirror of the Worker availability policy. Provider implementations stay
|
|
6
|
+
* configured and testable while public routing and tool schemas omit them.
|
|
7
|
+
*/
|
|
8
|
+
const DISABLED_PROVIDERS = new Set([
|
|
9
|
+
'people-data-labs',
|
|
10
|
+
]);
|
|
11
|
+
const PROVIDER_ALIASES = {
|
|
12
|
+
pdl: 'people-data-labs',
|
|
13
|
+
'pdl-person-enrich': 'people-data-labs',
|
|
14
|
+
'pdl-person-identify': 'people-data-labs',
|
|
15
|
+
};
|
|
16
|
+
function normalizeProviderKey(provider) {
|
|
17
|
+
return provider.trim().toLowerCase().replace(/[\s_]+/g, '-');
|
|
18
|
+
}
|
|
19
|
+
/** Returns false for a disabled provider, including its waterfall aliases. */
|
|
20
|
+
export function isProviderEnabled(provider) {
|
|
21
|
+
const normalized = normalizeProviderKey(provider);
|
|
22
|
+
const canonical = PROVIDER_ALIASES[normalized] ?? normalized;
|
|
23
|
+
return !DISABLED_PROVIDERS.has(canonical);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=provider-availability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-availability.js","sourceRoot":"","sources":["../src/provider-availability.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,kBAAkB;CACnB,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAA2B;IAC/C,GAAG,EAAE,kBAAkB;IACvB,mBAAmB,EAAE,kBAAkB;IACvC,qBAAqB,EAAE,kBAAkB;CAC1C,CAAA;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;AAC9D,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAA;IAC5D,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAC3C,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -54,8 +54,13 @@ export declare function listCapabilityProviderIds(capability: Capability): strin
|
|
|
54
54
|
*/
|
|
55
55
|
export declare function getProviderApplicabilityGuard(capability: Capability, providerId: string): ((input: Record<string, unknown>) => boolean) | undefined;
|
|
56
56
|
/**
|
|
57
|
-
* Get
|
|
58
|
-
*
|
|
57
|
+
* Get every configured provider, including disabled definitions retained for
|
|
58
|
+
* reversibility and regression coverage.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getConfiguredProviders(capability: Capability): ProviderEntry[];
|
|
61
|
+
/**
|
|
62
|
+
* Get the ordered, enabled provider list for a capability.
|
|
63
|
+
* Returns a frozen filtered copy — cached after the first call (registry is static).
|
|
59
64
|
*/
|
|
60
65
|
export declare function getProviders(capability: Capability): ProviderEntry[];
|
|
61
66
|
/**
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IACtD,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAA;IACtC,kDAAkD;IAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAA;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IACvG,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAA;IACrC,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;IAC1D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;CACxE;AAED,MAAM,MAAM,UAAU,GAClB,kBAAkB,GAClB,aAAa,GACb,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,YAAY,GACZ,cAAc,GACd,oBAAoB,CAAA;AA4ExB,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAIlG;AA0BD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAgCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAclE;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAGpF;AAs5GD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,CAE1E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,GACjB,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAE3D;AAKD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,EAAE,CAS9E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,EAAE,CASpE;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,OAAO,GAAG,aAAa,EAAE,CAkB5E"}
|
package/dist/registry.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// ---------------------------------------------------------------------------
|
|
2
2
|
// Provider Registry — maps capabilities to ordered provider lists
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
|
+
import { isProviderEnabled } from './provider-availability.js';
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
5
6
|
// Helpers
|
|
6
7
|
// ---------------------------------------------------------------------------
|
|
@@ -220,7 +221,7 @@ function applyStrictFilters(orgs, input, map) {
|
|
|
220
221
|
// ---------------------------------------------------------------------------
|
|
221
222
|
// search_companies
|
|
222
223
|
// ---------------------------------------------------------------------------
|
|
223
|
-
//
|
|
224
|
+
// Lima Data company_headcount uses letter buckets: A=1-10, B=11-50, C=51-200,
|
|
224
225
|
// D=201-500, E=501-1000, F=1001-5000, G=5001-10000, H=10001+
|
|
225
226
|
function mapEmployeesToLimaDataHeadcount(min, max) {
|
|
226
227
|
const buckets = [
|
|
@@ -512,7 +513,7 @@ const searchCompaniesProviders = [
|
|
|
512
513
|
priority: 6,
|
|
513
514
|
isApplicable: (input) => {
|
|
514
515
|
// Skip for filter types SignalBase cannot apply — let specialized providers (TheirStack, Wiza,
|
|
515
|
-
//
|
|
516
|
+
// Lima Data) handle these, and fall further down the waterfall when they fail.
|
|
516
517
|
if (isNonEmptyArray(input.technologies))
|
|
517
518
|
return false;
|
|
518
519
|
if (isNonEmptyArray(input.funding_stages))
|
|
@@ -604,7 +605,7 @@ const searchCompaniesProviders = [
|
|
|
604
605
|
},
|
|
605
606
|
isApplicable: (input) => {
|
|
606
607
|
// Skip when advanced filters are set that BlitzAPI cannot apply — specialized providers
|
|
607
|
-
// (TheirStack, Wiza,
|
|
608
|
+
// (TheirStack, Wiza, Lima Data) handle these and must run without BlitzAPI intercepting first.
|
|
608
609
|
if (isNonEmptyArray(input.technologies))
|
|
609
610
|
return false;
|
|
610
611
|
if (isNonEmptyArray(input.funding_stages))
|
|
@@ -649,7 +650,7 @@ const searchCompaniesProviders = [
|
|
|
649
650
|
},
|
|
650
651
|
{
|
|
651
652
|
id: 'limadata',
|
|
652
|
-
endpoint: '/
|
|
653
|
+
endpoint: '/limadata/search/companies',
|
|
653
654
|
method: 'POST',
|
|
654
655
|
priority: 9,
|
|
655
656
|
mapParams: (input) => {
|
|
@@ -792,11 +793,11 @@ const searchCompaniesProviders = [
|
|
|
792
793
|
},
|
|
793
794
|
{
|
|
794
795
|
id: 'limadata-prospect-filter',
|
|
795
|
-
endpoint: '/
|
|
796
|
+
endpoint: '/limadata/prospect/companies/filter',
|
|
796
797
|
method: 'POST',
|
|
797
798
|
priority: 12,
|
|
798
799
|
mapParams: (input) => {
|
|
799
|
-
//
|
|
800
|
+
// Lima Data prospect filter uses [{filter_type, values}]. We can only reliably
|
|
800
801
|
// map company_headcount (size buckets); industries/locations need LinkedIn IDs.
|
|
801
802
|
const filters = [];
|
|
802
803
|
const sizeBuckets = mapEmployeesToLimaDataHeadcount(input.min_employees, input.max_employees);
|
|
@@ -818,7 +819,7 @@ const searchCompaniesProviders = [
|
|
|
818
819
|
},
|
|
819
820
|
{
|
|
820
821
|
id: 'limadata-prospect-url',
|
|
821
|
-
endpoint: '/
|
|
822
|
+
endpoint: '/limadata/prospect/companies/search-url',
|
|
822
823
|
method: 'POST',
|
|
823
824
|
priority: 13,
|
|
824
825
|
mapParams: (input) => ({
|
|
@@ -1532,7 +1533,7 @@ const findEmailProviders = [
|
|
|
1532
1533
|
},
|
|
1533
1534
|
{
|
|
1534
1535
|
id: 'limadata-work-email',
|
|
1535
|
-
endpoint: '/
|
|
1536
|
+
endpoint: '/limadata/find/work-email',
|
|
1536
1537
|
method: 'POST',
|
|
1537
1538
|
priority: 1,
|
|
1538
1539
|
mapParams: (input) => {
|
|
@@ -1643,7 +1644,7 @@ const findEmailProviders = [
|
|
|
1643
1644
|
},
|
|
1644
1645
|
{
|
|
1645
1646
|
id: 'limadata-work-email-linkedin',
|
|
1646
|
-
endpoint: '/
|
|
1647
|
+
endpoint: '/limadata/find/work-email-linkedin',
|
|
1647
1648
|
method: 'POST',
|
|
1648
1649
|
priority: 5,
|
|
1649
1650
|
mapParams: (input) => ({
|
|
@@ -1863,7 +1864,7 @@ const findPhoneProviders = [
|
|
|
1863
1864
|
},
|
|
1864
1865
|
{
|
|
1865
1866
|
id: 'limadata',
|
|
1866
|
-
endpoint: '/
|
|
1867
|
+
endpoint: '/limadata/find/phone',
|
|
1867
1868
|
method: 'POST',
|
|
1868
1869
|
priority: 3,
|
|
1869
1870
|
isApplicable: (input) => {
|
|
@@ -2039,7 +2040,7 @@ const enrichCompanyProviders = [
|
|
|
2039
2040
|
},
|
|
2040
2041
|
{
|
|
2041
2042
|
id: 'limadata',
|
|
2042
|
-
endpoint: '/
|
|
2043
|
+
endpoint: '/limadata/enrich/company',
|
|
2043
2044
|
method: 'POST',
|
|
2044
2045
|
priority: 4,
|
|
2045
2046
|
isApplicable: (input) => !!(input.domain || input.linkedin_url),
|
|
@@ -2221,7 +2222,7 @@ const searchWebProviders = [
|
|
|
2221
2222
|
},
|
|
2222
2223
|
{
|
|
2223
2224
|
id: 'limadata',
|
|
2224
|
-
endpoint: '/
|
|
2225
|
+
endpoint: '/limadata/search/web',
|
|
2225
2226
|
method: 'POST',
|
|
2226
2227
|
priority: 2,
|
|
2227
2228
|
mapParams: (input) => ({
|
|
@@ -3624,23 +3625,33 @@ export function listCapabilityProviderIds(capability) {
|
|
|
3624
3625
|
* Returns undefined when the provider has no gate.
|
|
3625
3626
|
*/
|
|
3626
3627
|
export function getProviderApplicabilityGuard(capability, providerId) {
|
|
3627
|
-
|
|
3628
|
-
if (!providers)
|
|
3629
|
-
return undefined;
|
|
3630
|
-
return providers.find((p) => p.id === providerId)?.isApplicable;
|
|
3628
|
+
return getProviders(capability).find((p) => p.id === providerId)?.isApplicable;
|
|
3631
3629
|
}
|
|
3630
|
+
const _configuredProvidersCache = new Map();
|
|
3632
3631
|
const _providersCache = new Map();
|
|
3633
3632
|
/**
|
|
3634
|
-
* Get
|
|
3635
|
-
*
|
|
3633
|
+
* Get every configured provider, including disabled definitions retained for
|
|
3634
|
+
* reversibility and regression coverage.
|
|
3636
3635
|
*/
|
|
3637
|
-
export function
|
|
3638
|
-
let cached =
|
|
3636
|
+
export function getConfiguredProviders(capability) {
|
|
3637
|
+
let cached = _configuredProvidersCache.get(capability);
|
|
3639
3638
|
if (!cached) {
|
|
3640
3639
|
const providers = registry[capability];
|
|
3641
3640
|
if (!providers)
|
|
3642
3641
|
throw new Error(`Unknown capability: ${capability}`);
|
|
3643
3642
|
cached = Object.freeze([...providers].sort((a, b) => a.priority - b.priority));
|
|
3643
|
+
_configuredProvidersCache.set(capability, cached);
|
|
3644
|
+
}
|
|
3645
|
+
return cached;
|
|
3646
|
+
}
|
|
3647
|
+
/**
|
|
3648
|
+
* Get the ordered, enabled provider list for a capability.
|
|
3649
|
+
* Returns a frozen filtered copy — cached after the first call (registry is static).
|
|
3650
|
+
*/
|
|
3651
|
+
export function getProviders(capability) {
|
|
3652
|
+
let cached = _providersCache.get(capability);
|
|
3653
|
+
if (!cached) {
|
|
3654
|
+
cached = Object.freeze(getConfiguredProviders(capability).filter((provider) => isProviderEnabled(provider.id)));
|
|
3644
3655
|
_providersCache.set(capability, cached);
|
|
3645
3656
|
}
|
|
3646
3657
|
return cached;
|