@coldiq/mcp 0.3.5 → 0.3.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/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/list-data-sources.d.ts +20 -0
- package/dist/tools/list-data-sources.d.ts.map +1 -0
- package/dist/tools/list-data-sources.js +119 -0
- package/dist/tools/list-data-sources.js.map +1 -0
- package/dist/utils/selection-insight.d.ts +6 -0
- package/dist/utils/selection-insight.d.ts.map +1 -1
- package/dist/utils/selection-insight.js +26 -0
- package/dist/utils/selection-insight.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +8 -0
- package/src/tools/list-data-sources.ts +144 -0
- package/src/utils/selection-insight.ts +30 -0
- package/tests/tools/list-data-sources.test.ts +104 -0
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ import { fetchPageContentName, fetchPageContentDescription, fetchPageContentSche
|
|
|
22
22
|
import { getCreditBalanceName, getCreditBalanceDescription, getCreditBalanceSchema, getCreditBalanceHandler, } from './tools/get-credit-balance.js';
|
|
23
23
|
import { extractPostEngagementName, extractPostEngagementDescription, extractPostEngagementSchema, extractPostEngagementHandler, } from './tools/extract-post-engagement.js';
|
|
24
24
|
import { getPlaceReviewsName, getPlaceReviewsDescription, getPlaceReviewsSchema, getPlaceReviewsHandler, } from './tools/get-place-reviews.js';
|
|
25
|
+
import { listDataSourcesName, listDataSourcesDescription, listDataSourcesSchema, listDataSourcesHandler, } from './tools/list-data-sources.js';
|
|
25
26
|
// Initialize HTTP client (reads env vars)
|
|
26
27
|
initClient();
|
|
27
28
|
const server = new McpServer({
|
|
@@ -47,6 +48,7 @@ server.tool(searchSeoName, searchSeoDescription, searchSeoSchema, searchSeoHandl
|
|
|
47
48
|
server.tool(findSignalsName, findSignalsDescription, findSignalsSchema, findSignalsHandler);
|
|
48
49
|
server.tool(fetchPageContentName, fetchPageContentDescription, fetchPageContentSchema, fetchPageContentHandler);
|
|
49
50
|
server.tool(getCreditBalanceName, getCreditBalanceDescription, getCreditBalanceSchema, getCreditBalanceHandler);
|
|
51
|
+
server.tool(listDataSourcesName, listDataSourcesDescription, listDataSourcesSchema, listDataSourcesHandler);
|
|
50
52
|
server.tool(extractPostEngagementName, extractPostEngagementDescription, extractPostEngagementSchema, extractPostEngagementHandler);
|
|
51
53
|
server.tool(getPlaceReviewsName, getPlaceReviewsDescription, getPlaceReviewsSchema, getPlaceReviewsHandler);
|
|
52
54
|
// Connect via stdio transport
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listDataSourcesName = "list_data_sources";
|
|
3
|
+
export declare const listDataSourcesDescription = "List the B2B data sources ColdIQ routes across, grouped by what they do (company search, email finding, enrichment, signals, ads, etc.). ColdIQ automatically picks the best source for each request \u2014 you normally never choose one \u2014 so use this only to see the coverage available (e.g. \"is Apollo supported?\"). No credits are spent; this is local information. Pass an optional `capability` (a tool name like \"search_companies\" or \"find_email\") to narrow to a single category. When presenting the result, show each source together with its `strength` so the user sees what each one is best at.";
|
|
4
|
+
export declare const listDataSourcesSchema: {
|
|
5
|
+
capability: z.ZodOptional<z.ZodString>;
|
|
6
|
+
};
|
|
7
|
+
export declare function listDataSourcesHandler(input: Record<string, unknown>): Promise<{
|
|
8
|
+
content: {
|
|
9
|
+
type: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
}[];
|
|
12
|
+
isError: boolean;
|
|
13
|
+
} | {
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
isError?: undefined;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=list-data-sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-data-sources.d.ts","sourceRoot":"","sources":["../../src/tools/list-data-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,mBAAmB,sBAAsB,CAAA;AAEtD,eAAO,MAAM,0BAA0B,mmBAC2iB,CAAA;AAEllB,eAAO,MAAM,qBAAqB;;CAKjC,CAAA;AA6FD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAmC1E"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
3
|
+
import { providerDisplayName } from '../utils/provider-display.js';
|
|
4
|
+
import { getProviderStrength } from '../utils/selection-insight.js';
|
|
5
|
+
export const listDataSourcesName = 'list_data_sources';
|
|
6
|
+
export const listDataSourcesDescription = 'List the B2B data sources ColdIQ routes across, grouped by what they do (company search, email finding, enrichment, signals, ads, etc.). ColdIQ automatically picks the best source for each request — you normally never choose one — so use this only to see the coverage available (e.g. "is Apollo supported?"). No credits are spent; this is local information. Pass an optional `capability` (a tool name like "search_companies" or "find_email") to narrow to a single category. When presenting the result, show each source together with its `strength` so the user sees what each one is best at.';
|
|
7
|
+
export const listDataSourcesSchema = {
|
|
8
|
+
capability: z
|
|
9
|
+
.string()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe('Optional tool/category name to narrow the list, e.g. "search_companies", "find_email", "find_signals". Leave empty to list every category.'),
|
|
12
|
+
};
|
|
13
|
+
// Ordered catalog rows. Only capability-routed tools (multi-source waterfalls) are
|
|
14
|
+
// listed — single-purpose scrapers and utility tools (get_credit_balance,
|
|
15
|
+
// extract_post_engagement) are not "data sources we route across". The two email
|
|
16
|
+
// tools share providers, so they collapse into one row.
|
|
17
|
+
const CATALOG = [
|
|
18
|
+
{ capability: 'search_companies', tool: 'search_companies', label: 'Company search' },
|
|
19
|
+
{ capability: 'find_people', tool: 'find_people', label: 'People search' },
|
|
20
|
+
{ capability: 'find_email', tool: 'find_email / find_emails', label: 'Email finding' },
|
|
21
|
+
{ capability: 'verify_email', tool: 'verify_email', label: 'Email verification' },
|
|
22
|
+
{ capability: 'find_phone', tool: 'find_phone', label: 'Phone finding' },
|
|
23
|
+
{ capability: 'enrich_company', tool: 'enrich_company', label: 'Company enrichment' },
|
|
24
|
+
{ capability: 'enrich_person', tool: 'enrich_person', label: 'Person enrichment' },
|
|
25
|
+
{ capability: 'search_web', tool: 'search_web', label: 'Web search' },
|
|
26
|
+
{ capability: 'search_jobs', tool: 'search_jobs', label: 'Job postings' },
|
|
27
|
+
{ capability: 'search_ads', tool: 'search_ads', label: 'Ads search' },
|
|
28
|
+
{ capability: 'search_places', tool: 'search_places', label: 'Local places' },
|
|
29
|
+
{ capability: 'get_place_reviews', tool: 'get_place_reviews', label: 'Place reviews' },
|
|
30
|
+
{ capability: 'find_influencers', tool: 'find_influencers', label: 'Influencer discovery' },
|
|
31
|
+
{ capability: 'search_reddit', tool: 'search_reddit', label: 'Reddit search' },
|
|
32
|
+
{ capability: 'search_seo', tool: 'search_seo', label: 'SEO & SERP' },
|
|
33
|
+
{ capability: 'find_signals', tool: 'find_signals', label: 'Buying & growth signals' },
|
|
34
|
+
{ capability: 'fetch_page_content', tool: 'fetch_page_content', label: 'Page content' },
|
|
35
|
+
];
|
|
36
|
+
// Vendor-level strength overrides for the catalog. When a vendor appears in a
|
|
37
|
+
// capability via several internal ids (e.g. SignalBase = funding/acquisition/
|
|
38
|
+
// hiring/job-change), the deduped row would otherwise show only the highest-
|
|
39
|
+
// priority sub-id's strength and undersell the vendor. These curated unions give
|
|
40
|
+
// the accurate coverage. Keyed by capability -> branded display name.
|
|
41
|
+
const VENDOR_STRENGTH_OVERRIDES = {
|
|
42
|
+
search_companies: {
|
|
43
|
+
LimaData: 'LinkedIn-based company discovery, incl. Sales Navigator URLs',
|
|
44
|
+
LinkupAPI: 'live LinkedIn company search, incl. recently-funded and hiring companies',
|
|
45
|
+
},
|
|
46
|
+
find_email: {
|
|
47
|
+
LimaData: 'work-email lookup by name + domain or LinkedIn URL',
|
|
48
|
+
},
|
|
49
|
+
enrich_company: {
|
|
50
|
+
CompanyEnrich: 'firmographic enrichment from a domain, name or LinkedIn URL',
|
|
51
|
+
},
|
|
52
|
+
find_influencers: {
|
|
53
|
+
'Influencer Discovery': 'creator discovery by topic & audience, plus lookalikes from a seed handle',
|
|
54
|
+
},
|
|
55
|
+
enrich_person: {
|
|
56
|
+
Findymail: 'LinkedIn profile enrichment & reverse-email lookup',
|
|
57
|
+
Icypeas: 'LinkedIn profile enrichment, name + company lookup & reverse-email',
|
|
58
|
+
LinkupAPI: 'live LinkedIn profile enrichment & reverse-email lookup',
|
|
59
|
+
'People Data Labs': 'structured person enrichment & identity resolution',
|
|
60
|
+
},
|
|
61
|
+
find_signals: {
|
|
62
|
+
SignalBase: 'funding, acquisition, hiring & job-change signals',
|
|
63
|
+
TheirStack: 'hiring & buying-intent signals from job and tech data',
|
|
64
|
+
PredictLeads: 'financing, news & startup-post signals',
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
// Build the source list for one capability: branded names, deduped per vendor
|
|
68
|
+
// (highest-priority id wins and supplies the representative strength).
|
|
69
|
+
function buildSources(capability) {
|
|
70
|
+
const seen = new Set();
|
|
71
|
+
const sources = [];
|
|
72
|
+
for (const id of getProvidersForCapability(capability)) {
|
|
73
|
+
const name = providerDisplayName(id);
|
|
74
|
+
if (seen.has(name))
|
|
75
|
+
continue;
|
|
76
|
+
seen.add(name);
|
|
77
|
+
// Prefer the curated vendor-level union (accurate for multi-id vendors);
|
|
78
|
+
// fall back to the representative sub-id's routing strength.
|
|
79
|
+
const strength = VENDOR_STRENGTH_OVERRIDES[capability]?.[name] ?? getProviderStrength(capability, id);
|
|
80
|
+
sources.push(strength ? { name, strength } : { name });
|
|
81
|
+
}
|
|
82
|
+
return sources;
|
|
83
|
+
}
|
|
84
|
+
function buildRow(row) {
|
|
85
|
+
return { tool: row.tool, label: row.label, sources: buildSources(row.capability) };
|
|
86
|
+
}
|
|
87
|
+
const INTRO = 'ColdIQ automatically routes each request to the best data source — you normally never pick one. These are the sources we route across:';
|
|
88
|
+
export async function listDataSourcesHandler(input) {
|
|
89
|
+
const filter = typeof input.capability === 'string' ? input.capability.trim().toLowerCase() : undefined;
|
|
90
|
+
if (filter) {
|
|
91
|
+
// Match against the capability key, the displayed tool string, or the
|
|
92
|
+
// find_emails alias (which shares the find_email row).
|
|
93
|
+
const matched = CATALOG.filter((row) => row.capability === filter ||
|
|
94
|
+
row.tool.toLowerCase().split(' / ').includes(filter) ||
|
|
95
|
+
(filter === 'find_emails' && row.capability === 'find_email'));
|
|
96
|
+
if (matched.length === 0) {
|
|
97
|
+
const valid = CATALOG.flatMap((row) => row.tool.split(' / '));
|
|
98
|
+
return {
|
|
99
|
+
content: [
|
|
100
|
+
{
|
|
101
|
+
type: 'text',
|
|
102
|
+
text: JSON.stringify({
|
|
103
|
+
error: `'${input.capability}' is not a recognized category. Valid values: ${valid.join(', ')}.`,
|
|
104
|
+
valid_capabilities: valid,
|
|
105
|
+
}),
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
isError: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
content: [{ type: 'text', text: JSON.stringify({ data: { intro: INTRO, capabilities: matched.map(buildRow) } }) }],
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
content: [{ type: 'text', text: JSON.stringify({ data: { intro: INTRO, capabilities: CATALOG.map(buildRow) } }) }],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=list-data-sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-data-sources.js","sourceRoot":"","sources":["../../src/tools/list-data-sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,12 @@ export interface InsightContext {
|
|
|
11
11
|
/** True when the caller pinned this provider via `use_providers`. */
|
|
12
12
|
pinnedByUser: boolean;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Read the curated data-quality strength for a provider within a capability,
|
|
16
|
+
* if one exists. Exposed for the `list_data_sources` catalog so the strengths
|
|
17
|
+
* stay defined in one place.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getProviderStrength(capability: InsightCapability, providerId: string): string | undefined;
|
|
14
20
|
/**
|
|
15
21
|
* Build a data-quality-framed reason for why `providerId` was selected for
|
|
16
22
|
* `capability` given `input`. Returns undefined only when there is genuinely
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-insight.d.ts","sourceRoot":"","sources":["../../src/utils/selection-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAmBhD,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,aAAa,CAAA;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;gFAC4E;IAC5E,WAAW,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,YAAY,EAAE,OAAO,CAAA;CACtB;
|
|
1
|
+
{"version":3,"file":"selection-insight.d.ts","sourceRoot":"","sources":["../../src/utils/selection-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAmBhD,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,aAAa,CAAA;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;gFAC4E;IAC5E,WAAW,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,YAAY,EAAE,OAAO,CAAA;CACtB;AAyKD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAEpB;AA2HD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,cAAc,GAClB,gBAAgB,GAAG,SAAS,CAgC9B"}
|
|
@@ -130,6 +130,24 @@ const STRENGTHS = {
|
|
|
130
130
|
search_reddit: {
|
|
131
131
|
reddit: 'Reddit post and comment search',
|
|
132
132
|
},
|
|
133
|
+
search_seo: {
|
|
134
|
+
kw_search_volume: 'monthly search volume & CPC for keywords',
|
|
135
|
+
kw_trends: 'search-interest trends over time',
|
|
136
|
+
serp_google: 'live Google search results',
|
|
137
|
+
serp_bing: 'live Bing search results',
|
|
138
|
+
serp_youtube: 'YouTube search results',
|
|
139
|
+
bl_summary: 'backlink-profile summary for a domain',
|
|
140
|
+
bl_backlinks: 'individual backlinks for a domain',
|
|
141
|
+
bl_referring: 'referring domains for a target',
|
|
142
|
+
domain_tech: 'technologies detected on a domain',
|
|
143
|
+
domain_whois: 'WHOIS / domain registration data',
|
|
144
|
+
labs_rank_overview: 'organic ranking overview for a domain',
|
|
145
|
+
labs_ranked_kw: 'keywords a domain ranks for',
|
|
146
|
+
labs_competitors: 'organic competitor domains',
|
|
147
|
+
labs_kw_ideas: 'related keyword ideas',
|
|
148
|
+
page_lighthouse: 'Lighthouse performance audit',
|
|
149
|
+
page_content: 'rendered page content',
|
|
150
|
+
},
|
|
133
151
|
find_signals: {
|
|
134
152
|
'signalbase-funding': 'real-time funding-round signals',
|
|
135
153
|
'signalbase-acquisition': 'acquisition signals',
|
|
@@ -146,6 +164,14 @@ const STRENGTHS = {
|
|
|
146
164
|
'exa-contents': 'clean page-content extraction',
|
|
147
165
|
},
|
|
148
166
|
};
|
|
167
|
+
/**
|
|
168
|
+
* Read the curated data-quality strength for a provider within a capability,
|
|
169
|
+
* if one exists. Exposed for the `list_data_sources` catalog so the strengths
|
|
170
|
+
* stay defined in one place.
|
|
171
|
+
*/
|
|
172
|
+
export function getProviderStrength(capability, providerId) {
|
|
173
|
+
return STRENGTHS[capability]?.[providerId];
|
|
174
|
+
}
|
|
149
175
|
// ---------------------------------------------------------------------------
|
|
150
176
|
// Per-capability noun used in the plain fallback line ("X matched this <noun>").
|
|
151
177
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-insight.js","sourceRoot":"","sources":["../../src/utils/selection-insight.ts"],"names":[],"mappings":"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"}
|
|
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/index.ts
CHANGED
|
@@ -144,6 +144,13 @@ import {
|
|
|
144
144
|
getPlaceReviewsHandler,
|
|
145
145
|
} from './tools/get-place-reviews.js'
|
|
146
146
|
|
|
147
|
+
import {
|
|
148
|
+
listDataSourcesName,
|
|
149
|
+
listDataSourcesDescription,
|
|
150
|
+
listDataSourcesSchema,
|
|
151
|
+
listDataSourcesHandler,
|
|
152
|
+
} from './tools/list-data-sources.js'
|
|
153
|
+
|
|
147
154
|
// Initialize HTTP client (reads env vars)
|
|
148
155
|
initClient()
|
|
149
156
|
|
|
@@ -171,6 +178,7 @@ server.tool(searchSeoName, searchSeoDescription, searchSeoSchema, searchSeoHandl
|
|
|
171
178
|
server.tool(findSignalsName, findSignalsDescription, findSignalsSchema, findSignalsHandler)
|
|
172
179
|
server.tool(fetchPageContentName, fetchPageContentDescription, fetchPageContentSchema, fetchPageContentHandler)
|
|
173
180
|
server.tool(getCreditBalanceName, getCreditBalanceDescription, getCreditBalanceSchema, getCreditBalanceHandler)
|
|
181
|
+
server.tool(listDataSourcesName, listDataSourcesDescription, listDataSourcesSchema, listDataSourcesHandler)
|
|
174
182
|
server.tool(extractPostEngagementName, extractPostEngagementDescription, extractPostEngagementSchema, extractPostEngagementHandler)
|
|
175
183
|
server.tool(getPlaceReviewsName, getPlaceReviewsDescription, getPlaceReviewsSchema, getPlaceReviewsHandler)
|
|
176
184
|
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { getProvidersForCapability } from '../utils/provider-resolver.js'
|
|
3
|
+
import { providerDisplayName } from '../utils/provider-display.js'
|
|
4
|
+
import { getProviderStrength, type InsightCapability } from '../utils/selection-insight.js'
|
|
5
|
+
|
|
6
|
+
export const listDataSourcesName = 'list_data_sources'
|
|
7
|
+
|
|
8
|
+
export const listDataSourcesDescription =
|
|
9
|
+
'List the B2B data sources ColdIQ routes across, grouped by what they do (company search, email finding, enrichment, signals, ads, etc.). ColdIQ automatically picks the best source for each request — you normally never choose one — so use this only to see the coverage available (e.g. "is Apollo supported?"). No credits are spent; this is local information. Pass an optional `capability` (a tool name like "search_companies" or "find_email") to narrow to a single category. When presenting the result, show each source together with its `strength` so the user sees what each one is best at.'
|
|
10
|
+
|
|
11
|
+
export const listDataSourcesSchema = {
|
|
12
|
+
capability: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Optional tool/category name to narrow the list, e.g. "search_companies", "find_email", "find_signals". Leave empty to list every category.'),
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Ordered catalog rows. Only capability-routed tools (multi-source waterfalls) are
|
|
19
|
+
// listed — single-purpose scrapers and utility tools (get_credit_balance,
|
|
20
|
+
// extract_post_engagement) are not "data sources we route across". The two email
|
|
21
|
+
// tools share providers, so they collapse into one row.
|
|
22
|
+
const CATALOG: Array<{ capability: InsightCapability; tool: string; label: string }> = [
|
|
23
|
+
{ capability: 'search_companies', tool: 'search_companies', label: 'Company search' },
|
|
24
|
+
{ capability: 'find_people', tool: 'find_people', label: 'People search' },
|
|
25
|
+
{ capability: 'find_email', tool: 'find_email / find_emails', label: 'Email finding' },
|
|
26
|
+
{ capability: 'verify_email', tool: 'verify_email', label: 'Email verification' },
|
|
27
|
+
{ capability: 'find_phone', tool: 'find_phone', label: 'Phone finding' },
|
|
28
|
+
{ capability: 'enrich_company', tool: 'enrich_company', label: 'Company enrichment' },
|
|
29
|
+
{ capability: 'enrich_person', tool: 'enrich_person', label: 'Person enrichment' },
|
|
30
|
+
{ capability: 'search_web', tool: 'search_web', label: 'Web search' },
|
|
31
|
+
{ capability: 'search_jobs', tool: 'search_jobs', label: 'Job postings' },
|
|
32
|
+
{ capability: 'search_ads', tool: 'search_ads', label: 'Ads search' },
|
|
33
|
+
{ capability: 'search_places', tool: 'search_places', label: 'Local places' },
|
|
34
|
+
{ capability: 'get_place_reviews', tool: 'get_place_reviews', label: 'Place reviews' },
|
|
35
|
+
{ capability: 'find_influencers', tool: 'find_influencers', label: 'Influencer discovery' },
|
|
36
|
+
{ capability: 'search_reddit', tool: 'search_reddit', label: 'Reddit search' },
|
|
37
|
+
{ capability: 'search_seo', tool: 'search_seo', label: 'SEO & SERP' },
|
|
38
|
+
{ capability: 'find_signals', tool: 'find_signals', label: 'Buying & growth signals' },
|
|
39
|
+
{ capability: 'fetch_page_content', tool: 'fetch_page_content', label: 'Page content' },
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
// Vendor-level strength overrides for the catalog. When a vendor appears in a
|
|
43
|
+
// capability via several internal ids (e.g. SignalBase = funding/acquisition/
|
|
44
|
+
// hiring/job-change), the deduped row would otherwise show only the highest-
|
|
45
|
+
// priority sub-id's strength and undersell the vendor. These curated unions give
|
|
46
|
+
// the accurate coverage. Keyed by capability -> branded display name.
|
|
47
|
+
const VENDOR_STRENGTH_OVERRIDES: Partial<Record<InsightCapability, Record<string, string>>> = {
|
|
48
|
+
search_companies: {
|
|
49
|
+
LimaData: 'LinkedIn-based company discovery, incl. Sales Navigator URLs',
|
|
50
|
+
LinkupAPI: 'live LinkedIn company search, incl. recently-funded and hiring companies',
|
|
51
|
+
},
|
|
52
|
+
find_email: {
|
|
53
|
+
LimaData: 'work-email lookup by name + domain or LinkedIn URL',
|
|
54
|
+
},
|
|
55
|
+
enrich_company: {
|
|
56
|
+
CompanyEnrich: 'firmographic enrichment from a domain, name or LinkedIn URL',
|
|
57
|
+
},
|
|
58
|
+
find_influencers: {
|
|
59
|
+
'Influencer Discovery': 'creator discovery by topic & audience, plus lookalikes from a seed handle',
|
|
60
|
+
},
|
|
61
|
+
enrich_person: {
|
|
62
|
+
Findymail: 'LinkedIn profile enrichment & reverse-email lookup',
|
|
63
|
+
Icypeas: 'LinkedIn profile enrichment, name + company lookup & reverse-email',
|
|
64
|
+
LinkupAPI: 'live LinkedIn profile enrichment & reverse-email lookup',
|
|
65
|
+
'People Data Labs': 'structured person enrichment & identity resolution',
|
|
66
|
+
},
|
|
67
|
+
find_signals: {
|
|
68
|
+
SignalBase: 'funding, acquisition, hiring & job-change signals',
|
|
69
|
+
TheirStack: 'hiring & buying-intent signals from job and tech data',
|
|
70
|
+
PredictLeads: 'financing, news & startup-post signals',
|
|
71
|
+
},
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface Source {
|
|
75
|
+
name: string
|
|
76
|
+
strength?: string
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
interface CapabilityCatalog {
|
|
80
|
+
tool: string
|
|
81
|
+
label: string
|
|
82
|
+
sources: Source[]
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Build the source list for one capability: branded names, deduped per vendor
|
|
86
|
+
// (highest-priority id wins and supplies the representative strength).
|
|
87
|
+
function buildSources(capability: InsightCapability): Source[] {
|
|
88
|
+
const seen = new Set<string>()
|
|
89
|
+
const sources: Source[] = []
|
|
90
|
+
for (const id of getProvidersForCapability(capability)) {
|
|
91
|
+
const name = providerDisplayName(id)
|
|
92
|
+
if (seen.has(name)) continue
|
|
93
|
+
seen.add(name)
|
|
94
|
+
// Prefer the curated vendor-level union (accurate for multi-id vendors);
|
|
95
|
+
// fall back to the representative sub-id's routing strength.
|
|
96
|
+
const strength = VENDOR_STRENGTH_OVERRIDES[capability]?.[name] ?? getProviderStrength(capability, id)
|
|
97
|
+
sources.push(strength ? { name, strength } : { name })
|
|
98
|
+
}
|
|
99
|
+
return sources
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function buildRow(row: (typeof CATALOG)[number]): CapabilityCatalog {
|
|
103
|
+
return { tool: row.tool, label: row.label, sources: buildSources(row.capability) }
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const INTRO =
|
|
107
|
+
'ColdIQ automatically routes each request to the best data source — you normally never pick one. These are the sources we route across:'
|
|
108
|
+
|
|
109
|
+
export async function listDataSourcesHandler(input: Record<string, unknown>) {
|
|
110
|
+
const filter = typeof input.capability === 'string' ? input.capability.trim().toLowerCase() : undefined
|
|
111
|
+
|
|
112
|
+
if (filter) {
|
|
113
|
+
// Match against the capability key, the displayed tool string, or the
|
|
114
|
+
// find_emails alias (which shares the find_email row).
|
|
115
|
+
const matched = CATALOG.filter(
|
|
116
|
+
(row) =>
|
|
117
|
+
row.capability === filter ||
|
|
118
|
+
row.tool.toLowerCase().split(' / ').includes(filter) ||
|
|
119
|
+
(filter === 'find_emails' && row.capability === 'find_email'),
|
|
120
|
+
)
|
|
121
|
+
if (matched.length === 0) {
|
|
122
|
+
const valid = CATALOG.flatMap((row) => row.tool.split(' / '))
|
|
123
|
+
return {
|
|
124
|
+
content: [
|
|
125
|
+
{
|
|
126
|
+
type: 'text' as const,
|
|
127
|
+
text: JSON.stringify({
|
|
128
|
+
error: `'${input.capability}' is not a recognized category. Valid values: ${valid.join(', ')}.`,
|
|
129
|
+
valid_capabilities: valid,
|
|
130
|
+
}),
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
isError: true,
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
content: [{ type: 'text' as const, text: JSON.stringify({ data: { intro: INTRO, capabilities: matched.map(buildRow) } }) }],
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return {
|
|
142
|
+
content: [{ type: 'text' as const, text: JSON.stringify({ data: { intro: INTRO, capabilities: CATALOG.map(buildRow) } }) }],
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -164,6 +164,24 @@ const STRENGTHS: Partial<Record<InsightCapability, Record<string, string>>> = {
|
|
|
164
164
|
search_reddit: {
|
|
165
165
|
reddit: 'Reddit post and comment search',
|
|
166
166
|
},
|
|
167
|
+
search_seo: {
|
|
168
|
+
kw_search_volume: 'monthly search volume & CPC for keywords',
|
|
169
|
+
kw_trends: 'search-interest trends over time',
|
|
170
|
+
serp_google: 'live Google search results',
|
|
171
|
+
serp_bing: 'live Bing search results',
|
|
172
|
+
serp_youtube: 'YouTube search results',
|
|
173
|
+
bl_summary: 'backlink-profile summary for a domain',
|
|
174
|
+
bl_backlinks: 'individual backlinks for a domain',
|
|
175
|
+
bl_referring: 'referring domains for a target',
|
|
176
|
+
domain_tech: 'technologies detected on a domain',
|
|
177
|
+
domain_whois: 'WHOIS / domain registration data',
|
|
178
|
+
labs_rank_overview: 'organic ranking overview for a domain',
|
|
179
|
+
labs_ranked_kw: 'keywords a domain ranks for',
|
|
180
|
+
labs_competitors: 'organic competitor domains',
|
|
181
|
+
labs_kw_ideas: 'related keyword ideas',
|
|
182
|
+
page_lighthouse: 'Lighthouse performance audit',
|
|
183
|
+
page_content: 'rendered page content',
|
|
184
|
+
},
|
|
167
185
|
find_signals: {
|
|
168
186
|
'signalbase-funding': 'real-time funding-round signals',
|
|
169
187
|
'signalbase-acquisition': 'acquisition signals',
|
|
@@ -181,6 +199,18 @@ const STRENGTHS: Partial<Record<InsightCapability, Record<string, string>>> = {
|
|
|
181
199
|
},
|
|
182
200
|
}
|
|
183
201
|
|
|
202
|
+
/**
|
|
203
|
+
* Read the curated data-quality strength for a provider within a capability,
|
|
204
|
+
* if one exists. Exposed for the `list_data_sources` catalog so the strengths
|
|
205
|
+
* stay defined in one place.
|
|
206
|
+
*/
|
|
207
|
+
export function getProviderStrength(
|
|
208
|
+
capability: InsightCapability,
|
|
209
|
+
providerId: string,
|
|
210
|
+
): string | undefined {
|
|
211
|
+
return STRENGTHS[capability]?.[providerId]
|
|
212
|
+
}
|
|
213
|
+
|
|
184
214
|
// ---------------------------------------------------------------------------
|
|
185
215
|
// Per-capability noun used in the plain fallback line ("X matched this <noun>").
|
|
186
216
|
// ---------------------------------------------------------------------------
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { listDataSourcesHandler } from '../../src/tools/list-data-sources.js'
|
|
3
|
+
|
|
4
|
+
interface Source { name: string; strength?: string }
|
|
5
|
+
interface CapabilityCatalog { tool: string; label: string; sources: Source[] }
|
|
6
|
+
|
|
7
|
+
function parse(result: { content: { text: string }[]; isError?: boolean }) {
|
|
8
|
+
return JSON.parse(result.content[0].text)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function rowFor(caps: CapabilityCatalog[], toolContains: string): CapabilityCatalog | undefined {
|
|
12
|
+
return caps.find((c) => c.tool.includes(toolContains))
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe('list_data_sources handler', () => {
|
|
16
|
+
it('lists every capability-routed category with branded sources', async () => {
|
|
17
|
+
const parsed = parse(await listDataSourcesHandler({}))
|
|
18
|
+
const caps: CapabilityCatalog[] = parsed.data.capabilities
|
|
19
|
+
expect(parsed.data.intro).toContain('routes')
|
|
20
|
+
expect(caps.length).toBeGreaterThan(10)
|
|
21
|
+
|
|
22
|
+
const companies = rowFor(caps, 'search_companies')!
|
|
23
|
+
const names = companies.sources.map((s) => s.name)
|
|
24
|
+
expect(names).toContain('Apollo')
|
|
25
|
+
expect(names).toContain('TheirStack')
|
|
26
|
+
|
|
27
|
+
const emails = rowFor(caps, 'find_email')!
|
|
28
|
+
expect(emails.sources.map((s) => s.name)).toContain('FullEnrich')
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('never emits a raw slug or "Apify" in any source name', async () => {
|
|
32
|
+
const parsed = parse(await listDataSourcesHandler({}))
|
|
33
|
+
const caps: CapabilityCatalog[] = parsed.data.capabilities
|
|
34
|
+
for (const cap of caps) {
|
|
35
|
+
for (const src of cap.sources) {
|
|
36
|
+
expect(src.name).not.toContain('_')
|
|
37
|
+
expect(src.name.toLowerCase()).not.toContain('apify')
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('dedupes vendors within a category (one row per brand)', async () => {
|
|
43
|
+
const parsed = parse(await listDataSourcesHandler({}))
|
|
44
|
+
const caps: CapabilityCatalog[] = parsed.data.capabilities
|
|
45
|
+
const companies = rowFor(caps, 'search_companies')!
|
|
46
|
+
const names = companies.sources.map((s) => s.name)
|
|
47
|
+
// search_companies has limadata + limadata-prospect-* + linkupapi-* internally
|
|
48
|
+
expect(names.filter((n) => n === 'LimaData')).toHaveLength(1)
|
|
49
|
+
expect(names.filter((n) => n === 'LinkupAPI')).toHaveLength(1)
|
|
50
|
+
// every row carries the metadata a frontend needs
|
|
51
|
+
for (const cap of caps) {
|
|
52
|
+
expect(typeof cap.tool).toBe('string')
|
|
53
|
+
expect(typeof cap.label).toBe('string')
|
|
54
|
+
expect(cap.sources.length).toBeGreaterThan(0)
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('carries curated strengths on the well-known sources', async () => {
|
|
59
|
+
const parsed = parse(await listDataSourcesHandler({}))
|
|
60
|
+
const caps: CapabilityCatalog[] = parsed.data.capabilities
|
|
61
|
+
const theirstack = rowFor(caps, 'search_companies')!.sources.find((s) => s.name === 'TheirStack')!
|
|
62
|
+
expect(theirstack.strength).toBeTruthy()
|
|
63
|
+
expect(theirstack.strength).toContain('technographic')
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
it('shows the full union strength for multi-action vendors', async () => {
|
|
67
|
+
const parsed = parse(await listDataSourcesHandler({ capability: 'find_signals' }))
|
|
68
|
+
const signals: CapabilityCatalog = parsed.data.capabilities[0]
|
|
69
|
+
const signalbase = signals.sources.find((s) => s.name === 'SignalBase')!
|
|
70
|
+
// not just "funding" — the union covers all four signal types
|
|
71
|
+
expect(signalbase.strength).toContain('acquisition')
|
|
72
|
+
expect(signalbase.strength).toContain('job-change')
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
it('gives every SEO source a non-empty strength', async () => {
|
|
76
|
+
const parsed = parse(await listDataSourcesHandler({ capability: 'search_seo' }))
|
|
77
|
+
const seo: CapabilityCatalog = parsed.data.capabilities[0]
|
|
78
|
+
expect(seo.sources.length).toBeGreaterThan(0)
|
|
79
|
+
for (const src of seo.sources) {
|
|
80
|
+
expect(src.strength).toBeTruthy()
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('filters to a single category by tool name', async () => {
|
|
85
|
+
const parsed = parse(await listDataSourcesHandler({ capability: 'find_email' }))
|
|
86
|
+
const caps: CapabilityCatalog[] = parsed.data.capabilities
|
|
87
|
+
expect(caps).toHaveLength(1)
|
|
88
|
+
expect(caps[0].tool).toContain('find_email')
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
it('accepts the find_emails alias for the shared email row', async () => {
|
|
92
|
+
const parsed = parse(await listDataSourcesHandler({ capability: 'find_emails' }))
|
|
93
|
+
expect(parsed.data.capabilities).toHaveLength(1)
|
|
94
|
+
expect(parsed.data.capabilities[0].tool).toContain('find_email')
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
it('returns an error payload listing valid values for an unknown category', async () => {
|
|
98
|
+
const result = await listDataSourcesHandler({ capability: 'nonsense' })
|
|
99
|
+
expect(result.isError).toBe(true)
|
|
100
|
+
const parsed = parse(result)
|
|
101
|
+
expect(parsed.error).toContain('not a recognized category')
|
|
102
|
+
expect(parsed.valid_capabilities).toContain('search_companies')
|
|
103
|
+
})
|
|
104
|
+
})
|