@clustr-ai/mcp-server 1.0.2 → 1.0.4
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 +10 -0
- package/dist/client.js +29 -1
- package/dist/client.js.map +1 -1
- package/dist/index.js +16 -4
- package/dist/index.js.map +1 -1
- package/dist/tools/create-icp.d.ts +2 -0
- package/dist/tools/create-icp.js +26 -0
- package/dist/tools/create-icp.js.map +1 -0
- package/dist/tools/create-target-accounts.js +2 -20
- package/dist/tools/create-target-accounts.js.map +1 -1
- package/dist/tools/delete-icp.d.ts +2 -0
- package/dist/tools/delete-icp.js +9 -0
- package/dist/tools/delete-icp.js.map +1 -0
- package/dist/tools/delete-target-account.js +2 -20
- package/dist/tools/delete-target-account.js.map +1 -1
- package/dist/tools/get-job-status.d.ts +2 -0
- package/dist/tools/get-job-status.js +10 -0
- package/dist/tools/get-job-status.js.map +1 -0
- package/dist/tools/get-network-stats.d.ts +2 -0
- package/dist/tools/get-network-stats.js +6 -0
- package/dist/tools/get-network-stats.js.map +1 -0
- package/dist/tools/import-contacts.js +2 -20
- package/dist/tools/import-contacts.js.map +1 -1
- package/dist/tools/list-connectors.d.ts +2 -0
- package/dist/tools/list-connectors.js +14 -0
- package/dist/tools/list-connectors.js.map +1 -0
- package/dist/tools/list-icps.d.ts +2 -0
- package/dist/tools/list-icps.js +6 -0
- package/dist/tools/list-icps.js.map +1 -0
- package/dist/tools/list-jobs.d.ts +2 -0
- package/dist/tools/list-jobs.js +15 -0
- package/dist/tools/list-jobs.js.map +1 -0
- package/dist/tools/list-opportunity-statuses.d.ts +2 -0
- package/dist/tools/list-opportunity-statuses.js +7 -0
- package/dist/tools/list-opportunity-statuses.js.map +1 -0
- package/dist/tools/list-target-accounts.js +2 -20
- package/dist/tools/list-target-accounts.js.map +1 -1
- package/dist/tools/search-by-company.js +5 -20
- package/dist/tools/search-by-company.js.map +1 -1
- package/dist/tools/search-by-contact.js +5 -20
- package/dist/tools/search-by-contact.js.map +1 -1
- package/dist/tools/search-companies.d.ts +2 -0
- package/dist/tools/search-companies.js +13 -0
- package/dist/tools/search-companies.js.map +1 -0
- package/dist/tools/search-opportunities.d.ts +2 -0
- package/dist/tools/search-opportunities.js +67 -0
- package/dist/tools/search-opportunities.js.map +1 -0
- package/dist/tools/update-icp.d.ts +2 -0
- package/dist/tools/update-icp.js +29 -0
- package/dist/tools/update-icp.js.map +1 -0
- package/dist/tools/update-opportunity.d.ts +2 -0
- package/dist/tools/update-opportunity.js +19 -0
- package/dist/tools/update-opportunity.js.map +1 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -3,3 +3,13 @@ export declare function truncateResult(data: unknown): string;
|
|
|
3
3
|
export declare function get(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<unknown>;
|
|
4
4
|
export declare function post(path: string, body: unknown): Promise<unknown>;
|
|
5
5
|
export declare function del(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<unknown>;
|
|
6
|
+
export declare function put(path: string, body: unknown): Promise<unknown>;
|
|
7
|
+
type ToolResult = {
|
|
8
|
+
content: {
|
|
9
|
+
type: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
}[];
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function wrapToolHandler(fn: (params: Record<string, unknown>) => Promise<unknown>): (params: Record<string, unknown>) => Promise<ToolResult>;
|
|
15
|
+
export {};
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const BASE_URL = "https://api.clustr-ai.com/api/public";
|
|
1
|
+
const BASE_URL = process.env.CLUSTR_API_URL || "https://api.clustr-ai.com/api/public";
|
|
2
2
|
const MAX_RESPONSE_LENGTH = 50_000;
|
|
3
3
|
let apiKey;
|
|
4
4
|
export function initClient() {
|
|
@@ -74,4 +74,32 @@ export async function del(path, params) {
|
|
|
74
74
|
const response = await fetch(url, { method: "DELETE", headers: headers() });
|
|
75
75
|
return handleResponse(response);
|
|
76
76
|
}
|
|
77
|
+
export async function put(path, body) {
|
|
78
|
+
const url = buildUrl(path);
|
|
79
|
+
const response = await fetch(url, {
|
|
80
|
+
method: "PUT",
|
|
81
|
+
headers: headers(),
|
|
82
|
+
body: JSON.stringify(body),
|
|
83
|
+
});
|
|
84
|
+
return handleResponse(response);
|
|
85
|
+
}
|
|
86
|
+
export function wrapToolHandler(fn) {
|
|
87
|
+
return async (params) => {
|
|
88
|
+
try {
|
|
89
|
+
const result = await fn(params);
|
|
90
|
+
return { content: [{ type: "text", text: truncateResult(result) }] };
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return {
|
|
94
|
+
content: [
|
|
95
|
+
{
|
|
96
|
+
type: "text",
|
|
97
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
isError: true,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
77
105
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,19 +3,31 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { initClient } from "./client.js";
|
|
5
5
|
import { registerImportContacts } from "./tools/import-contacts.js";
|
|
6
|
-
import { registerSearchByCompany } from "./tools/search-by-company.js";
|
|
7
|
-
import { registerSearchByContact } from "./tools/search-by-contact.js";
|
|
8
6
|
import { registerCreateTargetAccounts } from "./tools/create-target-accounts.js";
|
|
9
7
|
import { registerListTargetAccounts } from "./tools/list-target-accounts.js";
|
|
10
8
|
import { registerDeleteTargetAccount } from "./tools/delete-target-account.js";
|
|
9
|
+
import { registerGetJobStatus } from "./tools/get-job-status.js";
|
|
10
|
+
import { registerListJobs } from "./tools/list-jobs.js";
|
|
11
|
+
import { registerSearchOpportunities } from "./tools/search-opportunities.js";
|
|
12
|
+
import { registerSearchCompanies } from "./tools/search-companies.js";
|
|
13
|
+
import { registerListConnectors } from "./tools/list-connectors.js";
|
|
14
|
+
import { registerGetNetworkStats } from "./tools/get-network-stats.js";
|
|
15
|
+
import { registerUpdateOpportunity } from "./tools/update-opportunity.js";
|
|
16
|
+
import { registerListOpportunityStatuses } from "./tools/list-opportunity-statuses.js";
|
|
11
17
|
const server = new McpServer({
|
|
12
18
|
name: "clustr",
|
|
13
19
|
version: "1.0.0",
|
|
14
20
|
});
|
|
15
21
|
initClient();
|
|
16
22
|
registerImportContacts(server);
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
registerSearchOpportunities(server);
|
|
24
|
+
registerSearchCompanies(server);
|
|
25
|
+
registerListConnectors(server);
|
|
26
|
+
registerGetNetworkStats(server);
|
|
27
|
+
registerGetJobStatus(server);
|
|
28
|
+
registerListJobs(server);
|
|
29
|
+
registerUpdateOpportunity(server);
|
|
30
|
+
registerListOpportunityStatuses(server);
|
|
19
31
|
registerCreateTargetAccounts(server);
|
|
20
32
|
registerListTargetAccounts(server);
|
|
21
33
|
registerDeleteTargetAccount(server);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,UAAU,EAAE,CAAC;AAEb,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACpC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,+BAA+B,CAAC,MAAM,CAAC,CAAC;AACxC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACrC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACnC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { post, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
title: z.string().describe("ICP name (e.g. 'Enterprise SaaS', 'Mid-Market Finance')"),
|
|
5
|
+
linkedin_industries: z
|
|
6
|
+
.array(z.string())
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("Target industries (e.g. ['IT', 'Computer Software'])"),
|
|
9
|
+
revenue: z
|
|
10
|
+
.array(z.string())
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Target revenue ranges (e.g. ['$10M-$50M', '$50M-$100M'])"),
|
|
13
|
+
employees: z
|
|
14
|
+
.array(z.string())
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Target employee count ranges (e.g. ['50-200', '201-500'])"),
|
|
17
|
+
countries: z
|
|
18
|
+
.array(z.string())
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Target countries (e.g. ['US', 'UK', 'France'])"),
|
|
21
|
+
};
|
|
22
|
+
export function registerCreateICP(server) {
|
|
23
|
+
server.tool("create_icp", "Create a new Ideal Customer Profile (ICP). " +
|
|
24
|
+
"Define target company characteristics for opportunity prioritization.", inputSchema, wrapToolHandler((params) => post("/company-icp", params)));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=create-icp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-icp.js","sourceRoot":"","sources":["../../src/tools/create-icp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;IACrF,mBAAmB,EAAE,CAAC;SACnB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;CAC9D,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6CAA6C;QAC3C,uEAAuE,EACzE,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAC1D,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { post,
|
|
2
|
+
import { post, wrapToolHandler } from "../client.js";
|
|
3
3
|
const inputSchema = {
|
|
4
4
|
company_name: z
|
|
5
5
|
.string()
|
|
@@ -22,24 +22,6 @@ export function registerCreateTargetAccounts(server) {
|
|
|
22
22
|
server.tool("create_target_accounts", "Add target accounts for opportunity prioritization. " +
|
|
23
23
|
"Two formats: (1) Single — provide company_name and/or linkedin_url to ADD one account. " +
|
|
24
24
|
"(2) Batch — provide target_companies array to REPLACE ALL existing accounts. " +
|
|
25
|
-
"WARNING: Batch format is destructive — it replaces the entire target account list.", inputSchema,
|
|
26
|
-
try {
|
|
27
|
-
const result = await post("/target-accounts", params);
|
|
28
|
-
return {
|
|
29
|
-
content: [{ type: "text", text: truncateResult(result) }],
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
return {
|
|
34
|
-
content: [
|
|
35
|
-
{
|
|
36
|
-
type: "text",
|
|
37
|
-
text: `Error creating target accounts: ${error instanceof Error ? error.message : String(error)}`,
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
isError: true,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
});
|
|
25
|
+
"WARNING: Batch format is destructive — it replaces the entire target account list.", inputSchema, wrapToolHandler((params) => post("/target-accounts", params)));
|
|
44
26
|
}
|
|
45
27
|
//# sourceMappingURL=create-target-accounts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-target-accounts.js","sourceRoot":"","sources":["../../src/tools/create-target-accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"create-target-accounts.js","sourceRoot":"","sources":["../../src/tools/create-target-accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,GAAG;IAClB,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2EAA2E,CAAC;IACxF,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,gBAAgB,EAAE,CAAC;SAChB,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACrE,CAAC,CACH;SACA,QAAQ,EAAE;SACV,QAAQ,CACP,sEAAsE;QACpE,6DAA6D,CAChE;CACJ,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,sDAAsD;QACpD,yFAAyF;QACzF,+EAA+E;QAC/E,oFAAoF,EACtF,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { del, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
id: z.string().describe("ICP ID to delete"),
|
|
5
|
+
};
|
|
6
|
+
export function registerDeleteICP(server) {
|
|
7
|
+
server.tool("delete_icp", "Delete an Ideal Customer Profile (ICP) by its ID.", inputSchema, wrapToolHandler((params) => del(`/company-icp/${encodeURIComponent(String(params.id))}`)));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=delete-icp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-icp.js","sourceRoot":"","sources":["../../src/tools/delete-icp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CAC5C,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,mDAAmD,EACnD,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAC7D,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { del,
|
|
2
|
+
import { del, wrapToolHandler } from "../client.js";
|
|
3
3
|
const inputSchema = {
|
|
4
4
|
id: z.string().optional().describe("Target account ID"),
|
|
5
5
|
account_name: z.string().optional().describe("Account name (exact match)"),
|
|
@@ -7,24 +7,6 @@ const inputSchema = {
|
|
|
7
7
|
};
|
|
8
8
|
export function registerDeleteTargetAccount(server) {
|
|
9
9
|
server.tool("delete_target_account", "Delete a target account by ID, name, or LinkedIn URL. " +
|
|
10
|
-
"Provide at least one parameter to identify the account to delete.", inputSchema,
|
|
11
|
-
try {
|
|
12
|
-
const result = await del("/target-accounts", params);
|
|
13
|
-
return {
|
|
14
|
-
content: [{ type: "text", text: truncateResult(result) }],
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
return {
|
|
19
|
-
content: [
|
|
20
|
-
{
|
|
21
|
-
type: "text",
|
|
22
|
-
text: `Error deleting target account: ${error instanceof Error ? error.message : String(error)}`,
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
isError: true,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
});
|
|
10
|
+
"Provide at least one parameter to identify the account to delete.", inputSchema, wrapToolHandler((params) => del("/target-accounts", params)));
|
|
29
11
|
}
|
|
30
12
|
//# sourceMappingURL=delete-target-account.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-target-account.js","sourceRoot":"","sources":["../../src/tools/delete-target-account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"delete-target-account.js","sourceRoot":"","sources":["../../src/tools/delete-target-account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC1E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACrE,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,wDAAwD;QACtD,mEAAmE,EACrE,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,kBAAkB,EAAE,MAA4C,CAAC,CACtE,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
job_id: z.string().describe("The job ID (UUID) returned from import_contacts"),
|
|
5
|
+
};
|
|
6
|
+
export function registerGetJobStatus(server) {
|
|
7
|
+
server.tool("get_job_status", "Get the status and progress of an import job. " +
|
|
8
|
+
"Use the job_id returned from import_contacts to check if processing is complete.", inputSchema, wrapToolHandler((params) => get(`/jobs/${encodeURIComponent(String(params.job_id))}`)));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=get-job-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-job-status.js","sourceRoot":"","sources":["../../src/tools/get-job-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CAC/E,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,gDAAgD;QAC9C,kFAAkF,EACpF,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAC1D,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
2
|
+
export function registerGetNetworkStats(server) {
|
|
3
|
+
server.tool("get_network_stats", "Get an overview of your Clustr network — total connectors, opportunities, " +
|
|
4
|
+
"target accounts, confidence distribution, top companies, and recent import activity.", {}, wrapToolHandler(() => get("/network/stats")));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=get-network-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-network-stats.js","sourceRoot":"","sources":["../../src/tools/get-network-stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,4EAA4E;QAC1E,sFAAsF,EACxF,EAAE,EACF,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { post,
|
|
2
|
+
import { post, wrapToolHandler } from "../client.js";
|
|
3
3
|
const inputSchema = {
|
|
4
4
|
contacts: z
|
|
5
5
|
.array(z.object({
|
|
@@ -50,24 +50,6 @@ const inputSchema = {
|
|
|
50
50
|
export function registerImportContacts(server) {
|
|
51
51
|
server.tool("import_contacts", "Import LinkedIn contacts for referral opportunity discovery. " +
|
|
52
52
|
"Processing is ASYNCHRONOUS — results are delivered via the webhook_url you provide, not in this response. " +
|
|
53
|
-
"Provide contacts via 'contacts' array (with CRM metadata) or simpler 'linkedin_urls' array. Max 50 per request.", inputSchema,
|
|
54
|
-
try {
|
|
55
|
-
const result = await post("/network/import/contacts", params);
|
|
56
|
-
return {
|
|
57
|
-
content: [{ type: "text", text: truncateResult(result) }],
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
return {
|
|
62
|
-
content: [
|
|
63
|
-
{
|
|
64
|
-
type: "text",
|
|
65
|
-
text: `Error importing contacts: ${error instanceof Error ? error.message : String(error)}`,
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
isError: true,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
});
|
|
53
|
+
"Provide contacts via 'contacts' array (with CRM metadata) or simpler 'linkedin_urls' array. Max 50 per request.", inputSchema, wrapToolHandler((params) => post("/network/import/contacts", params)));
|
|
72
54
|
}
|
|
73
55
|
//# sourceMappingURL=import-contacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-contacts.js","sourceRoot":"","sources":["../../src/tools/import-contacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"import-contacts.js","sourceRoot":"","sources":["../../src/tools/import-contacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,CAAC;SACR,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACzD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9D,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;KAClE,CAAC,CACH;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IACpF,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACvD,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAChD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC/C,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC9C,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACnD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC1C,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,8CAA8C,CAAC;CAC5D,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,+DAA+D;QAC7D,4GAA4G;QAC5G,iHAAiH,EACnH,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
search: z.string().optional().describe("Search by connector name (partial match)"),
|
|
5
|
+
connector_tag: z.string().optional().describe("Filter by connector tag name (e.g. Employee, Friend)"),
|
|
6
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
7
|
+
page_size: z.number().optional().describe("Results per page (default: 25, max: 100)"),
|
|
8
|
+
};
|
|
9
|
+
export function registerListConnectors(server) {
|
|
10
|
+
server.tool("list_connectors", "List connectors (people) in your network with their opportunity counts. " +
|
|
11
|
+
"Connectors are the people you've imported whose LinkedIn connections are analyzed for referral opportunities. " +
|
|
12
|
+
"Call with no parameters to list all connectors.", inputSchema, wrapToolHandler((params) => get("/network/connectors", params)));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=list-connectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-connectors.js","sourceRoot":"","sources":["../../src/tools/list-connectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAClF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IACrG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACtF,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,0EAA0E;QACxE,gHAAgH;QAChH,iDAAiD,EACnD,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,qBAAqB,EAAE,MAA+D,CAAC,CAC5F,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
2
|
+
export function registerListICPs(server) {
|
|
3
|
+
server.tool("list_icps", "List all Ideal Customer Profiles (ICPs) for your tenant. " +
|
|
4
|
+
"ICPs define target company characteristics — industries, revenue ranges, employee counts, and countries.", {}, wrapToolHandler(() => get("/company-icp")));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=list-icps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-icps.js","sourceRoot":"","sources":["../../src/tools/list-icps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,2DAA2D;QACzD,0GAA0G,EAC5G,EAAE,EACF,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
status: z
|
|
5
|
+
.string()
|
|
6
|
+
.optional()
|
|
7
|
+
.describe("Filter by status: PROCESSING, COMPLETED, FAILED (comma-separated for multiple)"),
|
|
8
|
+
limit: z.number().optional().describe("Max results to return (default: 100, max: 1000)"),
|
|
9
|
+
offset: z.number().optional().describe("Offset for pagination (default: 0)"),
|
|
10
|
+
};
|
|
11
|
+
export function registerListJobs(server) {
|
|
12
|
+
server.tool("list_jobs", "List import jobs with optional status filter. " +
|
|
13
|
+
"Returns job IDs, statuses, and progress for all imports.", inputSchema, wrapToolHandler((params) => get("/jobs", params)));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=list-jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-jobs.js","sourceRoot":"","sources":["../../src/tools/list-jobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gFAAgF,CAAC;IAC7F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACxF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAC7E,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,gDAAgD;QAC9C,0DAA0D,EAC5D,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,OAAO,EAAE,MAA+D,CAAC,CAC9E,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
2
|
+
export function registerListOpportunityStatuses(server) {
|
|
3
|
+
server.tool("list_opportunity_statuses", "List all available opportunity statuses for your tenant. " +
|
|
4
|
+
"Returns status IDs, names, colors, and whether each status is terminal. " +
|
|
5
|
+
"Use the returned status IDs with update_opportunity.", {}, wrapToolHandler(() => get("/opportunity-statuses")));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=list-opportunity-statuses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-opportunity-statuses.js","sourceRoot":"","sources":["../../src/tools/list-opportunity-statuses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,2DAA2D;QACzD,0EAA0E;QAC1E,sDAAsD,EACxD,EAAE,EACF,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { get,
|
|
2
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
3
|
const inputSchema = {
|
|
4
4
|
id: z.string().optional().describe("Target account ID (returns single account)"),
|
|
5
5
|
search: z.string().optional().describe("Search by account name (partial match)"),
|
|
@@ -7,24 +7,6 @@ const inputSchema = {
|
|
|
7
7
|
};
|
|
8
8
|
export function registerListTargetAccounts(server) {
|
|
9
9
|
server.tool("list_target_accounts", "List all target accounts, or search by ID, name, or LinkedIn URL. " +
|
|
10
|
-
"Call with no parameters to list all accounts.", inputSchema,
|
|
11
|
-
try {
|
|
12
|
-
const result = await get("/target-accounts", params);
|
|
13
|
-
return {
|
|
14
|
-
content: [{ type: "text", text: truncateResult(result) }],
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
return {
|
|
19
|
-
content: [
|
|
20
|
-
{
|
|
21
|
-
type: "text",
|
|
22
|
-
text: `Error listing target accounts: ${error instanceof Error ? error.message : String(error)}`,
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
isError: true,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
});
|
|
10
|
+
"Call with no parameters to list all accounts.", inputSchema, wrapToolHandler((params) => get("/target-accounts", params)));
|
|
29
11
|
}
|
|
30
12
|
//# sourceMappingURL=list-target-accounts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-target-accounts.js","sourceRoot":"","sources":["../../src/tools/list-target-accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"list-target-accounts.js","sourceRoot":"","sources":["../../src/tools/list-target-accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAChF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAChF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACvE,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,oEAAoE;QAClE,+CAA+C,EACjD,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,kBAAkB,EAAE,MAA4C,CAAC,CACtE,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
// LEGACY: Superseded by search-opportunities.ts which consolidates all search functionality.
|
|
2
|
+
// Kept for backwards compatibility — existing tenants may have automations using this tool name.
|
|
3
|
+
// Do not register in index.ts; the API route still works for direct REST callers.
|
|
1
4
|
import { z } from "zod";
|
|
2
|
-
import { get,
|
|
5
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
6
|
const inputSchema = {
|
|
4
7
|
// Company identifiers
|
|
5
8
|
linkedin_urls: z.string().optional().describe("Comma-separated company LinkedIn URLs"),
|
|
@@ -74,24 +77,6 @@ const inputSchema = {
|
|
|
74
77
|
export function registerSearchByCompany(server) {
|
|
75
78
|
server.tool("search_opportunities_by_company", "Search referral opportunities filtered by company identifiers (LinkedIn URL, domain, numeric ID) and other criteria. " +
|
|
76
79
|
"Returns paginated results grouped by client with their opportunities. " +
|
|
77
|
-
"Provide at least one company identifier (linkedin_urls, domains, numeric_ids, or vanity_names).", inputSchema,
|
|
78
|
-
try {
|
|
79
|
-
const result = await get("/network/search/opportunities/by-company", params);
|
|
80
|
-
return {
|
|
81
|
-
content: [{ type: "text", text: truncateResult(result) }],
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
return {
|
|
86
|
-
content: [
|
|
87
|
-
{
|
|
88
|
-
type: "text",
|
|
89
|
-
text: `Error searching opportunities: ${error instanceof Error ? error.message : String(error)}`,
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
isError: true,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
});
|
|
80
|
+
"Provide at least one company identifier (linkedin_urls, domains, numeric_ids, or vanity_names).", inputSchema, wrapToolHandler((params) => get("/network/search/opportunities/by-company", params)));
|
|
96
81
|
}
|
|
97
82
|
//# sourceMappingURL=search-by-company.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-by-company.js","sourceRoot":"","sources":["../../src/tools/search-by-company.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-by-company.js","sourceRoot":"","sources":["../../src/tools/search-by-company.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
// LEGACY: Superseded by search-opportunities.ts which consolidates all search functionality.
|
|
2
|
+
// Kept for backwards compatibility — existing tenants may have automations using this tool name.
|
|
3
|
+
// Do not register in index.ts; the API route still works for direct REST callers.
|
|
1
4
|
import { z } from "zod";
|
|
2
|
-
import { get,
|
|
5
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
6
|
const inputSchema = {
|
|
4
7
|
linkedin_public_id: z
|
|
5
8
|
.string()
|
|
@@ -32,24 +35,6 @@ const inputSchema = {
|
|
|
32
35
|
};
|
|
33
36
|
export function registerSearchByContact(server) {
|
|
34
37
|
server.tool("search_opportunities_by_contact", "Get referral opportunities for a specific contact. " +
|
|
35
|
-
"Provide exactly one of linkedin_public_id OR linkedin_url to identify the contact.", inputSchema,
|
|
36
|
-
try {
|
|
37
|
-
const result = await get("/network/search/opportunities/by-contact", params);
|
|
38
|
-
return {
|
|
39
|
-
content: [{ type: "text", text: truncateResult(result) }],
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
return {
|
|
44
|
-
content: [
|
|
45
|
-
{
|
|
46
|
-
type: "text",
|
|
47
|
-
text: `Error searching opportunities: ${error instanceof Error ? error.message : String(error)}`,
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
isError: true,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
});
|
|
38
|
+
"Provide exactly one of linkedin_public_id OR linkedin_url to identify the contact.", inputSchema, wrapToolHandler((params) => get("/network/search/opportunities/by-contact", params)));
|
|
54
39
|
}
|
|
55
40
|
//# sourceMappingURL=search-by-contact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-by-contact.js","sourceRoot":"","sources":["../../src/tools/search-by-contact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-by-contact.js","sourceRoot":"","sources":["../../src/tools/search-by-contact.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,iGAAiG;AACjG,kFAAkF;AAGlF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2EAA2E,CAAC;IACxF,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oGAAoG,CACrG;IACH,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAChF,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxE,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAChF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACtE,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC9D,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CAC9E,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,iCAAiC,EACjC,qDAAqD;QACnD,oFAAoF,EACtF,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,0CAA0C,EAAE,MAA+D,CAAC,CACjH,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
search: z.string().optional().describe("Search by company name (partial match)"),
|
|
5
|
+
domain: z.string().optional().describe("Lookup by company domain (e.g. acme.com)"),
|
|
6
|
+
linkedin_url: z.string().optional().describe("Lookup by company LinkedIn URL"),
|
|
7
|
+
page_size: z.number().optional().describe("Results per page (default: 25, max: 100)"),
|
|
8
|
+
};
|
|
9
|
+
export function registerSearchCompanies(server) {
|
|
10
|
+
server.tool("search_companies", "Search or lookup companies in your network by name, domain, or LinkedIn URL. " +
|
|
11
|
+
"Provide at least one of search, domain, or linkedin_url.", inputSchema, wrapToolHandler((params) => get("/companies", params)));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=search-companies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-companies.js","sourceRoot":"","sources":["../../src/tools/search-companies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAChF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAClF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACtF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,+EAA+E;QAC7E,0DAA0D,EAC5D,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,CACzB,GAAG,CAAC,YAAY,EAAE,MAA+D,CAAC,CACnF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { get, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
// Contact lookup — when provided, searches opportunities for a specific contact
|
|
5
|
+
// (uses the /by-contact endpoint under the hood)
|
|
6
|
+
linkedin_public_id: z
|
|
7
|
+
.string()
|
|
8
|
+
.optional()
|
|
9
|
+
.describe("LinkedIn public identifier of a specific contact (e.g. john-doe). " +
|
|
10
|
+
"When provided, returns opportunities for that contact."),
|
|
11
|
+
// Company identifiers — filter by company
|
|
12
|
+
linkedin_urls: z.string().optional().describe("Comma-separated company LinkedIn URLs"),
|
|
13
|
+
numeric_ids: z.string().optional().describe("Comma-separated LinkedIn numeric IDs"),
|
|
14
|
+
domains: z.string().optional().describe("Comma-separated company domains (e.g. acme.com,stripe.com)"),
|
|
15
|
+
vanity_names: z.string().optional().describe("Comma-separated LinkedIn vanity names"),
|
|
16
|
+
// Prospect/client filters
|
|
17
|
+
seniority_levels: z.string().optional().describe("Comma-separated seniority levels: high, mid, low"),
|
|
18
|
+
industries: z.string().optional().describe("Comma-separated industries"),
|
|
19
|
+
employee_ranges: z.string().optional().describe("Comma-separated employee count ranges (e.g. 51-200,501-1000)"),
|
|
20
|
+
revenue_ranges: z.string().optional().describe("Comma-separated revenue ranges"),
|
|
21
|
+
countries: z.string().optional().describe("Comma-separated countries"),
|
|
22
|
+
confidence_ranges: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("Comma-separated confidence score ranges (e.g. 80-100,60-79)"),
|
|
26
|
+
client_names: z.string().optional().describe("Comma-separated client (connector) names"),
|
|
27
|
+
client_linkedin_urls: z.string().optional().describe("Comma-separated client LinkedIn URLs"),
|
|
28
|
+
client_public_identifiers: z.string().optional().describe("Comma-separated client LinkedIn public identifiers"),
|
|
29
|
+
client_companies: z.string().optional().describe("Comma-separated client company names"),
|
|
30
|
+
prospect_names: z.string().optional().describe("Comma-separated prospect names"),
|
|
31
|
+
prospect_linkedin_urls: z.string().optional().describe("Comma-separated prospect LinkedIn URLs"),
|
|
32
|
+
prospect_positions: z.string().optional().describe("Comma-separated prospect job titles"),
|
|
33
|
+
prospect_companies: z.string().optional().describe("Comma-separated prospect company names"),
|
|
34
|
+
owners: z.string().optional().describe("Comma-separated owner emails"),
|
|
35
|
+
statuses: z.string().optional().describe("Comma-separated opportunity statuses"),
|
|
36
|
+
engagement_types: z.string().optional().describe("Comma-separated engagement types"),
|
|
37
|
+
crm_statuses: z.string().optional().describe("Comma-separated CRM statuses"),
|
|
38
|
+
// Date filters
|
|
39
|
+
created_after: z.string().optional().describe("Filter opportunities created after this date (YYYY-MM-DD)"),
|
|
40
|
+
created_before: z.string().optional().describe("Filter opportunities created before this date (YYYY-MM-DD)"),
|
|
41
|
+
// Boolean filters
|
|
42
|
+
exclude_client_companies: z.boolean().optional().describe("Exclude prospects at the same company as the client"),
|
|
43
|
+
include_unengaged: z.boolean().optional().describe("Include opportunities with no engagement"),
|
|
44
|
+
full_history: z.boolean().optional().describe("Include full engagement history"),
|
|
45
|
+
force_refresh: z.boolean().optional().describe("Bypass cache and fetch fresh results"),
|
|
46
|
+
// Other
|
|
47
|
+
job_id: z.string().optional().describe("Filter by import job ID"),
|
|
48
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
49
|
+
page_size: z.number().optional().describe("Results per page (default: 25)"),
|
|
50
|
+
sort_field: z.string().optional().describe("Field to sort by"),
|
|
51
|
+
sort_direction: z.enum(["asc", "desc"]).optional().describe("Sort direction"),
|
|
52
|
+
};
|
|
53
|
+
export function registerSearchOpportunities(server) {
|
|
54
|
+
server.tool("search_opportunities", "Search referral opportunities across your network. All filters are optional. " +
|
|
55
|
+
"Use linkedin_public_id to get opportunities for a specific contact. " +
|
|
56
|
+
"Use domains, linkedin_urls, or vanity_names to filter by company. " +
|
|
57
|
+
"Use with no filters to see your full opportunity list.", inputSchema, wrapToolHandler((params) => {
|
|
58
|
+
const p = params;
|
|
59
|
+
// Route to /by-contact when searching for a specific contact
|
|
60
|
+
if (p.linkedin_public_id) {
|
|
61
|
+
return get("/network/search/opportunities/by-contact", p);
|
|
62
|
+
}
|
|
63
|
+
// Otherwise use the general search endpoint
|
|
64
|
+
return get("/network/search/opportunities/by-company", p);
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=search-opportunities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-opportunities.js","sourceRoot":"","sources":["../../src/tools/search-opportunities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { put, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
id: z.string().describe("ICP ID to update"),
|
|
5
|
+
title: z.string().optional().describe("Updated ICP name"),
|
|
6
|
+
linkedin_industries: z
|
|
7
|
+
.array(z.string())
|
|
8
|
+
.optional()
|
|
9
|
+
.describe("Updated target industries"),
|
|
10
|
+
revenue: z
|
|
11
|
+
.array(z.string())
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Updated target revenue ranges"),
|
|
14
|
+
employees: z
|
|
15
|
+
.array(z.string())
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Updated target employee count ranges"),
|
|
18
|
+
countries: z
|
|
19
|
+
.array(z.string())
|
|
20
|
+
.optional()
|
|
21
|
+
.describe("Updated target countries"),
|
|
22
|
+
};
|
|
23
|
+
export function registerUpdateICP(server) {
|
|
24
|
+
server.tool("update_icp", "Update an existing Ideal Customer Profile (ICP).", inputSchema, wrapToolHandler((params) => {
|
|
25
|
+
const { id, ...body } = params;
|
|
26
|
+
return put(`/company-icp/${encodeURIComponent(String(id))}`, body);
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=update-icp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-icp.js","sourceRoot":"","sources":["../../src/tools/update-icp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACzD,mBAAmB,EAAE,CAAC;SACnB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,2BAA2B,CAAC;IACxC,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,sCAAsC,CAAC;IACnD,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,0BAA0B,CAAC;CACxC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,kDAAkD,EAClD,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAC/B,OAAO,GAAG,CAAC,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { put, wrapToolHandler } from "../client.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
opportunity_id: z.string().describe("The opportunity ID (from search results)"),
|
|
5
|
+
status_id: z
|
|
6
|
+
.string()
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("New status UUID — use list_opportunity_statuses to get available status IDs"),
|
|
9
|
+
notes: z.string().optional().describe("Notes about the opportunity"),
|
|
10
|
+
};
|
|
11
|
+
export function registerUpdateOpportunity(server) {
|
|
12
|
+
server.tool("update_opportunity", "Update an opportunity's status or notes. " +
|
|
13
|
+
"Use the opportunity_id from search results. " +
|
|
14
|
+
"Use list_opportunity_statuses to see available statuses for your tenant.", inputSchema, wrapToolHandler((params) => {
|
|
15
|
+
const { opportunity_id, ...body } = params;
|
|
16
|
+
return put(`/opportunities/${encodeURIComponent(String(opportunity_id))}`, body);
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=update-opportunity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-opportunity.js","sourceRoot":"","sources":["../../src/tools/update-opportunity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,GAAG;IAClB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC/E,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CACrE,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,2CAA2C;QACzC,8CAA8C;QAC9C,0EAA0E,EAC5E,WAAW,EACX,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAC3C,OAAO,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clustr-ai/mcp-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "MCP server for the Clustr API — search referral opportunities, manage target accounts, and import contacts from AI assistants",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|