@coldiq/mcp 5.4.2 → 5.4.3
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 +5 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/get-website-visitors.d.ts +26 -0
- package/dist/tools/get-website-visitors.d.ts.map +1 -0
- package/dist/tools/get-website-visitors.js +73 -0
- package/dist/tools/get-website-visitors.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +11 -0
- package/src/tools/get-website-visitors.ts +74 -0
- package/tests/tools/visitor-id-tools.test.ts +108 -0
package/dist/index.js
CHANGED
|
@@ -37,6 +37,7 @@ import { getCreditBalanceName, getCreditBalanceDescription, getCreditBalanceSche
|
|
|
37
37
|
import { getSessionUsageName, getSessionUsageDescription, getSessionUsageSchema, getSessionUsageHandler, } from './tools/get-session-usage.js';
|
|
38
38
|
import { extractPostEngagementName, extractPostEngagementDescription, extractPostEngagementSchema, extractPostEngagementHandler, } from './tools/extract-post-engagement.js';
|
|
39
39
|
import { getPlaceReviewsName, getPlaceReviewsDescription, getPlaceReviewsSchema, getPlaceReviewsHandler, } from './tools/get-place-reviews.js';
|
|
40
|
+
import { getWebsiteVisitorsName, getWebsiteVisitorsDescription, getWebsiteVisitorsSchema, getWebsiteVisitorsHandler, } from './tools/get-website-visitors.js';
|
|
40
41
|
import { listDataSourcesName, listDataSourcesDescription, listDataSourcesSchema, listDataSourcesHandler, } from './tools/list-data-sources.js';
|
|
41
42
|
import { listSkillsName, listSkillsDescription, listSkillsSchema, listSkillsHandler, } from './tools/list-skills.js';
|
|
42
43
|
import { loadSkillName, loadSkillDescription, loadSkillSchema, loadSkillHandler, } from './tools/load-skill.js';
|
|
@@ -90,6 +91,10 @@ server.tool(listSkillsName, listSkillsDescription, listSkillsSchema, listSkillsH
|
|
|
90
91
|
server.tool(loadSkillName, loadSkillDescription, loadSkillSchema, loadSkillHandler);
|
|
91
92
|
server.tool(extractPostEngagementName, withKnowledgeFirstRequirement(extractPostEngagementDescription), extractPostEngagementSchema, extractPostEngagementHandler);
|
|
92
93
|
server.tool(getPlaceReviewsName, withKnowledgeFirstRequirement(getPlaceReviewsDescription), getPlaceReviewsSchema, getPlaceReviewsHandler);
|
|
94
|
+
// ColdIQ Visitor ID: read the leads identified on the account's own websites.
|
|
95
|
+
// Listing the websites themselves needs no tool — search_endpoints/call_endpoint
|
|
96
|
+
// already reach GET /visitor-id/websites.
|
|
97
|
+
server.tool(getWebsiteVisitorsName, withKnowledgeFirstRequirement(getWebsiteVisitorsDescription), getWebsiteVisitorsSchema, getWebsiteVisitorsHandler);
|
|
93
98
|
// Generic endpoint discovery + invoke: reach any integrated provider without a dedicated tool.
|
|
94
99
|
server.tool(searchEndpointsName, withKnowledgeFirstRequirement(searchEndpointsDescription), searchEndpointsSchema, searchEndpointsHandler);
|
|
95
100
|
server.tool(getEndpointDetailsName, withKnowledgeFirstRequirement(getEndpointDetailsDescription), getEndpointDetailsSchema, getEndpointDetailsHandler);
|
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":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAClJ,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxI,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAClJ,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACvJ,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACnI,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACpH,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACnI,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAC5I,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC5J,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE7H,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAE9B,+EAA+E;AAC/E,0EAA0E;AAC1E,IAAI,CAAC;IACH,UAAU,EAAE,CAAA;AACd,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,cAAc;CACxB,EACD;IACE,YAAY,EAAE,uBAAuB;CACtC,CACF,CAAA;AAED,6EAA6E;AAC7E,wEAAwE;AACxE,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC3G,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,0BAA0B,CAAC,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC1I,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACtH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,6BAA6B,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AAClH,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAC9H,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACtH,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,6BAA6B,CAAC,sBAAsB,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAA;AAC1H,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,6BAA6B,CAAC,2BAA2B,CAAC,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC9I,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,yBAAyB,CAAC,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAA;AACtI,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,6BAA6B,CAAC,2BAA2B,CAAC,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC9I,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,6BAA6B,CAAC,4BAA4B,CAAC,EAAE,uBAAuB,EAAE,wBAAwB,CAAC,CAAA;AAClJ,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,wBAAwB,CAAC,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;AAClI,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACtH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,wBAAwB,CAAC,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;AAClI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,6BAA6B,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AAClH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,wBAAwB,CAAC,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;AAClI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,6BAA6B,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AAClH,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACtH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,6BAA6B,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AAClH,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAC9H,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,0BAA0B,CAAC,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC1I,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAC9H,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,6BAA6B,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AAClH,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,6BAA6B,CAAC,sBAAsB,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAA;AAC1H,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,6BAA6B,CAAC,2BAA2B,CAAC,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC9I,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAC/G,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC3G,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,0BAA0B,CAAC,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC1I,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACnF,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,6BAA6B,CAAC,gCAAgC,CAAC,EAAE,2BAA2B,EAAE,4BAA4B,CAAC,CAAA;AAClK,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,0BAA0B,CAAC,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC1I,8EAA8E;AAC9E,iFAAiF;AACjF,0CAA0C;AAC1C,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,6BAA6B,CAAC,6BAA6B,CAAC,EAAE,wBAAwB,EAAE,yBAAyB,CAAC,CAAA;AACtJ,+FAA+F;AAC/F,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,0BAA0B,CAAC,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AAC1I,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,6BAA6B,CAAC,6BAA6B,CAAC,EAAE,wBAAwB,EAAE,yBAAyB,CAAC,CAAA;AACtJ,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAE9H,8BAA8B;AAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;AAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const getWebsiteVisitorsName = "get_website_visitors";
|
|
3
|
+
export declare const getWebsiteVisitorsDescription: string;
|
|
4
|
+
export declare const getWebsiteVisitorsSchema: {
|
|
5
|
+
website_id: z.ZodNumber;
|
|
6
|
+
type: z.ZodEnum<["people", "companies"]>;
|
|
7
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
9
|
+
email: z.ZodOptional<z.ZodString>;
|
|
10
|
+
account_id: z.ZodOptional<z.ZodString>;
|
|
11
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
12
|
+
};
|
|
13
|
+
export declare function getWebsiteVisitorsHandler(input: Record<string, unknown>): Promise<{
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
isError: boolean;
|
|
19
|
+
} | {
|
|
20
|
+
content: {
|
|
21
|
+
type: "text";
|
|
22
|
+
text: string;
|
|
23
|
+
}[];
|
|
24
|
+
isError?: undefined;
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=get-website-visitors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-website-visitors.d.ts","sourceRoot":"","sources":["../../src/tools/get-website-visitors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,sBAAsB,yBAAyB,CAAA;AAE5D,eAAO,MAAM,6BAA6B,QAGwI,CAAA;AAElL,eAAO,MAAM,wBAAwB;;;;;;;;CA4BpC,CAAA;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAiC7E"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { callApi } from '../client.js';
|
|
3
|
+
export const getWebsiteVisitorsName = 'get_website_visitors';
|
|
4
|
+
export const getWebsiteVisitorsDescription = 'Read the leads ColdIQ Visitor ID identified on one of your websites — the people who visited (with verified work email, title and LinkedIn where available) or the companies they belong to (with firmographics). ' +
|
|
5
|
+
'Use `type: "people"` for enriched contacts and `type: "companies"` for enriched accounts. To find `website_id`, call the free `GET /visitor-id/websites` endpoint through call_endpoint (api "visitor-id"). ' +
|
|
6
|
+
'Results are paginated: pass the `cursor` from the previous response to fetch the next page. Free — identifications are billed when they are delivered, not when you read them.';
|
|
7
|
+
export const getWebsiteVisitorsSchema = {
|
|
8
|
+
website_id: z
|
|
9
|
+
.number()
|
|
10
|
+
.int()
|
|
11
|
+
.describe('The tracked website to read leads from, as returned by GET /visitor-id/websites.'),
|
|
12
|
+
type: z
|
|
13
|
+
.enum(['people', 'companies'])
|
|
14
|
+
.describe('"people" returns identified contacts (email, title, LinkedIn); "companies" returns identified accounts (firmographics).'),
|
|
15
|
+
limit: z
|
|
16
|
+
.number()
|
|
17
|
+
.int()
|
|
18
|
+
.min(1)
|
|
19
|
+
.max(100)
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Records per page (1–100). Default is the identification engine\'s own default.'),
|
|
22
|
+
cursor: z.string().optional().describe('Pagination cursor from the previous response.'),
|
|
23
|
+
email: z
|
|
24
|
+
.string()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('people only — return the identified person with this email address.'),
|
|
27
|
+
account_id: z
|
|
28
|
+
.string()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('people only — return only the people identified at this company (account id from a "companies" result).'),
|
|
31
|
+
domain: z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('companies only — return the identified company with this domain.'),
|
|
35
|
+
};
|
|
36
|
+
export async function getWebsiteVisitorsHandler(input) {
|
|
37
|
+
const websiteId = input.website_id;
|
|
38
|
+
const type = input.type;
|
|
39
|
+
const isPeople = type === 'people';
|
|
40
|
+
const path = `/visitor-id/websites/${websiteId}/${isPeople ? 'contacts' : 'accounts'}`;
|
|
41
|
+
const query = {};
|
|
42
|
+
if (input.limit !== undefined)
|
|
43
|
+
query.limit = String(input.limit);
|
|
44
|
+
if (input.cursor)
|
|
45
|
+
query.cursor = String(input.cursor);
|
|
46
|
+
if (isPeople) {
|
|
47
|
+
if (input.email)
|
|
48
|
+
query.email = String(input.email);
|
|
49
|
+
if (input.account_id)
|
|
50
|
+
query.account_id = String(input.account_id);
|
|
51
|
+
}
|
|
52
|
+
else if (input.domain) {
|
|
53
|
+
query.domain = String(input.domain);
|
|
54
|
+
}
|
|
55
|
+
const res = await callApi('GET', path, undefined, query);
|
|
56
|
+
if (!res.ok) {
|
|
57
|
+
return {
|
|
58
|
+
content: [
|
|
59
|
+
{
|
|
60
|
+
type: 'text',
|
|
61
|
+
text: JSON.stringify({
|
|
62
|
+
error: `Failed to read identified ${isPeople ? 'people' : 'companies'}`,
|
|
63
|
+
status: res.status,
|
|
64
|
+
data: res.data,
|
|
65
|
+
}),
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
isError: true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return { content: [{ type: 'text', text: JSON.stringify({ data: res.data }) }] };
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=get-website-visitors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-website-visitors.js","sourceRoot":"","sources":["../../src/tools/get-website-visitors.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -171,6 +171,13 @@ import {
|
|
|
171
171
|
getPlaceReviewsHandler,
|
|
172
172
|
} from './tools/get-place-reviews.js'
|
|
173
173
|
|
|
174
|
+
import {
|
|
175
|
+
getWebsiteVisitorsName,
|
|
176
|
+
getWebsiteVisitorsDescription,
|
|
177
|
+
getWebsiteVisitorsSchema,
|
|
178
|
+
getWebsiteVisitorsHandler,
|
|
179
|
+
} from './tools/get-website-visitors.js'
|
|
180
|
+
|
|
174
181
|
import {
|
|
175
182
|
listDataSourcesName,
|
|
176
183
|
listDataSourcesDescription,
|
|
@@ -247,6 +254,10 @@ server.tool(listSkillsName, listSkillsDescription, listSkillsSchema, listSkillsH
|
|
|
247
254
|
server.tool(loadSkillName, loadSkillDescription, loadSkillSchema, loadSkillHandler)
|
|
248
255
|
server.tool(extractPostEngagementName, withKnowledgeFirstRequirement(extractPostEngagementDescription), extractPostEngagementSchema, extractPostEngagementHandler)
|
|
249
256
|
server.tool(getPlaceReviewsName, withKnowledgeFirstRequirement(getPlaceReviewsDescription), getPlaceReviewsSchema, getPlaceReviewsHandler)
|
|
257
|
+
// ColdIQ Visitor ID: read the leads identified on the account's own websites.
|
|
258
|
+
// Listing the websites themselves needs no tool — search_endpoints/call_endpoint
|
|
259
|
+
// already reach GET /visitor-id/websites.
|
|
260
|
+
server.tool(getWebsiteVisitorsName, withKnowledgeFirstRequirement(getWebsiteVisitorsDescription), getWebsiteVisitorsSchema, getWebsiteVisitorsHandler)
|
|
250
261
|
// Generic endpoint discovery + invoke: reach any integrated provider without a dedicated tool.
|
|
251
262
|
server.tool(searchEndpointsName, withKnowledgeFirstRequirement(searchEndpointsDescription), searchEndpointsSchema, searchEndpointsHandler)
|
|
252
263
|
server.tool(getEndpointDetailsName, withKnowledgeFirstRequirement(getEndpointDetailsDescription), getEndpointDetailsSchema, getEndpointDetailsHandler)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { callApi } from '../client.js'
|
|
3
|
+
|
|
4
|
+
export const getWebsiteVisitorsName = 'get_website_visitors'
|
|
5
|
+
|
|
6
|
+
export const getWebsiteVisitorsDescription =
|
|
7
|
+
'Read the leads ColdIQ Visitor ID identified on one of your websites — the people who visited (with verified work email, title and LinkedIn where available) or the companies they belong to (with firmographics). ' +
|
|
8
|
+
'Use `type: "people"` for enriched contacts and `type: "companies"` for enriched accounts. To find `website_id`, call the free `GET /visitor-id/websites` endpoint through call_endpoint (api "visitor-id"). ' +
|
|
9
|
+
'Results are paginated: pass the `cursor` from the previous response to fetch the next page. Free — identifications are billed when they are delivered, not when you read them.'
|
|
10
|
+
|
|
11
|
+
export const getWebsiteVisitorsSchema = {
|
|
12
|
+
website_id: z
|
|
13
|
+
.number()
|
|
14
|
+
.int()
|
|
15
|
+
.describe('The tracked website to read leads from, as returned by GET /visitor-id/websites.'),
|
|
16
|
+
type: z
|
|
17
|
+
.enum(['people', 'companies'])
|
|
18
|
+
.describe('"people" returns identified contacts (email, title, LinkedIn); "companies" returns identified accounts (firmographics).'),
|
|
19
|
+
limit: z
|
|
20
|
+
.number()
|
|
21
|
+
.int()
|
|
22
|
+
.min(1)
|
|
23
|
+
.max(100)
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Records per page (1–100). Default is the identification engine\'s own default.'),
|
|
26
|
+
cursor: z.string().optional().describe('Pagination cursor from the previous response.'),
|
|
27
|
+
email: z
|
|
28
|
+
.string()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('people only — return the identified person with this email address.'),
|
|
31
|
+
account_id: z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('people only — return only the people identified at this company (account id from a "companies" result).'),
|
|
35
|
+
domain: z
|
|
36
|
+
.string()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('companies only — return the identified company with this domain.'),
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export async function getWebsiteVisitorsHandler(input: Record<string, unknown>) {
|
|
42
|
+
const websiteId = input.website_id as number
|
|
43
|
+
const type = input.type as 'people' | 'companies'
|
|
44
|
+
const isPeople = type === 'people'
|
|
45
|
+
const path = `/visitor-id/websites/${websiteId}/${isPeople ? 'contacts' : 'accounts'}`
|
|
46
|
+
|
|
47
|
+
const query: Record<string, string> = {}
|
|
48
|
+
if (input.limit !== undefined) query.limit = String(input.limit)
|
|
49
|
+
if (input.cursor) query.cursor = String(input.cursor)
|
|
50
|
+
if (isPeople) {
|
|
51
|
+
if (input.email) query.email = String(input.email)
|
|
52
|
+
if (input.account_id) query.account_id = String(input.account_id)
|
|
53
|
+
} else if (input.domain) {
|
|
54
|
+
query.domain = String(input.domain)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const res = await callApi('GET', path, undefined, query)
|
|
58
|
+
if (!res.ok) {
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{
|
|
62
|
+
type: 'text' as const,
|
|
63
|
+
text: JSON.stringify({
|
|
64
|
+
error: `Failed to read identified ${isPeople ? 'people' : 'companies'}`,
|
|
65
|
+
status: res.status,
|
|
66
|
+
data: res.data,
|
|
67
|
+
}),
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
isError: true,
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return { content: [{ type: 'text' as const, text: JSON.stringify({ data: res.data }) }] }
|
|
74
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
|
|
2
|
+
import { initClient } from '../../src/client.js'
|
|
3
|
+
import { getWebsiteVisitorsHandler, getWebsiteVisitorsSchema } from '../../src/tools/get-website-visitors.js'
|
|
4
|
+
|
|
5
|
+
describe('visitor-ID MCP tools', () => {
|
|
6
|
+
const originalFetch = globalThis.fetch
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
initClient('http://test-api.local', 'test-key')
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
globalThis.fetch = originalFetch
|
|
14
|
+
vi.restoreAllMocks()
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
function captureUrl(payload: unknown, status = 200) {
|
|
18
|
+
const seen: { url: string } = { url: '' }
|
|
19
|
+
globalThis.fetch = vi.fn(async (url: string | URL | Request) => {
|
|
20
|
+
seen.url = url.toString()
|
|
21
|
+
return new Response(JSON.stringify(payload), { status })
|
|
22
|
+
}) as typeof fetch
|
|
23
|
+
return seen
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
describe('get_website_visitors', () => {
|
|
27
|
+
it('reads identified people from the contacts endpoint', async () => {
|
|
28
|
+
const seen = captureUrl({ data: [{ email: 'michel@coldiq.com' }], next_cursor: 'abc' })
|
|
29
|
+
|
|
30
|
+
const result = await getWebsiteVisitorsHandler({ website_id: 7, type: 'people', limit: 25 })
|
|
31
|
+
|
|
32
|
+
const url = new URL(seen.url)
|
|
33
|
+
expect(url.pathname).toBe('/v1/visitor-id/websites/7/contacts')
|
|
34
|
+
expect(url.searchParams.get('limit')).toBe('25')
|
|
35
|
+
expect(result.isError).toBeFalsy()
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('reads identified companies from the accounts endpoint', async () => {
|
|
39
|
+
const seen = captureUrl({ data: [{ domain: 'coldiq.com' }] })
|
|
40
|
+
|
|
41
|
+
await getWebsiteVisitorsHandler({ website_id: 7, type: 'companies', domain: 'coldiq.com' })
|
|
42
|
+
|
|
43
|
+
const url = new URL(seen.url)
|
|
44
|
+
expect(url.pathname).toBe('/v1/visitor-id/websites/7/accounts')
|
|
45
|
+
expect(url.searchParams.get('domain')).toBe('coldiq.com')
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
it('sends people-only filters only for people, and company-only filters only for companies', async () => {
|
|
49
|
+
const people = captureUrl({ data: [] })
|
|
50
|
+
await getWebsiteVisitorsHandler({
|
|
51
|
+
website_id: 7,
|
|
52
|
+
type: 'people',
|
|
53
|
+
email: 'michel@coldiq.com',
|
|
54
|
+
account_id: 'acc_1',
|
|
55
|
+
domain: 'coldiq.com',
|
|
56
|
+
})
|
|
57
|
+
const peopleUrl = new URL(people.url)
|
|
58
|
+
expect(peopleUrl.searchParams.get('email')).toBe('michel@coldiq.com')
|
|
59
|
+
expect(peopleUrl.searchParams.get('account_id')).toBe('acc_1')
|
|
60
|
+
expect(peopleUrl.searchParams.get('domain')).toBeNull()
|
|
61
|
+
|
|
62
|
+
const companies = captureUrl({ data: [] })
|
|
63
|
+
await getWebsiteVisitorsHandler({
|
|
64
|
+
website_id: 7,
|
|
65
|
+
type: 'companies',
|
|
66
|
+
domain: 'coldiq.com',
|
|
67
|
+
email: 'michel@coldiq.com',
|
|
68
|
+
})
|
|
69
|
+
const companiesUrl = new URL(companies.url)
|
|
70
|
+
expect(companiesUrl.searchParams.get('domain')).toBe('coldiq.com')
|
|
71
|
+
expect(companiesUrl.searchParams.get('email')).toBeNull()
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
it('forwards the pagination cursor', async () => {
|
|
75
|
+
const seen = captureUrl({ data: [] })
|
|
76
|
+
|
|
77
|
+
await getWebsiteVisitorsHandler({ website_id: 7, type: 'people', cursor: 'next-page' })
|
|
78
|
+
|
|
79
|
+
expect(new URL(seen.url).searchParams.get('cursor')).toBe('next-page')
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
it('passes the upstream cursor envelope through verbatim', async () => {
|
|
83
|
+
captureUrl({ data: [{ id: 'c1' }], next_cursor: 'page2', has_more: true })
|
|
84
|
+
|
|
85
|
+
const result = await getWebsiteVisitorsHandler({ website_id: 7, type: 'people' })
|
|
86
|
+
const parsed = JSON.parse(result.content[0].text)
|
|
87
|
+
|
|
88
|
+
expect(parsed.data).toEqual({ data: [{ id: 'c1' }], next_cursor: 'page2', has_more: true })
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
it('returns isError when the website is not found', async () => {
|
|
92
|
+
captureUrl({ error: 'Website not found' }, 404)
|
|
93
|
+
|
|
94
|
+
const result = await getWebsiteVisitorsHandler({ website_id: 999, type: 'companies' })
|
|
95
|
+
|
|
96
|
+
expect(result.isError).toBe(true)
|
|
97
|
+
const parsed = JSON.parse(result.content[0].text)
|
|
98
|
+
expect(parsed.status).toBe(404)
|
|
99
|
+
expect(parsed.error).toBe('Failed to read identified companies')
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
it('rejects a type outside people/companies at the schema layer', () => {
|
|
103
|
+
expect(getWebsiteVisitorsSchema.type.safeParse('visitors').success).toBe(false)
|
|
104
|
+
expect(getWebsiteVisitorsSchema.type.safeParse('people').success).toBe(true)
|
|
105
|
+
expect(getWebsiteVisitorsSchema.limit.safeParse(101).success).toBe(false)
|
|
106
|
+
})
|
|
107
|
+
})
|
|
108
|
+
})
|