@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
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,CAAA;AAMD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CA0BjE;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,CAAA;AAMD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CA0BjE;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,WAAW,CAAC,CAgEtB"}
|
package/dist/client.js
CHANGED
|
@@ -37,6 +37,9 @@ export async function callApi(method, path, body, queryParams) {
|
|
|
37
37
|
}
|
|
38
38
|
const headers = {
|
|
39
39
|
Authorization: `Bearer ${_apiKey}`,
|
|
40
|
+
// Client-declared surface attribution, persisted on marketplace.usage_logs
|
|
41
|
+
// (analytics only — mirrors src/lib/client-surface.ts in the API repo).
|
|
42
|
+
'X-ColdIQ-Client-Surface': 'mcp',
|
|
40
43
|
};
|
|
41
44
|
const init = {
|
|
42
45
|
method,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAU5D,IAAI,OAAe,CAAA;AACnB,IAAI,OAAe,CAAA;AACnB,IAAI,cAAsB,CAAA;AAE1B,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,MAAe;IACzD,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,wBAAwB,CAAA;IAC1E,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAA;IACpD,yEAAyE;IACzE,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,8DAA8D;IAC9D,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IACvG,CAAC;IACD,uBAAuB;IACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAErC,mEAAmE;IACnE,uFAAuF;IACvF,qFAAqF;IACrF,mBAAmB,CACjB,IAAI,KAAK,CAAC;QACR,gBAAgB,EAAE,MAAM;QACxB,mBAAmB,EAAE,MAAM;QAC3B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC;KACd,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAsB,EACtB,IAAY,EACZ,IAAc,EACd,WAAoC;IAEpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AA85GD;;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
|
@@ -1517,7 +1517,7 @@ const findEmailProviders = [
|
|
|
1517
1517
|
id: 'icypeas',
|
|
1518
1518
|
endpoint: '/icypeas/email-search',
|
|
1519
1519
|
method: 'POST',
|
|
1520
|
-
priority:
|
|
1520
|
+
priority: 6,
|
|
1521
1521
|
mapParams: (input) => ({
|
|
1522
1522
|
body: {
|
|
1523
1523
|
firstname: input.first_name,
|
|
@@ -1535,7 +1535,7 @@ const findEmailProviders = [
|
|
|
1535
1535
|
id: 'limadata-work-email',
|
|
1536
1536
|
endpoint: '/limadata/find/work-email',
|
|
1537
1537
|
method: 'POST',
|
|
1538
|
-
priority:
|
|
1538
|
+
priority: 5,
|
|
1539
1539
|
mapParams: (input) => {
|
|
1540
1540
|
const fullName = [input.first_name, input.last_name].filter(Boolean).join(' ');
|
|
1541
1541
|
return {
|
|
@@ -1592,7 +1592,7 @@ const findEmailProviders = [
|
|
|
1592
1592
|
id: 'wiza',
|
|
1593
1593
|
endpoint: '/wiza/individual-reveals',
|
|
1594
1594
|
method: 'POST',
|
|
1595
|
-
priority:
|
|
1595
|
+
priority: 7,
|
|
1596
1596
|
isApplicable: (input) => (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0) ||
|
|
1597
1597
|
(!!input.first_name && !!input.last_name && !!(input.domain || input.company_name)),
|
|
1598
1598
|
mapParams: (input) => ({
|
|
@@ -1633,7 +1633,7 @@ const findEmailProviders = [
|
|
|
1633
1633
|
id: 'apollo-people-match',
|
|
1634
1634
|
endpoint: '/apollo/people/match',
|
|
1635
1635
|
method: 'POST',
|
|
1636
|
-
priority:
|
|
1636
|
+
priority: 4,
|
|
1637
1637
|
isApplicable: (input) => (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0) ||
|
|
1638
1638
|
(!!input.first_name && !!input.last_name && !!(input.domain || input.company_name)),
|
|
1639
1639
|
mapParams: (input) => ({
|
|
@@ -1774,29 +1774,105 @@ const verifyEmailProviders = [
|
|
|
1774
1774
|
// find_phone
|
|
1775
1775
|
// ---------------------------------------------------------------------------
|
|
1776
1776
|
const findPhoneProviders = [
|
|
1777
|
+
// Mirror of the API registry (validation/listing only — execution order and
|
|
1778
|
+
// predicates live server-side in src/router/registry.ts). 2026-07-24 v2:
|
|
1779
|
+
// prospeo → leadmagic → ai-ark → limadata → fullenrich (premium closer);
|
|
1780
|
+
// findymail dropped (1 hit/30d); ai-ark/limadata accept the schema's `domain`.
|
|
1777
1781
|
{
|
|
1778
|
-
id: '
|
|
1779
|
-
endpoint: '/
|
|
1782
|
+
id: 'prospeo',
|
|
1783
|
+
endpoint: '/prospeo/enrich-person',
|
|
1784
|
+
method: 'POST',
|
|
1785
|
+
priority: 1,
|
|
1786
|
+
isApplicable: (input) => {
|
|
1787
|
+
if (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0)
|
|
1788
|
+
return true;
|
|
1789
|
+
const hasName = typeof input.first_name === 'string' && input.first_name.length > 0 &&
|
|
1790
|
+
typeof input.last_name === 'string' && input.last_name.length > 0;
|
|
1791
|
+
const domain = (input.domain ?? input.company_domain);
|
|
1792
|
+
const hasCompany = (typeof domain === 'string' && domain.length > 0) ||
|
|
1793
|
+
(typeof input.company_name === 'string' && input.company_name.length > 0);
|
|
1794
|
+
return hasName && hasCompany;
|
|
1795
|
+
},
|
|
1796
|
+
mapParams: (input) => {
|
|
1797
|
+
const domain = (input.domain ?? input.company_domain);
|
|
1798
|
+
const data = input.linkedin_url
|
|
1799
|
+
? { linkedin_url: input.linkedin_url }
|
|
1800
|
+
: {
|
|
1801
|
+
first_name: input.first_name,
|
|
1802
|
+
last_name: input.last_name,
|
|
1803
|
+
...(domain ? { company_website: domain } : {}),
|
|
1804
|
+
...(input.company_name ? { company_name: input.company_name } : {}),
|
|
1805
|
+
};
|
|
1806
|
+
return { body: { enrich_mobile: true, data } };
|
|
1807
|
+
},
|
|
1808
|
+
hasResult: (data) => {
|
|
1809
|
+
const d = data;
|
|
1810
|
+
const person = d.person;
|
|
1811
|
+
const mobile = person?.mobile;
|
|
1812
|
+
return typeof mobile?.mobile === 'string' && mobile.mobile.length > 0;
|
|
1813
|
+
},
|
|
1814
|
+
},
|
|
1815
|
+
{
|
|
1816
|
+
id: 'leadmagic',
|
|
1817
|
+
endpoint: '/leadmagic/people/mobile-finder',
|
|
1780
1818
|
method: 'POST',
|
|
1781
1819
|
priority: 2,
|
|
1782
|
-
isApplicable: (input) => typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0
|
|
1783
|
-
|
|
1820
|
+
isApplicable: (input) => (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0) ||
|
|
1821
|
+
(typeof input.email === 'string' && input.email.length > 0),
|
|
1822
|
+
mapParams: (input) => ({
|
|
1823
|
+
body: input.linkedin_url
|
|
1824
|
+
? { profile_url: input.linkedin_url }
|
|
1825
|
+
: { work_email: input.email },
|
|
1826
|
+
}),
|
|
1827
|
+
hasResult: (data) => {
|
|
1828
|
+
const d = data;
|
|
1829
|
+
return typeof d.mobile_number === 'string' && d.mobile_number.length > 0;
|
|
1830
|
+
},
|
|
1831
|
+
},
|
|
1832
|
+
{
|
|
1833
|
+
id: 'ai-ark',
|
|
1834
|
+
endpoint: '/ai-ark/people/mobile-phone-finder',
|
|
1835
|
+
method: 'POST',
|
|
1836
|
+
priority: 3,
|
|
1837
|
+
isApplicable: (input) => {
|
|
1838
|
+
if (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0)
|
|
1839
|
+
return true;
|
|
1840
|
+
const hasName = typeof input.first_name === 'string' && input.first_name.length > 0 &&
|
|
1841
|
+
typeof input.last_name === 'string' && input.last_name.length > 0;
|
|
1842
|
+
const domain = (input.domain ?? input.company_domain);
|
|
1843
|
+
return hasName && typeof domain === 'string' && domain.length > 0;
|
|
1844
|
+
},
|
|
1845
|
+
mapParams: (input) => {
|
|
1846
|
+
const firstName = input.first_name;
|
|
1847
|
+
const lastName = input.last_name;
|
|
1848
|
+
const fullName = [firstName, lastName].filter(Boolean).join(' ') || undefined;
|
|
1849
|
+
const domain = (input.domain ?? input.company_domain);
|
|
1850
|
+
return {
|
|
1851
|
+
body: {
|
|
1852
|
+
...(input.linkedin_url ? { linkedin: input.linkedin_url } : {}),
|
|
1853
|
+
...(domain ? { domain } : {}),
|
|
1854
|
+
...(fullName ? { name: fullName } : {}),
|
|
1855
|
+
},
|
|
1856
|
+
};
|
|
1857
|
+
},
|
|
1784
1858
|
hasResult: (data) => {
|
|
1785
1859
|
const d = data;
|
|
1786
|
-
return
|
|
1860
|
+
return Array.isArray(d.data) &&
|
|
1861
|
+
d.data.some((arr) => Array.isArray(arr) && arr.length > 0 && typeof arr[0] === 'string');
|
|
1787
1862
|
},
|
|
1788
1863
|
},
|
|
1789
1864
|
{
|
|
1790
1865
|
id: 'limadata',
|
|
1791
1866
|
endpoint: '/limadata/find/phone',
|
|
1792
1867
|
method: 'POST',
|
|
1793
|
-
priority:
|
|
1868
|
+
priority: 4,
|
|
1794
1869
|
isApplicable: (input) => {
|
|
1795
1870
|
if (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0)
|
|
1796
1871
|
return true;
|
|
1797
1872
|
const hasName = typeof input.first_name === 'string' && input.first_name.length > 0 &&
|
|
1798
1873
|
typeof input.last_name === 'string' && input.last_name.length > 0;
|
|
1799
|
-
const
|
|
1874
|
+
const domain = (input.domain ?? input.company_domain);
|
|
1875
|
+
const hasCompany = (typeof domain === 'string' && domain.length > 0) ||
|
|
1800
1876
|
(typeof input.company_name === 'string' && input.company_name.length > 0);
|
|
1801
1877
|
return hasName && hasCompany;
|
|
1802
1878
|
},
|
|
@@ -1804,12 +1880,13 @@ const findPhoneProviders = [
|
|
|
1804
1880
|
const firstName = input.first_name;
|
|
1805
1881
|
const lastName = input.last_name;
|
|
1806
1882
|
const fullName = [firstName, lastName].filter(Boolean).join(' ') || undefined;
|
|
1883
|
+
const domain = (input.domain ?? input.company_domain);
|
|
1807
1884
|
return {
|
|
1808
1885
|
body: {
|
|
1809
1886
|
...(input.linkedin_url ? { linkedin_url: input.linkedin_url } : {}),
|
|
1810
1887
|
...(fullName ? { name: fullName } : {}),
|
|
1811
1888
|
...(input.company_name ? { company_name: input.company_name } : {}),
|
|
1812
|
-
...(
|
|
1889
|
+
...(domain ? { company_domain: domain } : {}),
|
|
1813
1890
|
},
|
|
1814
1891
|
};
|
|
1815
1892
|
},
|
|
@@ -1832,51 +1909,57 @@ const findPhoneProviders = [
|
|
|
1832
1909
|
},
|
|
1833
1910
|
},
|
|
1834
1911
|
{
|
|
1835
|
-
id: '
|
|
1836
|
-
endpoint: '/
|
|
1912
|
+
id: 'fullenrich',
|
|
1913
|
+
endpoint: '/fullenrich/contact/enrich/bulk',
|
|
1837
1914
|
method: 'POST',
|
|
1838
|
-
priority:
|
|
1915
|
+
priority: 5,
|
|
1839
1916
|
isApplicable: (input) => {
|
|
1840
1917
|
if (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0)
|
|
1841
1918
|
return true;
|
|
1842
1919
|
const hasName = typeof input.first_name === 'string' && input.first_name.length > 0 &&
|
|
1843
1920
|
typeof input.last_name === 'string' && input.last_name.length > 0;
|
|
1844
|
-
const
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
const firstName = input.first_name;
|
|
1849
|
-
const lastName = input.last_name;
|
|
1850
|
-
const fullName = [firstName, lastName].filter(Boolean).join(' ') || undefined;
|
|
1851
|
-
return {
|
|
1852
|
-
body: {
|
|
1853
|
-
...(input.linkedin_url ? { linkedin: input.linkedin_url } : {}),
|
|
1854
|
-
...(input.company_domain ? { domain: input.company_domain } : {}),
|
|
1855
|
-
...(fullName ? { name: fullName } : {}),
|
|
1856
|
-
},
|
|
1857
|
-
};
|
|
1858
|
-
},
|
|
1859
|
-
hasResult: (data) => {
|
|
1860
|
-
const d = data;
|
|
1861
|
-
return Array.isArray(d.data) &&
|
|
1862
|
-
d.data.some((arr) => Array.isArray(arr) && arr.length > 0 && typeof arr[0] === 'string');
|
|
1921
|
+
const domain = (input.domain ?? input.company_domain);
|
|
1922
|
+
const hasCompany = (typeof domain === 'string' && domain.length > 0) ||
|
|
1923
|
+
(typeof input.company_name === 'string' && input.company_name.length > 0);
|
|
1924
|
+
return hasName && hasCompany;
|
|
1863
1925
|
},
|
|
1864
|
-
},
|
|
1865
|
-
{
|
|
1866
|
-
id: 'leadmagic',
|
|
1867
|
-
endpoint: '/leadmagic/people/mobile-finder',
|
|
1868
|
-
method: 'POST',
|
|
1869
|
-
priority: 1,
|
|
1870
|
-
isApplicable: (input) => (typeof input.linkedin_url === 'string' && input.linkedin_url.length > 0) ||
|
|
1871
|
-
(typeof input.email === 'string' && input.email.length > 0),
|
|
1872
1926
|
mapParams: (input) => ({
|
|
1873
|
-
body:
|
|
1874
|
-
|
|
1875
|
-
: {
|
|
1927
|
+
body: {
|
|
1928
|
+
name: 'mcp-find-phone',
|
|
1929
|
+
data: [{
|
|
1930
|
+
first_name: input.first_name,
|
|
1931
|
+
last_name: input.last_name,
|
|
1932
|
+
domain: input.domain ?? input.company_domain,
|
|
1933
|
+
company_name: input.company_name,
|
|
1934
|
+
...(input.linkedin_url ? { linkedin_url: input.linkedin_url } : {}),
|
|
1935
|
+
enrich_fields: ['contact.phones'],
|
|
1936
|
+
}],
|
|
1937
|
+
},
|
|
1876
1938
|
}),
|
|
1877
1939
|
hasResult: (data) => {
|
|
1878
1940
|
const d = data;
|
|
1879
|
-
|
|
1941
|
+
const items = d.data;
|
|
1942
|
+
if (!Array.isArray(items) || items.length === 0)
|
|
1943
|
+
return false;
|
|
1944
|
+
const contactInfo = items[0]?.contact_info;
|
|
1945
|
+
if (!contactInfo)
|
|
1946
|
+
return false;
|
|
1947
|
+
const phones = contactInfo.phones;
|
|
1948
|
+
return Array.isArray(phones) && phones.some((p) => typeof p?.number === 'string' && p.number.length > 0);
|
|
1949
|
+
},
|
|
1950
|
+
async: {
|
|
1951
|
+
extractId: (response) => {
|
|
1952
|
+
const d = response;
|
|
1953
|
+
return d.enrichment_id;
|
|
1954
|
+
},
|
|
1955
|
+
pollEndpoint: (id) => `/fullenrich/contact/enrich/bulk/${id}`,
|
|
1956
|
+
pollIntervalMs: 2500,
|
|
1957
|
+
timeoutMs: 60_000,
|
|
1958
|
+
isComplete: (data) => {
|
|
1959
|
+
const d = data;
|
|
1960
|
+
const status = d.status;
|
|
1961
|
+
return status === 'FINISHED' || status === 'CANCELED';
|
|
1962
|
+
},
|
|
1880
1963
|
},
|
|
1881
1964
|
},
|
|
1882
1965
|
];
|