@coldiq/mcp 0.4.5 → 0.4.7
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/client.d.ts.map +1 -1
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +129 -46
- package/dist/registry.js.map +1 -1
- package/dist/utils/provider-resolver.js +3 -4
- package/dist/utils/provider-resolver.js.map +1 -1
- package/dist/utils/selection-insight.js +1 -1
- package/dist/utils/selection-insight.js.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +3 -0
- package/src/registry.ts +124 -45
- package/src/utils/provider-resolver.ts +3 -4
- package/src/utils/selection-insight.ts +1 -1
- package/tests/client.test.ts +12 -0
- package/tests/registry.test.ts +21 -34
- package/tests/tools/get-credit-balance.test.ts +11 -0
|
@@ -9,10 +9,10 @@ export const CONFIGURED_FIND_EMAILS_PROVIDERS = [
|
|
|
9
9
|
'findymail',
|
|
10
10
|
'leadmagic',
|
|
11
11
|
'prospeo',
|
|
12
|
-
'wiza',
|
|
13
12
|
'apollo-people-match',
|
|
14
13
|
'limadata-work-email',
|
|
15
14
|
'icypeas',
|
|
15
|
+
'wiza',
|
|
16
16
|
];
|
|
17
17
|
export const FIND_EMAILS_PROVIDERS = CONFIGURED_FIND_EMAILS_PROVIDERS.filter(isProviderEnabled);
|
|
18
18
|
export function getProvidersForCapability(capability) {
|
|
@@ -154,9 +154,8 @@ const GATED_DESCRIPTIONS = {
|
|
|
154
154
|
verify_email: {},
|
|
155
155
|
// -------------------------------------------------------------------------
|
|
156
156
|
find_phone: {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
'ai-ark': { kind: 'requires', fields: 'linkedin_url or (first_name, last_name, and company domain)' },
|
|
157
|
+
limadata: { kind: 'requires', fields: 'linkedin_url or (first_name, last_name, and domain/company_name)' },
|
|
158
|
+
'ai-ark': { kind: 'requires', fields: 'linkedin_url or (first_name, last_name, and domain)' },
|
|
160
159
|
},
|
|
161
160
|
// -------------------------------------------------------------------------
|
|
162
161
|
enrich_company: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../src/utils/provider-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,WAAW;IACX,WAAW;IACX,SAAS;IACT,
|
|
1
|
+
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../src/utils/provider-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,9 +62,9 @@ const STRENGTHS = {
|
|
|
62
62
|
'linkupapi-validate': 'LinkedIn-aware email validation',
|
|
63
63
|
},
|
|
64
64
|
find_phone: {
|
|
65
|
-
findymail: 'verified mobile-number coverage',
|
|
66
65
|
limadata: 'phone lookup by LinkedIn URL or name + company',
|
|
67
66
|
'ai-ark': 'phone lookup across multiple identifiers',
|
|
67
|
+
fullenrich: 'a phone waterfall aggregated across many upstream sources',
|
|
68
68
|
},
|
|
69
69
|
enrich_company: {
|
|
70
70
|
companyenrich: 'broad firmographic enrichment from a domain',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-insight.js","sourceRoot":"","sources":["../../src/utils/selection-insight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAiC3D,8EAA8E;AAC9E,oEAAoE;AACpE,+EAA+E;AAC/E,+EAA+E;AAC/E,gDAAgD;AAChD,8EAA8E;AAE9E,MAAM,SAAS,GAA+D;IAC5E,gBAAgB,EAAE;QAChB,aAAa,EAAE,6DAA6D;QAC5E,MAAM,EAAE,sCAAsC;QAC9C,UAAU,EAAE,2DAA2D;QACvE,GAAG,EAAE,4CAA4C;QACjD,UAAU,EAAE,yDAAyD;QACrE,QAAQ,EAAE,+BAA+B;QACzC,QAAQ,EAAE,kCAAkC;QAC5C,YAAY,EAAE,uDAAuD;QACrE,UAAU,EAAE,+CAA+C;QAC3D,MAAM,EAAE,kDAAkD;QAC1D,0BAA0B,EAAE,yCAAyC;QACrE,uBAAuB,EAAE,2DAA2D;QACpF,kBAAkB,EAAE,8BAA8B;QAClD,uBAAuB,EAAE,gDAAgD;QACzE,kBAAkB,EAAE,gDAAgD;QACpE,wBAAwB,EAAE,0CAA0C;QACpE,kBAAkB,EAAE,gCAAgC;KACrD;IACD,WAAW,EAAE;QACX,YAAY,EAAE,6CAA6C;QAC3D,MAAM,EAAE,sCAAsC;QAC9C,GAAG,EAAE,2CAA2C;QAChD,aAAa,EAAE,gCAAgC;QAC/C,2BAA2B,EAAE,8BAA8B;QAC3D,oBAAoB,EAAE,0CAA0C;QAChE,uBAAuB,EAAE,wCAAwC;QACjE,eAAe,EAAE,+BAA+B;QAChD,0BAA0B,EAAE,6BAA6B;QACzD,4BAA4B,EAAE,kCAAkC;KACjE;IACD,UAAU,EAAE;QACV,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,oCAAoC;QAC/C,IAAI,EAAE,4CAA4C;QAClD,OAAO,EAAE,8BAA8B;QACvC,qBAAqB,EAAE,mCAAmC;QAC1D,SAAS,EAAE,2DAA2D;QACtE,qBAAqB,EAAE,8DAA8D;KACtF;IACD,WAAW,EAAE;QACX,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,oCAAoC;QAC/C,IAAI,EAAE,4CAA4C;QAClD,OAAO,EAAE,8BAA8B;QACvC,qBAAqB,EAAE,mCAAmC;QAC1D,SAAS,EAAE,2DAA2D;QACtE,qBAAqB,EAAE,8DAA8D;KACtF;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,sCAAsC;QACjD,OAAO,EAAE,0BAA0B;QACnC,SAAS,EAAE,qCAAqC;QAChD,oBAAoB,EAAE,iCAAiC;KACxD;IACD,UAAU,EAAE;QACV,
|
|
1
|
+
{"version":3,"file":"selection-insight.js","sourceRoot":"","sources":["../../src/utils/selection-insight.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -56,6 +56,9 @@ export async function callApi(
|
|
|
56
56
|
|
|
57
57
|
const headers: Record<string, string> = {
|
|
58
58
|
Authorization: `Bearer ${_apiKey}`,
|
|
59
|
+
// Client-declared surface attribution, persisted on marketplace.usage_logs
|
|
60
|
+
// (analytics only — mirrors src/lib/client-surface.ts in the API repo).
|
|
61
|
+
'X-ColdIQ-Client-Surface': 'mcp',
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
const init: RequestInit = {
|
package/src/registry.ts
CHANGED
|
@@ -1589,7 +1589,7 @@ const findEmailProviders: ProviderEntry[] = [
|
|
|
1589
1589
|
id: 'icypeas',
|
|
1590
1590
|
endpoint: '/icypeas/email-search',
|
|
1591
1591
|
method: 'POST',
|
|
1592
|
-
priority:
|
|
1592
|
+
priority: 6,
|
|
1593
1593
|
mapParams: (input) => ({
|
|
1594
1594
|
body: {
|
|
1595
1595
|
firstname: input.first_name,
|
|
@@ -1609,7 +1609,7 @@ const findEmailProviders: ProviderEntry[] = [
|
|
|
1609
1609
|
id: 'limadata-work-email',
|
|
1610
1610
|
endpoint: '/limadata/find/work-email',
|
|
1611
1611
|
method: 'POST',
|
|
1612
|
-
priority:
|
|
1612
|
+
priority: 5,
|
|
1613
1613
|
mapParams: (input) => {
|
|
1614
1614
|
const fullName = [input.first_name, input.last_name].filter(Boolean).join(' ')
|
|
1615
1615
|
return {
|
|
@@ -1664,7 +1664,7 @@ const findEmailProviders: ProviderEntry[] = [
|
|
|
1664
1664
|
id: 'wiza',
|
|
1665
1665
|
endpoint: '/wiza/individual-reveals',
|
|
1666
1666
|
method: 'POST',
|
|
1667
|
-
priority:
|
|
1667
|
+
priority: 7,
|
|
1668
1668
|
isApplicable: (input) =>
|
|
1669
1669
|
(typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0) ||
|
|
1670
1670
|
(!!input.first_name && !!input.last_name && !!(input.domain || input.company_name)),
|
|
@@ -1706,7 +1706,7 @@ const findEmailProviders: ProviderEntry[] = [
|
|
|
1706
1706
|
id: 'apollo-people-match',
|
|
1707
1707
|
endpoint: '/apollo/people/match',
|
|
1708
1708
|
method: 'POST',
|
|
1709
|
-
priority:
|
|
1709
|
+
priority: 4,
|
|
1710
1710
|
isApplicable: (input) =>
|
|
1711
1711
|
(typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0) ||
|
|
1712
1712
|
(!!input.first_name && !!input.last_name && !!(input.domain || input.company_name)),
|
|
@@ -1857,104 +1857,183 @@ const verifyEmailProviders: ProviderEntry[] = [
|
|
|
1857
1857
|
// ---------------------------------------------------------------------------
|
|
1858
1858
|
|
|
1859
1859
|
const findPhoneProviders: ProviderEntry[] = [
|
|
1860
|
+
// Mirror of the API registry (validation/listing only — execution order and
|
|
1861
|
+
// predicates live server-side in src/router/registry.ts). 2026-07-24 v2:
|
|
1862
|
+
// prospeo → leadmagic → ai-ark → limadata → fullenrich (premium closer);
|
|
1863
|
+
// findymail dropped (1 hit/30d); ai-ark/limadata accept the schema's `domain`.
|
|
1860
1864
|
{
|
|
1861
|
-
id: '
|
|
1862
|
-
endpoint: '/
|
|
1865
|
+
id: 'prospeo',
|
|
1866
|
+
endpoint: '/prospeo/enrich-person',
|
|
1867
|
+
method: 'POST',
|
|
1868
|
+
priority: 1,
|
|
1869
|
+
isApplicable: (input) => {
|
|
1870
|
+
if (typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0) return true
|
|
1871
|
+
const hasName = typeof input.first_name === 'string' && (input.first_name as string).length > 0 &&
|
|
1872
|
+
typeof input.last_name === 'string' && (input.last_name as string).length > 0
|
|
1873
|
+
const domain = (input.domain ?? input.company_domain) as string | undefined
|
|
1874
|
+
const hasCompany = (typeof domain === 'string' && domain.length > 0) ||
|
|
1875
|
+
(typeof input.company_name === 'string' && (input.company_name as string).length > 0)
|
|
1876
|
+
return hasName && hasCompany
|
|
1877
|
+
},
|
|
1878
|
+
mapParams: (input) => {
|
|
1879
|
+
const domain = (input.domain ?? input.company_domain) as string | undefined
|
|
1880
|
+
const data: Record<string, unknown> = input.linkedin_url
|
|
1881
|
+
? { linkedin_url: input.linkedin_url }
|
|
1882
|
+
: {
|
|
1883
|
+
first_name: input.first_name,
|
|
1884
|
+
last_name: input.last_name,
|
|
1885
|
+
...(domain ? { company_website: domain } : {}),
|
|
1886
|
+
...(input.company_name ? { company_name: input.company_name } : {}),
|
|
1887
|
+
}
|
|
1888
|
+
return { body: { enrich_mobile: true, data } }
|
|
1889
|
+
},
|
|
1890
|
+
hasResult: (data) => {
|
|
1891
|
+
const d = data as Record<string, unknown>
|
|
1892
|
+
const person = d.person as Record<string, unknown> | undefined
|
|
1893
|
+
const mobile = person?.mobile as Record<string, unknown> | undefined
|
|
1894
|
+
return typeof mobile?.mobile === 'string' && (mobile.mobile as string).length > 0
|
|
1895
|
+
},
|
|
1896
|
+
},
|
|
1897
|
+
{
|
|
1898
|
+
id: 'leadmagic',
|
|
1899
|
+
endpoint: '/leadmagic/people/mobile-finder',
|
|
1863
1900
|
method: 'POST',
|
|
1864
1901
|
priority: 2,
|
|
1865
|
-
isApplicable: (input) =>
|
|
1866
|
-
|
|
1902
|
+
isApplicable: (input) =>
|
|
1903
|
+
(typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0) ||
|
|
1904
|
+
(typeof input.email === 'string' && (input.email as string).length > 0),
|
|
1905
|
+
mapParams: (input) => ({
|
|
1906
|
+
body: input.linkedin_url
|
|
1907
|
+
? { profile_url: input.linkedin_url }
|
|
1908
|
+
: { work_email: input.email },
|
|
1909
|
+
}),
|
|
1867
1910
|
hasResult: (data) => {
|
|
1868
1911
|
const d = data as Record<string, unknown>
|
|
1869
|
-
return typeof d.
|
|
1912
|
+
return typeof d.mobile_number === 'string' && (d.mobile_number as string).length > 0
|
|
1870
1913
|
},
|
|
1871
1914
|
},
|
|
1872
1915
|
{
|
|
1873
|
-
id: '
|
|
1874
|
-
endpoint: '/
|
|
1916
|
+
id: 'ai-ark',
|
|
1917
|
+
endpoint: '/ai-ark/people/mobile-phone-finder',
|
|
1875
1918
|
method: 'POST',
|
|
1876
1919
|
priority: 3,
|
|
1877
1920
|
isApplicable: (input) => {
|
|
1878
1921
|
if (typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0) return true
|
|
1879
1922
|
const hasName = typeof input.first_name === 'string' && (input.first_name as string).length > 0 &&
|
|
1880
1923
|
typeof input.last_name === 'string' && (input.last_name as string).length > 0
|
|
1881
|
-
const
|
|
1882
|
-
|
|
1883
|
-
return hasName && hasCompany
|
|
1924
|
+
const domain = (input.domain ?? input.company_domain) as string | undefined
|
|
1925
|
+
return hasName && typeof domain === 'string' && domain.length > 0
|
|
1884
1926
|
},
|
|
1885
1927
|
mapParams: (input) => {
|
|
1886
1928
|
const firstName = input.first_name as string | undefined
|
|
1887
1929
|
const lastName = input.last_name as string | undefined
|
|
1888
1930
|
const fullName = [firstName, lastName].filter(Boolean).join(' ') || undefined
|
|
1931
|
+
const domain = (input.domain ?? input.company_domain) as string | undefined
|
|
1889
1932
|
return {
|
|
1890
1933
|
body: {
|
|
1891
|
-
...(input.linkedin_url ? {
|
|
1934
|
+
...(input.linkedin_url ? { linkedin: input.linkedin_url } : {}),
|
|
1935
|
+
...(domain ? { domain } : {}),
|
|
1892
1936
|
...(fullName ? { name: fullName } : {}),
|
|
1893
|
-
...(input.company_name ? { company_name: input.company_name } : {}),
|
|
1894
|
-
...(input.company_domain ? { company_domain: input.company_domain } : {}),
|
|
1895
1937
|
},
|
|
1896
1938
|
}
|
|
1897
1939
|
},
|
|
1898
1940
|
hasResult: (data) => {
|
|
1899
1941
|
const d = data as Record<string, unknown>
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
if (nested && typeof nested.phone === 'string' && (nested.phone as string).length > 0) return true
|
|
1905
|
-
if (nested && isNonEmptyArray(nested.phones)) return true
|
|
1906
|
-
if (nested && isNonEmptyArray(nested.phone_numbers)) return true
|
|
1907
|
-
return false
|
|
1942
|
+
return Array.isArray(d.data) &&
|
|
1943
|
+
(d.data as unknown[]).some(
|
|
1944
|
+
(arr) => Array.isArray(arr) && (arr as unknown[]).length > 0 && typeof (arr as unknown[])[0] === 'string',
|
|
1945
|
+
)
|
|
1908
1946
|
},
|
|
1909
1947
|
},
|
|
1910
1948
|
{
|
|
1911
|
-
id: '
|
|
1912
|
-
endpoint: '/
|
|
1949
|
+
id: 'limadata',
|
|
1950
|
+
endpoint: '/limadata/find/phone',
|
|
1913
1951
|
method: 'POST',
|
|
1914
1952
|
priority: 4,
|
|
1915
1953
|
isApplicable: (input) => {
|
|
1916
1954
|
if (typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0) return true
|
|
1917
1955
|
const hasName = typeof input.first_name === 'string' && (input.first_name as string).length > 0 &&
|
|
1918
1956
|
typeof input.last_name === 'string' && (input.last_name as string).length > 0
|
|
1919
|
-
const
|
|
1920
|
-
|
|
1957
|
+
const domain = (input.domain ?? input.company_domain) as string | undefined
|
|
1958
|
+
const hasCompany = (typeof domain === 'string' && domain.length > 0) ||
|
|
1959
|
+
(typeof input.company_name === 'string' && (input.company_name as string).length > 0)
|
|
1960
|
+
return hasName && hasCompany
|
|
1921
1961
|
},
|
|
1922
1962
|
mapParams: (input) => {
|
|
1923
1963
|
const firstName = input.first_name as string | undefined
|
|
1924
1964
|
const lastName = input.last_name as string | undefined
|
|
1925
1965
|
const fullName = [firstName, lastName].filter(Boolean).join(' ') || undefined
|
|
1966
|
+
const domain = (input.domain ?? input.company_domain) as string | undefined
|
|
1926
1967
|
return {
|
|
1927
1968
|
body: {
|
|
1928
|
-
...(input.linkedin_url ? {
|
|
1929
|
-
...(input.company_domain ? { domain: input.company_domain } : {}),
|
|
1969
|
+
...(input.linkedin_url ? { linkedin_url: input.linkedin_url } : {}),
|
|
1930
1970
|
...(fullName ? { name: fullName } : {}),
|
|
1971
|
+
...(input.company_name ? { company_name: input.company_name } : {}),
|
|
1972
|
+
...(domain ? { company_domain: domain } : {}),
|
|
1931
1973
|
},
|
|
1932
1974
|
}
|
|
1933
1975
|
},
|
|
1934
1976
|
hasResult: (data) => {
|
|
1935
1977
|
const d = data as Record<string, unknown>
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1978
|
+
if (typeof d.phone === 'string' && (d.phone as string).length > 0) return true
|
|
1979
|
+
if (isNonEmptyArray(d.phones)) return true
|
|
1980
|
+
if (isNonEmptyArray(d.phone_numbers)) return true
|
|
1981
|
+
const nested = d.data as Record<string, unknown> | undefined
|
|
1982
|
+
if (nested && typeof nested.phone === 'string' && (nested.phone as string).length > 0) return true
|
|
1983
|
+
if (nested && isNonEmptyArray(nested.phones)) return true
|
|
1984
|
+
if (nested && isNonEmptyArray(nested.phone_numbers)) return true
|
|
1985
|
+
return false
|
|
1940
1986
|
},
|
|
1941
1987
|
},
|
|
1942
1988
|
{
|
|
1943
|
-
id: '
|
|
1944
|
-
endpoint: '/
|
|
1989
|
+
id: 'fullenrich',
|
|
1990
|
+
endpoint: '/fullenrich/contact/enrich/bulk',
|
|
1945
1991
|
method: 'POST',
|
|
1946
|
-
priority:
|
|
1947
|
-
isApplicable: (input) =>
|
|
1948
|
-
(typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0)
|
|
1949
|
-
|
|
1992
|
+
priority: 5,
|
|
1993
|
+
isApplicable: (input) => {
|
|
1994
|
+
if (typeof input.linkedin_url === 'string' && (input.linkedin_url as string).length > 0) return true
|
|
1995
|
+
const hasName = typeof input.first_name === 'string' && (input.first_name as string).length > 0 &&
|
|
1996
|
+
typeof input.last_name === 'string' && (input.last_name as string).length > 0
|
|
1997
|
+
const domain = (input.domain ?? input.company_domain) as string | undefined
|
|
1998
|
+
const hasCompany = (typeof domain === 'string' && domain.length > 0) ||
|
|
1999
|
+
(typeof input.company_name === 'string' && (input.company_name as string).length > 0)
|
|
2000
|
+
return hasName && hasCompany
|
|
2001
|
+
},
|
|
1950
2002
|
mapParams: (input) => ({
|
|
1951
|
-
body:
|
|
1952
|
-
|
|
1953
|
-
: {
|
|
2003
|
+
body: {
|
|
2004
|
+
name: 'mcp-find-phone',
|
|
2005
|
+
data: [{
|
|
2006
|
+
first_name: input.first_name,
|
|
2007
|
+
last_name: input.last_name,
|
|
2008
|
+
domain: input.domain ?? input.company_domain,
|
|
2009
|
+
company_name: input.company_name,
|
|
2010
|
+
...(input.linkedin_url ? { linkedin_url: input.linkedin_url } : {}),
|
|
2011
|
+
enrich_fields: ['contact.phones'],
|
|
2012
|
+
}],
|
|
2013
|
+
},
|
|
1954
2014
|
}),
|
|
1955
2015
|
hasResult: (data) => {
|
|
1956
2016
|
const d = data as Record<string, unknown>
|
|
1957
|
-
|
|
2017
|
+
const items = d.data as Array<Record<string, unknown>> | undefined
|
|
2018
|
+
if (!Array.isArray(items) || items.length === 0) return false
|
|
2019
|
+
const contactInfo = items[0]?.contact_info as Record<string, unknown> | undefined
|
|
2020
|
+
if (!contactInfo) return false
|
|
2021
|
+
const phones = contactInfo.phones as Array<Record<string, unknown>> | undefined
|
|
2022
|
+
return Array.isArray(phones) && phones.some((p) => typeof p?.number === 'string' && (p.number as string).length > 0)
|
|
2023
|
+
},
|
|
2024
|
+
async: {
|
|
2025
|
+
extractId: (response) => {
|
|
2026
|
+
const d = response as Record<string, unknown>
|
|
2027
|
+
return d.enrichment_id as string
|
|
2028
|
+
},
|
|
2029
|
+
pollEndpoint: (id) => `/fullenrich/contact/enrich/bulk/${id}`,
|
|
2030
|
+
pollIntervalMs: 2500,
|
|
2031
|
+
timeoutMs: 60_000,
|
|
2032
|
+
isComplete: (data) => {
|
|
2033
|
+
const d = data as Record<string, unknown>
|
|
2034
|
+
const status = d.status as string | undefined
|
|
2035
|
+
return status === 'FINISHED' || status === 'CANCELED'
|
|
2036
|
+
},
|
|
1958
2037
|
},
|
|
1959
2038
|
},
|
|
1960
2039
|
]
|
|
@@ -11,10 +11,10 @@ export const CONFIGURED_FIND_EMAILS_PROVIDERS = [
|
|
|
11
11
|
'findymail',
|
|
12
12
|
'leadmagic',
|
|
13
13
|
'prospeo',
|
|
14
|
-
'wiza',
|
|
15
14
|
'apollo-people-match',
|
|
16
15
|
'limadata-work-email',
|
|
17
16
|
'icypeas',
|
|
17
|
+
'wiza',
|
|
18
18
|
]
|
|
19
19
|
|
|
20
20
|
export const FIND_EMAILS_PROVIDERS = CONFIGURED_FIND_EMAILS_PROVIDERS.filter(isProviderEnabled)
|
|
@@ -226,9 +226,8 @@ const GATED_DESCRIPTIONS: Partial<Record<Capability, Partial<Record<string, Gate
|
|
|
226
226
|
verify_email: {},
|
|
227
227
|
// -------------------------------------------------------------------------
|
|
228
228
|
find_phone: {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
'ai-ark': { kind: 'requires', fields: 'linkedin_url or (first_name, last_name, and company domain)' },
|
|
229
|
+
limadata: { kind: 'requires', fields: 'linkedin_url or (first_name, last_name, and domain/company_name)' },
|
|
230
|
+
'ai-ark': { kind: 'requires', fields: 'linkedin_url or (first_name, last_name, and domain)' },
|
|
232
231
|
},
|
|
233
232
|
// -------------------------------------------------------------------------
|
|
234
233
|
enrich_company: {
|
|
@@ -96,9 +96,9 @@ const STRENGTHS: Partial<Record<InsightCapability, Record<string, string>>> = {
|
|
|
96
96
|
'linkupapi-validate': 'LinkedIn-aware email validation',
|
|
97
97
|
},
|
|
98
98
|
find_phone: {
|
|
99
|
-
findymail: 'verified mobile-number coverage',
|
|
100
99
|
limadata: 'phone lookup by LinkedIn URL or name + company',
|
|
101
100
|
'ai-ark': 'phone lookup across multiple identifiers',
|
|
101
|
+
fullenrich: 'a phone waterfall aggregated across many upstream sources',
|
|
102
102
|
},
|
|
103
103
|
enrich_company: {
|
|
104
104
|
companyenrich: 'broad firmographic enrichment from a domain',
|
package/tests/client.test.ts
CHANGED
|
@@ -41,6 +41,18 @@ describe('client', () => {
|
|
|
41
41
|
expect(capturedHeaders['Content-Type']).toBe('application/json')
|
|
42
42
|
})
|
|
43
43
|
|
|
44
|
+
it('declares the mcp client surface on every request (usage attribution)', async () => {
|
|
45
|
+
let capturedHeaders: Record<string, string> = {}
|
|
46
|
+
globalThis.fetch = vi.fn(async (_url: string | URL | Request, init?: RequestInit) => {
|
|
47
|
+
capturedHeaders = Object.fromEntries(Object.entries(init?.headers ?? {}))
|
|
48
|
+
return new Response(JSON.stringify({}), { status: 200 })
|
|
49
|
+
}) as typeof fetch
|
|
50
|
+
|
|
51
|
+
await callApi('GET', '/me/credits')
|
|
52
|
+
|
|
53
|
+
expect(capturedHeaders['X-ColdIQ-Client-Surface']).toBe('mcp')
|
|
54
|
+
})
|
|
55
|
+
|
|
44
56
|
it('appends query params for GET requests', async () => {
|
|
45
57
|
let capturedUrl = ''
|
|
46
58
|
globalThis.fetch = vi.fn(async (url: string | URL | Request) => {
|
package/tests/registry.test.ts
CHANGED
|
@@ -684,17 +684,17 @@ describe('registry', () => {
|
|
|
684
684
|
expect(wiza.async!.isComplete({ data: { is_complete: false } })).toBe(false)
|
|
685
685
|
})
|
|
686
686
|
|
|
687
|
-
it('Wiza is priority
|
|
687
|
+
it('Wiza is priority 7 (dead last — $0.50/hit cost containment)', () => {
|
|
688
688
|
const providers = getProviders('find_email')
|
|
689
689
|
const wiza = providers.find((p) => p.id === 'wiza')!
|
|
690
|
-
expect(wiza.priority).toBe(
|
|
690
|
+
expect(wiza.priority).toBe(7)
|
|
691
691
|
})
|
|
692
692
|
|
|
693
|
-
it('mirrors the server order: findymail → leadmagic → prospeo →
|
|
693
|
+
it('mirrors the server order: findymail → leadmagic → prospeo → apollo → limadata → icypeas → wiza', () => {
|
|
694
694
|
const ids = getProviders('find_email').map((p) => p.id)
|
|
695
695
|
expect(ids).toEqual([
|
|
696
|
-
'findymail', 'leadmagic', 'prospeo', '
|
|
697
|
-
'
|
|
696
|
+
'findymail', 'leadmagic', 'prospeo', 'apollo-people-match',
|
|
697
|
+
'limadata-work-email', 'icypeas', 'wiza',
|
|
698
698
|
])
|
|
699
699
|
})
|
|
700
700
|
|
|
@@ -950,35 +950,12 @@ describe('registry', () => {
|
|
|
950
950
|
})
|
|
951
951
|
|
|
952
952
|
describe('find_phone', () => {
|
|
953
|
-
it('providers
|
|
953
|
+
it('providers mirror the server order: prospeo → leadmagic → ai-ark → limadata → fullenrich', () => {
|
|
954
954
|
const providers = getProviders('find_phone')
|
|
955
|
-
expect(providers.map((p) => p.id)).toEqual(['leadmagic', '
|
|
955
|
+
expect(providers.map((p) => p.id)).toEqual(['prospeo', 'leadmagic', 'ai-ark', 'limadata', 'fullenrich'])
|
|
956
956
|
})
|
|
957
957
|
|
|
958
|
-
it('
|
|
959
|
-
const fm = getProviders('find_phone').find((p) => p.id === 'findymail')!
|
|
960
|
-
expect(fm.isApplicable!({})).toBe(false)
|
|
961
|
-
expect(fm.isApplicable!({ first_name: 'Michel', last_name: 'Lieben', company_domain: 'coldiq.com' })).toBe(false)
|
|
962
|
-
expect(fm.isApplicable!({ linkedin_url: 'https://linkedin.com/in/michel-lieben' })).toBe(true)
|
|
963
|
-
})
|
|
964
|
-
|
|
965
|
-
it('Findymail mapParams passes linkedin_url', () => {
|
|
966
|
-
const fm = getProviders('find_phone').find((p) => p.id === 'findymail')!
|
|
967
|
-
expect(fm.mapParams({ linkedin_url: 'https://linkedin.com/in/michel-lieben' }).body).toEqual({
|
|
968
|
-
linkedin_url: 'https://linkedin.com/in/michel-lieben',
|
|
969
|
-
})
|
|
970
|
-
})
|
|
971
|
-
|
|
972
|
-
it('Findymail hasResult accepts top-level phone or phones array', () => {
|
|
973
|
-
const fm = getProviders('find_phone').find((p) => p.id === 'findymail')!
|
|
974
|
-
expect(fm.hasResult({ phone: '+33612345678' })).toBe(true)
|
|
975
|
-
expect(fm.hasResult({ phones: ['+33612345678'] })).toBe(true)
|
|
976
|
-
expect(fm.hasResult({})).toBe(false)
|
|
977
|
-
expect(fm.hasResult({ phone: null })).toBe(false)
|
|
978
|
-
expect(fm.hasResult({ phones: [] })).toBe(false)
|
|
979
|
-
})
|
|
980
|
-
|
|
981
|
-
it('Lima Data isApplicable accepts linkedin_url or name+company', () => {
|
|
958
|
+
it('Lima Data isApplicable accepts linkedin_url or name+company (incl. the schema `domain` field)', () => {
|
|
982
959
|
const ld = getProviders('find_phone').find((p) => p.id === 'limadata')!
|
|
983
960
|
expect(ld.isApplicable!({})).toBe(false)
|
|
984
961
|
expect(ld.isApplicable!({ first_name: 'Michel' })).toBe(false)
|
|
@@ -986,6 +963,7 @@ describe('registry', () => {
|
|
|
986
963
|
expect(ld.isApplicable!({ linkedin_url: 'https://linkedin.com/in/michel-lieben' })).toBe(true)
|
|
987
964
|
expect(ld.isApplicable!({ first_name: 'Michel', last_name: 'Lieben', company_name: 'ColdIQ' })).toBe(true)
|
|
988
965
|
expect(ld.isApplicable!({ first_name: 'Michel', last_name: 'Lieben', company_domain: 'coldiq.com' })).toBe(true)
|
|
966
|
+
expect(ld.isApplicable!({ first_name: 'Michel', last_name: 'Lieben', domain: 'coldiq.com' })).toBe(true)
|
|
989
967
|
})
|
|
990
968
|
|
|
991
969
|
it('Lima Data mapParams forwards linkedin_url path', () => {
|
|
@@ -995,12 +973,16 @@ describe('registry', () => {
|
|
|
995
973
|
})
|
|
996
974
|
})
|
|
997
975
|
|
|
998
|
-
it('Lima Data mapParams forwards name+company path', () => {
|
|
976
|
+
it('Lima Data mapParams forwards name+company path (schema `domain` maps to company_domain)', () => {
|
|
999
977
|
const ld = getProviders('find_phone').find((p) => p.id === 'limadata')!
|
|
1000
978
|
expect(ld.mapParams({ first_name: 'Michel', last_name: 'Lieben', company_domain: 'coldiq.com' }).body).toEqual({
|
|
1001
979
|
name: 'Michel Lieben',
|
|
1002
980
|
company_domain: 'coldiq.com',
|
|
1003
981
|
})
|
|
982
|
+
expect(ld.mapParams({ first_name: 'Michel', last_name: 'Lieben', domain: 'coldiq.com' }).body).toEqual({
|
|
983
|
+
name: 'Michel Lieben',
|
|
984
|
+
company_domain: 'coldiq.com',
|
|
985
|
+
})
|
|
1004
986
|
})
|
|
1005
987
|
|
|
1006
988
|
it('Lima Data mapParams forwards company_name when no domain', () => {
|
|
@@ -1026,12 +1008,13 @@ describe('registry', () => {
|
|
|
1026
1008
|
expect(ld.hasResult({ data: {} })).toBe(false)
|
|
1027
1009
|
})
|
|
1028
1010
|
|
|
1029
|
-
it('AI Ark isApplicable accepts linkedin_url or name+
|
|
1011
|
+
it('AI Ark isApplicable accepts linkedin_url or name+domain (not company_name)', () => {
|
|
1030
1012
|
const ark = getProviders('find_phone').find((p) => p.id === 'ai-ark')!
|
|
1031
1013
|
expect(ark.isApplicable!({})).toBe(false)
|
|
1032
1014
|
expect(ark.isApplicable!({ first_name: 'Michel', last_name: 'Lieben', company_name: 'ColdIQ' })).toBe(false)
|
|
1033
1015
|
expect(ark.isApplicable!({ linkedin_url: 'https://linkedin.com/in/michel-lieben' })).toBe(true)
|
|
1034
1016
|
expect(ark.isApplicable!({ first_name: 'Michel', last_name: 'Lieben', company_domain: 'coldiq.com' })).toBe(true)
|
|
1017
|
+
expect(ark.isApplicable!({ first_name: 'Michel', last_name: 'Lieben', domain: 'coldiq.com' })).toBe(true)
|
|
1035
1018
|
})
|
|
1036
1019
|
|
|
1037
1020
|
it('AI Ark mapParams uses linkedin key (not linkedin_url)', () => {
|
|
@@ -1041,12 +1024,16 @@ describe('registry', () => {
|
|
|
1041
1024
|
})
|
|
1042
1025
|
})
|
|
1043
1026
|
|
|
1044
|
-
it('AI Ark mapParams maps name+domain path', () => {
|
|
1027
|
+
it('AI Ark mapParams maps name+domain path (schema `domain` accepted)', () => {
|
|
1045
1028
|
const ark = getProviders('find_phone').find((p) => p.id === 'ai-ark')!
|
|
1046
1029
|
expect(ark.mapParams({ first_name: 'Michel', last_name: 'Lieben', company_domain: 'coldiq.com' }).body).toEqual({
|
|
1047
1030
|
name: 'Michel Lieben',
|
|
1048
1031
|
domain: 'coldiq.com',
|
|
1049
1032
|
})
|
|
1033
|
+
expect(ark.mapParams({ first_name: 'Michel', last_name: 'Lieben', domain: 'coldiq.com' }).body).toEqual({
|
|
1034
|
+
name: 'Michel Lieben',
|
|
1035
|
+
domain: 'coldiq.com',
|
|
1036
|
+
})
|
|
1050
1037
|
})
|
|
1051
1038
|
|
|
1052
1039
|
it('AI Ark hasResult requires non-empty inner string arrays in data', () => {
|
|
@@ -29,6 +29,17 @@ describe('get_credit_balance handler', () => {
|
|
|
29
29
|
expect(parsed.data).toEqual({ balance: 250, usedThisMonth: 47 })
|
|
30
30
|
})
|
|
31
31
|
|
|
32
|
+
it('passes through a negative true-up balance', async () => {
|
|
33
|
+
globalThis.fetch = vi.fn(async () =>
|
|
34
|
+
new Response(JSON.stringify({ balance: -1.674351, usedThisMonth: 2.199351 }), { status: 200 })
|
|
35
|
+
) as typeof fetch
|
|
36
|
+
|
|
37
|
+
const result = await getCreditBalanceHandler({})
|
|
38
|
+
const parsed = JSON.parse(result.content[0].text)
|
|
39
|
+
|
|
40
|
+
expect(parsed.data).toEqual({ balance: -1.674351, usedThisMonth: 2.199351 })
|
|
41
|
+
})
|
|
42
|
+
|
|
32
43
|
it('sends the API key as a bearer token', async () => {
|
|
33
44
|
let capturedAuth: string | null = null
|
|
34
45
|
globalThis.fetch = vi.fn(async (_url: string | URL | Request, opts?: RequestInit) => {
|