@coldiq/mcp 0.1.0 → 0.1.6
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/README.md +114 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -1
- package/dist/client.js.map +1 -1
- package/dist/executor.d.ts +1 -2
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +45 -17
- package/dist/executor.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +4 -82
- package/dist/registry.js.map +1 -1
- package/dist/tools/find-email.d.ts.map +1 -1
- package/dist/tools/find-email.js +30 -2
- package/dist/tools/find-email.js.map +1 -1
- package/dist/tools/find-emails.d.ts.map +1 -1
- package/dist/tools/find-emails.js +4 -3
- package/dist/tools/find-emails.js.map +1 -1
- package/dist/tools/find-signals.js +1 -1
- package/dist/tools/find-signals.js.map +1 -1
- package/package.json +5 -2
- package/src/client.ts +4 -1
- package/src/executor.ts +46 -24
- package/src/registry.ts +7 -74
- package/src/tools/find-email.ts +32 -2
- package/src/tools/find-emails.ts +4 -3
- package/src/tools/find-signals.ts +1 -1
- package/test-ads-live.ts +3 -2
- package/test-company-live.ts +3 -2
- package/test-email-live.ts +13 -12
- package/test-influencers-live.ts +3 -2
- package/test-jobs-live.ts +3 -2
- package/test-linkupapi-live.ts +3 -2
- package/test-phone-live.ts +3 -2
- package/test-places-live.ts +3 -2
- package/test-reddit-live.ts +3 -2
- package/test-search-live.ts +3 -2
- package/test-seo-live.ts +3 -2
- package/test-web-live.ts +3 -2
- package/tests/client.test.ts +1 -1
- package/tests/executor.test.ts +227 -0
- package/tests/registry.test.ts +1 -77
- package/tests/tools/{enrich-email.test.ts → find-email.test.ts} +5 -5
- package/tests/tools/{enrich-emails.test.ts → find-emails.test.ts} +16 -15
- package/tests/tools/find-people.test.ts +12 -12
- package/tests/tools/search-places.test.ts +4 -4
- package/tests/tools/search-reddit.test.ts +6 -6
- package/dist/tools/enrich-email.d.ts +0 -24
- package/dist/tools/enrich-email.d.ts.map +0 -1
- package/dist/tools/enrich-email.js +0 -19
- package/dist/tools/enrich-email.js.map +0 -1
- package/dist/tools/enrich-emails.d.ts +0 -31
- package/dist/tools/enrich-emails.d.ts.map +0 -1
- package/dist/tools/enrich-emails.js +0 -146
- package/dist/tools/enrich-emails.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# ColdIQ MCP Server
|
|
2
|
+
|
|
3
|
+
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that exposes ColdIQ's B2B data marketplace to AI assistants. Connect it to Claude or any MCP-compatible client to search companies, find and enrich contacts, verify emails, track sales signals, and more — all powered by ColdIQ's unified API.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- Node.js 18+
|
|
8
|
+
- A [ColdIQ API key](https://marketplace.coldiq.com)
|
|
9
|
+
|
|
10
|
+
## Configuration
|
|
11
|
+
|
|
12
|
+
| Variable | Required | Default | Description |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `COLDIQ_API_KEY` | Yes | — | Your ColdIQ API key |
|
|
15
|
+
| `COLDIQ_API_URL` | No | `https://api.coldiq.com` | Override the API base URL |
|
|
16
|
+
| `COLDIQ_DEBUG` | No | — | Set to `1` to enable debug logging |
|
|
17
|
+
|
|
18
|
+
## Connecting to Claude
|
|
19
|
+
|
|
20
|
+
### Claude Desktop
|
|
21
|
+
|
|
22
|
+
Add the following to your `claude_desktop_config.json`:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"mcpServers": {
|
|
27
|
+
"coldiq": {
|
|
28
|
+
"command": "npx",
|
|
29
|
+
"args": ["-y", "@coldiq/mcp@latest"],
|
|
30
|
+
"env": {
|
|
31
|
+
"COLDIQ_API_KEY": "your_api_key_here"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Claude Code
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
claude mcp add coldiq -e COLDIQ_API_KEY=<your-key> -- npx -y @coldiq/mcp@latest
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Running directly
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
COLDIQ_API_KEY=your_key npx @coldiq/mcp@latest
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Available Tools
|
|
51
|
+
|
|
52
|
+
### Prospecting
|
|
53
|
+
|
|
54
|
+
| Tool | Description |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `search_companies` | Search B2B companies by firmographics, tech stack, funding, headcount, or hiring signals |
|
|
57
|
+
| `find_people` | Find people at companies filtered by job title or department |
|
|
58
|
+
| `find_influencers` | Discover LinkedIn or Twitter influencers in a niche |
|
|
59
|
+
|
|
60
|
+
### Contact Data
|
|
61
|
+
|
|
62
|
+
| Tool | Description |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `find_email` | Find a professional email from a name and domain (waterfall across providers) |
|
|
65
|
+
| `verify_email` | Check if an email address is deliverable |
|
|
66
|
+
| `find_phone` | Find a phone number for a contact |
|
|
67
|
+
|
|
68
|
+
### Enrichment
|
|
69
|
+
|
|
70
|
+
| Tool | Description |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `enrich_person` | Enrich a person's profile from a LinkedIn URL, name, or domain |
|
|
73
|
+
| `enrich_company` | Enrich a company's profile from its domain, LinkedIn URL, or name |
|
|
74
|
+
|
|
75
|
+
### Intelligence & Research
|
|
76
|
+
|
|
77
|
+
| Tool | Description |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `find_signals` | Surface sales signals: funding rounds, acquisitions, job changes, hiring intent, buying intent, news |
|
|
80
|
+
| `search_jobs` | Search live job postings; routes to ATS career sites or LinkedIn based on filters |
|
|
81
|
+
| `search_ads` | Discover active LinkedIn ads from a company |
|
|
82
|
+
| `search_seo` | SERP rankings, traffic data, and technology stack analysis |
|
|
83
|
+
| `search_reddit` | Search Reddit posts and discussions |
|
|
84
|
+
|
|
85
|
+
### Web & Local
|
|
86
|
+
|
|
87
|
+
| Tool | Description |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `search_web` | General web search (Google or neural/Exa) |
|
|
90
|
+
| `search_places` | Find local businesses and places |
|
|
91
|
+
| `fetch_page_content` | Extract text content or a summary from any URL |
|
|
92
|
+
|
|
93
|
+
## Development
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Run unit tests
|
|
97
|
+
npm test
|
|
98
|
+
|
|
99
|
+
# Watch mode
|
|
100
|
+
npm run test:watch
|
|
101
|
+
|
|
102
|
+
# Live integration tests (consumes credits)
|
|
103
|
+
LIVE_TESTS=1 npm run test:gtm
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Tests live in `tests/`, mirroring the `src/` structure. See `tests/gtm-scenarios.md` for realistic end-to-end usage scenarios.
|
|
107
|
+
|
|
108
|
+
## Architecture
|
|
109
|
+
|
|
110
|
+
The server is built on three layers:
|
|
111
|
+
|
|
112
|
+
- **Tools** (`src/tools/`) — MCP tool definitions with Zod input schemas and descriptions
|
|
113
|
+
- **Executor** (`src/executor.ts`) — Waterfall/fallback engine that tries providers in priority order
|
|
114
|
+
- **Registry** (`src/registry.ts`) — Maps each capability to an ordered list of providers with parameter translation, applicability gates, and response normalization
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAKD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAQjE;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":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAKD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAQjE;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,CAsCtB"}
|
package/dist/client.js
CHANGED
|
@@ -37,10 +37,13 @@ export async function callApi(method, path, body, queryParams) {
|
|
|
37
37
|
return { ok: res.ok, status: res.status, data };
|
|
38
38
|
}
|
|
39
39
|
catch (err) {
|
|
40
|
+
if (process.env.COLDIQ_DEBUG) {
|
|
41
|
+
console.error(`[coldiq:debug] network error: ${err instanceof Error ? err.message : String(err)}`);
|
|
42
|
+
}
|
|
40
43
|
return {
|
|
41
44
|
ok: false,
|
|
42
45
|
status: 0,
|
|
43
|
-
data: { error:
|
|
46
|
+
data: { error: 'Network error' },
|
|
44
47
|
};
|
|
45
48
|
}
|
|
46
49
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,IAAI,OAAe,CAAA;AACnB,IAAI,OAAe,CAAA;AAEnB,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,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;AACvC,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;KACnC,CAAA;IAED,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAE7C,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7C,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAA;QAChD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,IAAI,OAAe,CAAA;AACnB,IAAI,OAAe,CAAA;AAEnB,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,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;AACvC,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;KACnC,CAAA;IAED,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAE7C,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7C,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAA;QAChD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACpG,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;SACjC,CAAA;IACH,CAAC;AACH,CAAC"}
|
package/dist/executor.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface ExecutionResult {
|
|
|
9
9
|
export interface ExecutionError {
|
|
10
10
|
error: string;
|
|
11
11
|
providers_tried: Array<{
|
|
12
|
-
|
|
12
|
+
provider: string;
|
|
13
13
|
status: number;
|
|
14
14
|
error: string;
|
|
15
15
|
}>;
|
|
@@ -17,5 +17,4 @@ export interface ExecutionError {
|
|
|
17
17
|
declare function isExecutionError(result: ExecutionResult | ExecutionError): result is ExecutionError;
|
|
18
18
|
export { isExecutionError };
|
|
19
19
|
export declare function executeWithFallback(capability: Capability, input: Record<string, unknown>): Promise<ExecutionResult | ExecutionError>;
|
|
20
|
-
export declare function executeWaterfall(capability: Capability, input: Record<string, unknown>): Promise<ExecutionResult | ExecutionError>;
|
|
21
20
|
//# sourceMappingURL=executor.d.ts.map
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,EAAE,KAAK,CAAC;QAAE,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5E;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,GAAG,MAAM,IAAI,cAAc,CAE5F;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA;AA+G3B,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,eAAe,GAAG,cAAc,CAAC,CAoE3C"}
|
package/dist/executor.js
CHANGED
|
@@ -68,8 +68,16 @@ function sleep(ms) {
|
|
|
68
68
|
// ---------------------------------------------------------------------------
|
|
69
69
|
async function executeSingle(provider, input) {
|
|
70
70
|
const start = Date.now();
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
let payload;
|
|
72
|
+
try {
|
|
73
|
+
payload = provider.mapParams(input);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
77
|
+
debug(`${provider.id}: mapParams threw — ${msg}`);
|
|
78
|
+
return { ok: false, status: 0, data: { error: `mapParams_threw: ${msg}` }, latencyMs: Date.now() - start };
|
|
79
|
+
}
|
|
80
|
+
debug(`${provider.id}: payload_keys = ${Object.keys(payload?.body ?? {}).join(',')}`);
|
|
73
81
|
let result;
|
|
74
82
|
if (provider.async) {
|
|
75
83
|
const asyncResult = await executeAsync(provider, payload);
|
|
@@ -89,17 +97,40 @@ export async function executeWithFallback(capability, input) {
|
|
|
89
97
|
: getProviders(capability);
|
|
90
98
|
const errors = [];
|
|
91
99
|
for (const provider of providers) {
|
|
92
|
-
if (provider.isApplicable
|
|
93
|
-
|
|
94
|
-
|
|
100
|
+
if (provider.isApplicable) {
|
|
101
|
+
let applicable;
|
|
102
|
+
try {
|
|
103
|
+
applicable = provider.isApplicable(input);
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
debug(`${capability} → ${provider.id}: isApplicable threw — ${err instanceof Error ? err.message : String(err)}, skipping`);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (!applicable) {
|
|
110
|
+
debug(`${capability} → skipping ${provider.id} (input not applicable)`);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
95
113
|
}
|
|
96
114
|
log(`${capability} → trying ${provider.id}`);
|
|
97
115
|
const result = await executeSingle(provider, input);
|
|
98
116
|
let payload = result.data;
|
|
99
117
|
if (result.ok && provider.postFilter) {
|
|
100
|
-
|
|
118
|
+
try {
|
|
119
|
+
payload = provider.postFilter(payload, input);
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
debug(`${provider.id}: postFilter threw — ${err instanceof Error ? err.message : String(err)}, using raw payload`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
let hasResult;
|
|
126
|
+
try {
|
|
127
|
+
hasResult = result.ok && provider.hasResult(payload);
|
|
101
128
|
}
|
|
102
|
-
|
|
129
|
+
catch (err) {
|
|
130
|
+
debug(`${provider.id}: hasResult threw — ${err instanceof Error ? err.message : String(err)}, treating as no result`);
|
|
131
|
+
hasResult = false;
|
|
132
|
+
}
|
|
133
|
+
if (hasResult) {
|
|
103
134
|
log(`${capability} → ${provider.id} ✓ (${result.latencyMs}ms)`);
|
|
104
135
|
return { data: payload, _meta: { provider: provider.id, latencyMs: result.latencyMs } };
|
|
105
136
|
}
|
|
@@ -113,18 +144,15 @@ export async function executeWithFallback(capability, input) {
|
|
|
113
144
|
log(`${capability} → ${provider.id} ✗ ${errMsg}`);
|
|
114
145
|
errors.push({ id: provider.id, status: result.status, error: errMsg });
|
|
115
146
|
}
|
|
147
|
+
debug(`${capability}: all ${errors.length} providers failed — ${JSON.stringify(errors)}`);
|
|
148
|
+
const sanitized = errors.map((e, i) => ({
|
|
149
|
+
provider: `provider_${i + 1}`,
|
|
150
|
+
status: e.status,
|
|
151
|
+
error: e.error.slice(0, 120),
|
|
152
|
+
}));
|
|
116
153
|
return {
|
|
117
154
|
error: `All ${errors.length} providers failed for ${capability}`,
|
|
118
|
-
providers_tried:
|
|
155
|
+
providers_tried: sanitized,
|
|
119
156
|
};
|
|
120
157
|
}
|
|
121
|
-
// ---------------------------------------------------------------------------
|
|
122
|
-
// Waterfall execution — try providers until one returns a result
|
|
123
|
-
// Used for enrich_email: stop on first provider that finds an email
|
|
124
|
-
// ---------------------------------------------------------------------------
|
|
125
|
-
export async function executeWaterfall(capability, input) {
|
|
126
|
-
// Waterfall is functionally the same as fallback — try each until one succeeds
|
|
127
|
-
// The distinction is semantic: waterfall means "I expect most to fail, stop on first hit"
|
|
128
|
-
return executeWithFallback(capability, input);
|
|
129
|
-
}
|
|
130
158
|
//# sourceMappingURL=executor.js.map
|
package/dist/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.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":"AAIA,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAA;IACtB,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,kBAAkB,GAClB,eAAe,GACf,YAAY,GACZ,cAAc,GACd,oBAAoB,CAAA;AA0CxB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAA;IACtB,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,kBAAkB,GAClB,eAAe,GACf,YAAY,GACZ,cAAc,GACd,oBAAoB,CAAA;AA0CxB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAk5FD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,EAAE,CAIpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,OAAO,GAAG,aAAa,EAAE,CAW5E"}
|
package/dist/registry.js
CHANGED
|
@@ -609,87 +609,6 @@ const searchCompaniesProviders = [
|
|
|
609
609
|
isNonEmptyArray(input.industries) ||
|
|
610
610
|
isNonEmptyArray(input.technologies),
|
|
611
611
|
},
|
|
612
|
-
{
|
|
613
|
-
id: 'wiza',
|
|
614
|
-
endpoint: '/wiza/prospects/create-prospect-list',
|
|
615
|
-
method: 'POST',
|
|
616
|
-
priority: 5,
|
|
617
|
-
isApplicable: (input) => typeof input.min_founded_year === 'number' ||
|
|
618
|
-
typeof input.max_founded_year === 'number' ||
|
|
619
|
-
isNonEmptyArray(input.funding_stages) ||
|
|
620
|
-
typeof input.min_funding_amount === 'number' ||
|
|
621
|
-
typeof input.max_funding_amount === 'number',
|
|
622
|
-
mapParams: (input) => {
|
|
623
|
-
// Wiza filters use [{v: 'value'}] shape. Wiza's prospect endpoints return *people*,
|
|
624
|
-
// but create-prospect-list also returns the company set indirectly via its filters.
|
|
625
|
-
// For a search_companies waterfall, we treat a non-empty `stats.people` as proof
|
|
626
|
-
// that the requested filter set matched at least one company.
|
|
627
|
-
const wrap = (vals) => (Array.isArray(vals) && vals.length > 0 ? vals.map((v) => ({ v })) : undefined);
|
|
628
|
-
const filters = {};
|
|
629
|
-
const industries = [
|
|
630
|
-
...(input.industries ?? []),
|
|
631
|
-
...(input.keywords ?? []),
|
|
632
|
-
];
|
|
633
|
-
// Wiza company_location accepts free-text English names — translate ISO codes.
|
|
634
|
-
const locations = [
|
|
635
|
-
...(input.locations ?? []),
|
|
636
|
-
...(input.countries ?? []).map(isoCountryToName),
|
|
637
|
-
];
|
|
638
|
-
if (industries.length > 0)
|
|
639
|
-
filters.company_industry = wrap(industries);
|
|
640
|
-
if (locations.length > 0)
|
|
641
|
-
filters.company_location = wrap(locations);
|
|
642
|
-
if (typeof input.min_founded_year === 'number')
|
|
643
|
-
filters.year_founded_start = wrap([String(input.min_founded_year)]);
|
|
644
|
-
if (typeof input.max_founded_year === 'number')
|
|
645
|
-
filters.year_founded_end = wrap([String(input.max_founded_year)]);
|
|
646
|
-
if (isNonEmptyArray(input.funding_stages))
|
|
647
|
-
filters.funding_stage = wrap(input.funding_stages);
|
|
648
|
-
if (typeof input.min_funding_amount === 'number')
|
|
649
|
-
filters.funding_min = wrap([String(input.min_funding_amount)]);
|
|
650
|
-
if (typeof input.max_funding_amount === 'number')
|
|
651
|
-
filters.funding_max = wrap([String(input.max_funding_amount)]);
|
|
652
|
-
const limit = Math.min(input.limit ?? 25, 500);
|
|
653
|
-
return {
|
|
654
|
-
body: {
|
|
655
|
-
list: { name: 'mcp-search-companies', max_profiles: limit },
|
|
656
|
-
filters,
|
|
657
|
-
enrichment_level: 'none',
|
|
658
|
-
},
|
|
659
|
-
};
|
|
660
|
-
},
|
|
661
|
-
hasResult: (data) => {
|
|
662
|
-
// Final poll response: { status, type, data: { id, status: 'finished', stats: { people } } }
|
|
663
|
-
const d = data;
|
|
664
|
-
const inner = d.data;
|
|
665
|
-
const stats = inner?.stats;
|
|
666
|
-
const people = stats?.people;
|
|
667
|
-
return typeof people === 'number' && people > 0;
|
|
668
|
-
},
|
|
669
|
-
async: {
|
|
670
|
-
extractId: (response) => {
|
|
671
|
-
const r = response;
|
|
672
|
-
const inner = r.data;
|
|
673
|
-
const id = inner?.id;
|
|
674
|
-
if (typeof id === 'number')
|
|
675
|
-
return String(id);
|
|
676
|
-
if (typeof id === 'string' && id.length > 0)
|
|
677
|
-
return id;
|
|
678
|
-
throw new Error('Wiza response has no list id');
|
|
679
|
-
},
|
|
680
|
-
pollEndpoint: (id) => `/wiza/lists/${id}`,
|
|
681
|
-
pollIntervalMs: 10_000,
|
|
682
|
-
timeoutMs: 300_000, // 5 min
|
|
683
|
-
isComplete: (data) => {
|
|
684
|
-
// Wiza uses different status strings across endpoints — accept all known terminal
|
|
685
|
-
// states (`finished` for individual reveals, `completed` for lists, plus failures).
|
|
686
|
-
const d = data;
|
|
687
|
-
const inner = d.data;
|
|
688
|
-
const status = inner?.status;
|
|
689
|
-
return status === 'finished' || status === 'completed' || status === 'failed';
|
|
690
|
-
},
|
|
691
|
-
},
|
|
692
|
-
},
|
|
693
612
|
{
|
|
694
613
|
id: 'limadata-prospect-filter',
|
|
695
614
|
endpoint: '/coldiq/prospect/companies/filter',
|
|
@@ -1243,9 +1162,12 @@ const findEmailProviders = [
|
|
|
1243
1162
|
endpoint: '/findymail/search/name',
|
|
1244
1163
|
method: 'POST',
|
|
1245
1164
|
priority: 1,
|
|
1165
|
+
isApplicable: (input) => typeof input.first_name === 'string' && input.first_name.length > 0 &&
|
|
1166
|
+
((typeof input.domain === 'string' && input.domain.length > 0) ||
|
|
1167
|
+
(typeof input.company_name === 'string' && input.company_name.length > 0)),
|
|
1246
1168
|
mapParams: (input) => ({
|
|
1247
1169
|
body: {
|
|
1248
|
-
name:
|
|
1170
|
+
name: [input.first_name, input.last_name].filter(Boolean).join(' '),
|
|
1249
1171
|
domain: input.domain,
|
|
1250
1172
|
},
|
|
1251
1173
|
}),
|