dtc-mcp 0.1.0

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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +344 -0
  3. package/dist/config.d.ts +17 -0
  4. package/dist/config.js +71 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/cross-platform/correlator.d.ts +10 -0
  7. package/dist/cross-platform/correlator.js +166 -0
  8. package/dist/cross-platform/correlator.js.map +1 -0
  9. package/dist/cross-platform/tools.d.ts +2 -0
  10. package/dist/cross-platform/tools.js +30 -0
  11. package/dist/cross-platform/tools.js.map +1 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.js +13 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/platforms/klaviyo/client.d.ts +91 -0
  16. package/dist/platforms/klaviyo/client.js +389 -0
  17. package/dist/platforms/klaviyo/client.js.map +1 -0
  18. package/dist/platforms/klaviyo/tools.d.ts +2 -0
  19. package/dist/platforms/klaviyo/tools.js +368 -0
  20. package/dist/platforms/klaviyo/tools.js.map +1 -0
  21. package/dist/platforms/klaviyo/transforms.d.ts +59 -0
  22. package/dist/platforms/klaviyo/transforms.js +326 -0
  23. package/dist/platforms/klaviyo/transforms.js.map +1 -0
  24. package/dist/platforms/shopify/client.d.ts +51 -0
  25. package/dist/platforms/shopify/client.js +366 -0
  26. package/dist/platforms/shopify/client.js.map +1 -0
  27. package/dist/platforms/shopify/tools.d.ts +2 -0
  28. package/dist/platforms/shopify/tools.js +253 -0
  29. package/dist/platforms/shopify/tools.js.map +1 -0
  30. package/dist/platforms/shopify/transforms.d.ts +88 -0
  31. package/dist/platforms/shopify/transforms.js +191 -0
  32. package/dist/platforms/shopify/transforms.js.map +1 -0
  33. package/dist/server.d.ts +2 -0
  34. package/dist/server.js +15 -0
  35. package/dist/server.js.map +1 -0
  36. package/dist/shared/cache.d.ts +23 -0
  37. package/dist/shared/cache.js +62 -0
  38. package/dist/shared/cache.js.map +1 -0
  39. package/dist/shared/errors.d.ts +25 -0
  40. package/dist/shared/errors.js +96 -0
  41. package/dist/shared/errors.js.map +1 -0
  42. package/dist/shared/pagination.d.ts +21 -0
  43. package/dist/shared/pagination.js +36 -0
  44. package/dist/shared/pagination.js.map +1 -0
  45. package/dist/shared/types.d.ts +247 -0
  46. package/dist/shared/types.js +3 -0
  47. package/dist/shared/types.js.map +1 -0
  48. package/package.json +55 -0
@@ -0,0 +1,368 @@
1
+ import { z } from "zod";
2
+ import { klaviyoGet, klaviyoGetPage, klaviyoPaginateAll, getCampaignReport, getFlowReport, } from "./client.js";
3
+ import { transformCampaignSummary, transformCampaignDetail, transformFlowSummary, transformFlowDetail, transformSubscriberHealth, transformListSegments, transformProfiles, transformEvents, } from "./transforms.js";
4
+ import { formatError, toolResult, } from "../../shared/errors.js";
5
+ import { extractKlaviyoCursor } from "../../shared/pagination.js";
6
+ export function registerKlaviyoTools(server) {
7
+ // ---- Tool 1: Campaign Summary ----
8
+ server.tool("klaviyo_campaign_summary", "Top campaigns ranked by metric. Returns: name, send_date, opens, clicks, revenue.", {
9
+ channel: z
10
+ .enum(["email", "sms"])
11
+ .describe("Channel filter (required by Klaviyo API)"),
12
+ metric: z
13
+ .enum(["revenue", "open_rate", "click_rate", "recipients"])
14
+ .default("revenue")
15
+ .describe("Sort/rank by this metric"),
16
+ days: z
17
+ .number()
18
+ .min(1)
19
+ .max(365)
20
+ .default(30)
21
+ .describe("Lookback period in days"),
22
+ limit: z
23
+ .number()
24
+ .min(1)
25
+ .max(25)
26
+ .default(10)
27
+ .describe("Max campaigns to return"),
28
+ }, async ({ channel, metric, days, limit }) => {
29
+ try {
30
+ // Fetch campaigns with sparse fieldsets
31
+ const campaigns = await klaviyoPaginateAll("campaigns", {
32
+ "filter": `equals(messages.channel,'${channel}'),equals(status,'Sent')`,
33
+ "fields[campaign]": "name,status,archived,send_options,scheduled_at,send_time",
34
+ });
35
+ // Filter to sent campaigns only
36
+ const sentCampaigns = campaigns.filter((c) => c.attributes.status === "Sent");
37
+ if (!sentCampaigns.length) {
38
+ return toolResult({ campaigns: [], message: "No sent campaigns found for this period." });
39
+ }
40
+ // Fetch reporting data (cached, reporting tier)
41
+ // Don't pass campaign IDs — avoids >100 ID limit on contains-any filter.
42
+ // transformCampaignSummary matches report rows to campaigns by ID.
43
+ const reportRows = await getCampaignReport(days);
44
+ const result = transformCampaignSummary(sentCampaigns, reportRows, metric, limit, channel);
45
+ return toolResult({ campaigns: result, period_days: days, ranked_by: metric });
46
+ }
47
+ catch (error) {
48
+ return formatError(error);
49
+ }
50
+ });
51
+ // ---- Tool 2: Campaign Detail ----
52
+ server.tool("klaviyo_campaign_detail", "Deep dive on one campaign: full metrics, subject line, audiences, send time.", {
53
+ campaign_id: z.string().describe("Klaviyo campaign ID"),
54
+ }, async ({ campaign_id }) => {
55
+ try {
56
+ // Fetch campaign with message includes
57
+ const response = await klaviyoGet(`campaigns/${campaign_id}`, {
58
+ "include": "campaign-messages",
59
+ "fields[campaign]": "name,status,archived,send_options,scheduled_at,send_time,audiences",
60
+ "fields[campaign-message]": "definition.label,definition.content.subject,definition.channel",
61
+ });
62
+ const campaign = response.data;
63
+ const messages = (response.included ?? []).map((m) => ({
64
+ attributes: m.attributes,
65
+ }));
66
+ // Resolve audience names
67
+ const audienceNames = await resolveAudienceNames(campaign.attributes);
68
+ // Fetch reporting for this campaign
69
+ const reportRows = await getCampaignReport(365, [campaign_id]);
70
+ const result = transformCampaignDetail(campaign, messages, reportRows, audienceNames);
71
+ return toolResult(result);
72
+ }
73
+ catch (error) {
74
+ return formatError(error);
75
+ }
76
+ });
77
+ // ---- Tool 3: Flow Summary ----
78
+ server.tool("klaviyo_flow_summary", "Top flows by metric. Returns: name, status, trigger, message_count, revenue.", {
79
+ metric: z
80
+ .enum(["revenue", "click_rate", "conversion_rate", "recipients"])
81
+ .default("revenue"),
82
+ days: z.number().min(1).max(365).default(30),
83
+ status: z
84
+ .enum(["live", "draft", "manual", "all"])
85
+ .default("live")
86
+ .describe("Filter by flow status"),
87
+ limit: z.number().min(1).max(25).default(10),
88
+ }, async ({ metric, days, status, limit }) => {
89
+ try {
90
+ const params = {
91
+ "fields[flow]": "name,status,trigger_type,archived",
92
+ "page[size]": "50",
93
+ };
94
+ if (status !== "all") {
95
+ params.filter = `equals(status,'${status}')`;
96
+ }
97
+ const flows = await klaviyoPaginateAll("flows", params);
98
+ if (!flows.length) {
99
+ return toolResult({ flows: [], message: "No flows found." });
100
+ }
101
+ // Count messages per flow
102
+ const flowsWithCounts = await Promise.all(flows.map(async (f) => {
103
+ try {
104
+ const actions = await klaviyoGet(`flows/${f.id}/flow-actions`, {
105
+ "fields[flow-action]": "created",
106
+ });
107
+ return {
108
+ ...f,
109
+ messageCount: actions.data?.length ?? 0,
110
+ };
111
+ }
112
+ catch {
113
+ return { ...f, messageCount: 0 };
114
+ }
115
+ }));
116
+ // Fetch flow reporting (cached, reporting tier)
117
+ // Don't pass flow IDs — avoids >100 ID limit on contains-any filter.
118
+ // transformFlowSummary matches report rows to flows by ID.
119
+ const reportRows = await getFlowReport(days);
120
+ const result = transformFlowSummary(flowsWithCounts, reportRows, metric, limit);
121
+ return toolResult({ flows: result, period_days: days, ranked_by: metric });
122
+ }
123
+ catch (error) {
124
+ return formatError(error);
125
+ }
126
+ });
127
+ // ---- Tool 4: Flow Detail ----
128
+ server.tool("klaviyo_flow_detail", "Deep dive on one flow: per-message performance breakdown.", {
129
+ flow_id: z.string().describe("Klaviyo flow ID"),
130
+ days: z.number().min(1).max(365).default(30),
131
+ }, async ({ flow_id, days }) => {
132
+ try {
133
+ // Step 1: Fetch flow with its actions (flow-messages not allowed on flows endpoint)
134
+ const response = await klaviyoGet(`flows/${flow_id}`, {
135
+ "include": "flow-actions",
136
+ "fields[flow]": "name,status,trigger_type",
137
+ });
138
+ const flow = response.data;
139
+ // Step 2: For each action, fetch its messages
140
+ const actionIds = (response.included ?? [])
141
+ .filter((i) => i.type === "flow-action")
142
+ .map((a) => a.id);
143
+ const messages = [];
144
+ for (const actionId of actionIds) {
145
+ const actionResp = await klaviyoGet(`flow-actions/${actionId}`, {
146
+ "include": "flow-messages",
147
+ });
148
+ const actionMessages = (actionResp.included ?? [])
149
+ .filter((i) => i.type === "flow-message")
150
+ .map((m) => ({ id: m.id, attributes: m.attributes }));
151
+ messages.push(...actionMessages);
152
+ }
153
+ // Fetch flow reporting grouped by message
154
+ const reportRows = await getFlowReport(days, [flow_id]);
155
+ const result = transformFlowDetail(flow, messages, reportRows);
156
+ return toolResult(result);
157
+ }
158
+ catch (error) {
159
+ return formatError(error);
160
+ }
161
+ });
162
+ // ---- Tool 5: Subscriber Health ----
163
+ server.tool("klaviyo_subscriber_health", "List growth and engagement tier breakdown. Pre-aggregated health snapshot.", {
164
+ list_id: z
165
+ .string()
166
+ .optional()
167
+ .describe("Specific list ID, or omit for all lists"),
168
+ }, async ({ list_id }) => {
169
+ try {
170
+ let lists;
171
+ if (list_id) {
172
+ const response = await klaviyoGet(`lists/${list_id}`, {
173
+ "fields[list]": "name,created,updated",
174
+ });
175
+ lists = [response.data];
176
+ }
177
+ else {
178
+ lists = await klaviyoPaginateAll("lists", {
179
+ "fields[list]": "name,created,updated",
180
+ });
181
+ }
182
+ // Fetch segments for engagement tiers
183
+ const segments = await klaviyoPaginateAll("segments", {
184
+ "fields[segment]": "name,created,updated",
185
+ });
186
+ const result = transformSubscriberHealth(lists, segments);
187
+ return toolResult(result);
188
+ }
189
+ catch (error) {
190
+ return formatError(error);
191
+ }
192
+ });
193
+ // ---- Tool 6: List & Segments ----
194
+ server.tool("klaviyo_list_segments", "All lists and segments with sizes. No full definitions.", {
195
+ type: z
196
+ .enum(["lists", "segments", "all"])
197
+ .default("all")
198
+ .describe("Filter by type"),
199
+ cursor: z
200
+ .string()
201
+ .optional()
202
+ .describe("Pagination cursor from previous response"),
203
+ }, async ({ type, cursor }) => {
204
+ try {
205
+ const lists = type === "segments"
206
+ ? []
207
+ : (await klaviyoGetPage("lists", {
208
+ "fields[list]": "name,created,updated",
209
+ }, type === "lists" ? cursor : undefined)).data;
210
+ const listsLinks = type === "segments"
211
+ ? undefined
212
+ : (await klaviyoGet("lists", {
213
+ "fields[list]": "name,created,updated",
214
+ ...(cursor && type === "lists"
215
+ ? { "page[cursor]": cursor }
216
+ : {}),
217
+ })).links;
218
+ const segments = type === "lists"
219
+ ? []
220
+ : (await klaviyoGetPage("segments", {
221
+ "fields[segment]": "name,created,updated",
222
+ }, type === "segments" ? cursor : undefined)).data;
223
+ const items = transformListSegments(lists, segments);
224
+ const nextCursor = extractKlaviyoCursor(listsLinks);
225
+ return toolResult({
226
+ items,
227
+ next_cursor: nextCursor,
228
+ has_more: nextCursor !== null,
229
+ });
230
+ }
231
+ catch (error) {
232
+ return formatError(error);
233
+ }
234
+ });
235
+ // ---- Tool 7: Search Profiles ----
236
+ server.tool("klaviyo_search_profiles", "Find profiles by email, phone, or name. Returns key fields only.", {
237
+ query: z
238
+ .string()
239
+ .describe("Email address, phone number, or name to search"),
240
+ limit: z.number().min(1).max(10).default(5),
241
+ }, async ({ query, limit }) => {
242
+ try {
243
+ // Detect query type
244
+ let filter;
245
+ if (query.includes("@")) {
246
+ filter = `equals(email,"${query}")`;
247
+ }
248
+ else if (query.startsWith("+") || /^\d{10,}$/.test(query)) {
249
+ filter = `equals(phone_number,"${query}")`;
250
+ }
251
+ else {
252
+ // Name search — try first_name contains
253
+ filter = `contains(first_name,"${query}")`;
254
+ }
255
+ const response = await klaviyoGet("profiles", {
256
+ filter,
257
+ "fields[profile]": "email,first_name,last_name,phone_number,created,location",
258
+ "page[size]": String(limit),
259
+ });
260
+ const result = transformProfiles(response.data ?? []);
261
+ return toolResult({ profiles: result });
262
+ }
263
+ catch (error) {
264
+ return formatError(error);
265
+ }
266
+ });
267
+ // ---- Tool 8: Recent Activity ----
268
+ server.tool("klaviyo_recent_activity", "Recent events for a metric (e.g., Placed Order, Opened Email). Last N events.", {
269
+ metric_name: z
270
+ .string()
271
+ .default("Placed Order")
272
+ .describe("Metric name like 'Placed Order', 'Opened Email'"),
273
+ days: z.number().min(1).max(90).default(7),
274
+ limit: z.number().min(1).max(25).default(10),
275
+ profile_email: z
276
+ .string()
277
+ .optional()
278
+ .describe("Filter to specific profile email"),
279
+ }, async ({ metric_name, days, limit, profile_email }) => {
280
+ try {
281
+ // Resolve metric name to ID
282
+ const metricsResponse = await klaviyoGet("metrics", {
283
+ filter: `equals(name,"${metric_name}")`,
284
+ "fields[metric]": "name",
285
+ });
286
+ if (!metricsResponse.data?.length) {
287
+ return toolResult({
288
+ events: [],
289
+ message: `No metric found with name "${metric_name}".`,
290
+ });
291
+ }
292
+ const metricId = metricsResponse.data[0].id;
293
+ // Build events filter
294
+ const since = new Date();
295
+ since.setDate(since.getDate() - days);
296
+ let filter = `greater-or-equal(datetime,${since.toISOString()})`;
297
+ filter += `,equals(metric_id,"${metricId}")`;
298
+ if (profile_email) {
299
+ // First find profile by email
300
+ const profileResp = await klaviyoGet("profiles", {
301
+ filter: `equals(email,"${profile_email}")`,
302
+ "fields[profile]": "email",
303
+ });
304
+ if (profileResp.data?.length) {
305
+ filter += `,equals(profile_id,"${profileResp.data[0].id}")`;
306
+ }
307
+ }
308
+ const response = await klaviyoGet("events", {
309
+ filter,
310
+ include: "profile",
311
+ "fields[event]": "datetime,event_properties",
312
+ "fields[profile]": "email,first_name,last_name",
313
+ sort: "-datetime",
314
+ });
315
+ // Build profile lookup from included
316
+ const profileMap = new Map();
317
+ for (const included of response.included ?? []) {
318
+ if (included.type === "profile") {
319
+ profileMap.set(included.id, {
320
+ email: included.attributes.email,
321
+ first_name: included.attributes.first_name,
322
+ last_name: included.attributes.last_name,
323
+ });
324
+ }
325
+ }
326
+ const result = transformEvents((response.data ?? []).slice(0, limit), profileMap, metric_name);
327
+ return toolResult({
328
+ events: result,
329
+ metric: metric_name,
330
+ period_days: days,
331
+ });
332
+ }
333
+ catch (error) {
334
+ return formatError(error);
335
+ }
336
+ });
337
+ }
338
+ // ---- Helpers ----
339
+ async function resolveAudienceNames(attrs) {
340
+ const audiences = attrs.audiences;
341
+ if (!audiences?.included?.length)
342
+ return [];
343
+ const names = [];
344
+ for (const audience of audiences.included) {
345
+ try {
346
+ // Try as list first, then segment
347
+ const listResp = await klaviyoGet(`lists/${audience.id}`, {
348
+ "fields[list]": "name",
349
+ });
350
+ const data = listResp.data;
351
+ names.push(data.attributes.name);
352
+ }
353
+ catch {
354
+ try {
355
+ const segResp = await klaviyoGet(`segments/${audience.id}`, {
356
+ "fields[segment]": "name",
357
+ });
358
+ const data = segResp.data;
359
+ names.push(data.attributes.name);
360
+ }
361
+ catch {
362
+ names.push(audience.id); // fallback to ID
363
+ }
364
+ }
365
+ }
366
+ return names;
367
+ }
368
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/platforms/klaviyo/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { CampaignSummaryItem, CampaignDetail, FlowSummaryItem, FlowDetail, SubscriberHealth, ListSegmentItem, ProfileResult, ActivityEvent } from "../../shared/types.js";
2
+ interface KlaviyoReportRow {
3
+ groupings: {
4
+ campaign_id?: string;
5
+ flow_id?: string;
6
+ flow_message_id?: string;
7
+ send_channel?: string;
8
+ };
9
+ statistics: Record<string, number>;
10
+ }
11
+ export declare function transformCampaignSummary(campaigns: Array<{
12
+ id: string;
13
+ attributes: Record<string, unknown>;
14
+ }>, reportRows: KlaviyoReportRow[], metric: string, limit: number, channel?: string): CampaignSummaryItem[];
15
+ export declare function transformCampaignDetail(campaign: {
16
+ id: string;
17
+ attributes: Record<string, unknown>;
18
+ }, messages: Array<{
19
+ attributes: Record<string, unknown>;
20
+ }>, reportRows: KlaviyoReportRow[], audienceNames: string[]): CampaignDetail;
21
+ export declare function transformFlowSummary(flows: Array<{
22
+ id: string;
23
+ attributes: Record<string, unknown>;
24
+ messageCount: number;
25
+ }>, reportRows: KlaviyoReportRow[], metric: string, limit: number): FlowSummaryItem[];
26
+ export declare function transformFlowDetail(flow: {
27
+ id: string;
28
+ attributes: Record<string, unknown>;
29
+ }, messages: Array<{
30
+ id: string;
31
+ attributes: Record<string, unknown>;
32
+ }>, reportRows: KlaviyoReportRow[]): FlowDetail;
33
+ export declare function transformSubscriberHealth(lists: Array<{
34
+ id: string;
35
+ attributes: Record<string, unknown>;
36
+ }>, segments: Array<{
37
+ id: string;
38
+ attributes: Record<string, unknown>;
39
+ }>): SubscriberHealth;
40
+ export declare function transformListSegments(lists: Array<{
41
+ id: string;
42
+ attributes: Record<string, unknown>;
43
+ }>, segments: Array<{
44
+ id: string;
45
+ attributes: Record<string, unknown>;
46
+ }>): ListSegmentItem[];
47
+ export declare function transformProfiles(profiles: Array<{
48
+ id: string;
49
+ attributes: Record<string, unknown>;
50
+ }>): ProfileResult[];
51
+ export declare function transformEvents(events: Array<{
52
+ attributes: Record<string, unknown>;
53
+ relationships?: Record<string, unknown>;
54
+ }>, includedProfiles: Map<string, {
55
+ email?: string;
56
+ first_name?: string;
57
+ last_name?: string;
58
+ }>, metricName: string): ActivityEvent[];
59
+ export {};