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,247 @@
1
+ export interface ToolResponse {
2
+ [key: string]: unknown;
3
+ content: Array<{
4
+ type: "text";
5
+ text: string;
6
+ }>;
7
+ isError?: boolean;
8
+ }
9
+ export interface PaginatedResponse<T> {
10
+ data: T[];
11
+ next_cursor: string | null;
12
+ has_more: boolean;
13
+ }
14
+ export type RateLimitTier = "standard" | "reporting";
15
+ export interface CampaignSummaryItem {
16
+ id: string;
17
+ name: string;
18
+ channel: string;
19
+ status: string;
20
+ send_date: string | null;
21
+ recipients: number;
22
+ open_rate: number;
23
+ click_rate: number;
24
+ revenue: number;
25
+ unsubscribe_rate: number;
26
+ }
27
+ export interface CampaignDetail {
28
+ id: string;
29
+ name: string;
30
+ channel: string;
31
+ status: string;
32
+ subject_line: string | null;
33
+ send_date: string | null;
34
+ audiences: string[];
35
+ recipients: number;
36
+ open_rate: number;
37
+ click_rate: number;
38
+ click_through_rate: number;
39
+ revenue: number;
40
+ unsubscribe_rate: number;
41
+ bounce_rate: number;
42
+ spam_rate: number;
43
+ }
44
+ export interface FlowSummaryItem {
45
+ id: string;
46
+ name: string;
47
+ status: string;
48
+ trigger_type: string;
49
+ message_count: number;
50
+ recipients: number;
51
+ click_rate: number;
52
+ revenue: number;
53
+ conversion_rate: number;
54
+ }
55
+ export interface FlowDetailMessage {
56
+ message_id: string;
57
+ message_name: string;
58
+ subject_line: string | null;
59
+ status: string;
60
+ recipients: number;
61
+ open_rate: number;
62
+ click_rate: number;
63
+ revenue: number;
64
+ }
65
+ export interface FlowDetail {
66
+ id: string;
67
+ name: string;
68
+ status: string;
69
+ trigger_type: string;
70
+ total_revenue: number;
71
+ total_recipients: number;
72
+ messages: FlowDetailMessage[];
73
+ }
74
+ export interface SubscriberHealth {
75
+ total_subscribers: number;
76
+ lists: Array<{
77
+ id: string;
78
+ name: string;
79
+ size: number;
80
+ }>;
81
+ segments: Array<{
82
+ id: string;
83
+ name: string;
84
+ estimated_size: number;
85
+ }>;
86
+ }
87
+ export interface ListSegmentItem {
88
+ id: string;
89
+ name: string;
90
+ type: "list" | "segment";
91
+ size: number;
92
+ created_at: string;
93
+ updated_at: string;
94
+ }
95
+ export interface ProfileResult {
96
+ email: string | null;
97
+ first_name: string | null;
98
+ last_name: string | null;
99
+ phone_number: string | null;
100
+ city: string | null;
101
+ country: string | null;
102
+ created_at: string;
103
+ }
104
+ export interface ActivityEvent {
105
+ timestamp: string;
106
+ profile_email: string | null;
107
+ profile_name: string | null;
108
+ event_properties: Record<string, unknown>;
109
+ }
110
+ export interface SalesSummary {
111
+ period: string;
112
+ gross_revenue: number;
113
+ net_revenue: number;
114
+ order_count: number;
115
+ aov: number;
116
+ currency: string;
117
+ comparison?: {
118
+ gross_revenue_delta_pct: number;
119
+ net_revenue_delta_pct: number;
120
+ orders_delta_pct: number;
121
+ aov_delta_pct: number;
122
+ previous_gross_revenue: number;
123
+ previous_net_revenue: number;
124
+ previous_orders: number;
125
+ previous_aov: number;
126
+ };
127
+ }
128
+ export interface ProductPerformanceItem {
129
+ product_title: string;
130
+ vendor: string | null;
131
+ revenue: number;
132
+ units_sold: number;
133
+ order_count: number;
134
+ avg_price: number;
135
+ }
136
+ export interface OrderSearchItem {
137
+ order_number: string;
138
+ email: string | null;
139
+ date: string;
140
+ total: string;
141
+ currency: string;
142
+ financial_status: string;
143
+ fulfillment_status: string | null;
144
+ items: Array<{
145
+ title: string;
146
+ quantity: number;
147
+ price: string;
148
+ }>;
149
+ }
150
+ export interface InventoryAlertItem {
151
+ product_title: string;
152
+ variant_title: string;
153
+ sku: string | null;
154
+ inventory_quantity: number;
155
+ }
156
+ export interface CustomerCohort {
157
+ period_days: number;
158
+ total_customers: number;
159
+ new_customers: number;
160
+ returning_customers: number;
161
+ repeat_rate: number;
162
+ avg_orders_per_customer: number;
163
+ cohorts: Array<{
164
+ label: string;
165
+ count: number;
166
+ avg_spent: number;
167
+ }>;
168
+ top_customers: Array<{
169
+ email: string | null;
170
+ orders: number;
171
+ total_spent: number;
172
+ }>;
173
+ }
174
+ export interface RecentOrderItem {
175
+ order_number: string;
176
+ email: string | null;
177
+ date: string;
178
+ total: string;
179
+ currency: string;
180
+ financial_status: string;
181
+ fulfillment_status: string | null;
182
+ }
183
+ export interface SalesBucket {
184
+ date: string;
185
+ gross_revenue: number;
186
+ net_revenue: number;
187
+ order_count: number;
188
+ aov: number;
189
+ }
190
+ export interface SalesTimeSeries {
191
+ period_days: number;
192
+ granularity: "daily" | "weekly" | "monthly";
193
+ timezone: string;
194
+ currency: string;
195
+ buckets: SalesBucket[];
196
+ totals: {
197
+ revenue: number;
198
+ order_count: number;
199
+ aov: number;
200
+ };
201
+ }
202
+ export interface RevenueAttribution {
203
+ period_days: number;
204
+ total_revenue: number;
205
+ email_campaign_revenue: number;
206
+ flow_revenue: number;
207
+ email_total_revenue: number;
208
+ email_pct_of_total: number;
209
+ flow_vs_campaign_split: {
210
+ campaign_pct: number;
211
+ flow_pct: number;
212
+ };
213
+ top_revenue_campaigns: Array<{
214
+ name: string;
215
+ revenue: number;
216
+ }>;
217
+ top_revenue_flows: Array<{
218
+ name: string;
219
+ revenue: number;
220
+ }>;
221
+ note: string;
222
+ }
223
+ export interface Dashboard {
224
+ period_days: number;
225
+ sales: {
226
+ revenue: number;
227
+ orders: number;
228
+ aov: number;
229
+ };
230
+ email: {
231
+ email_revenue: number;
232
+ email_pct_of_total: number;
233
+ top_campaigns: Array<{
234
+ name: string;
235
+ revenue: number;
236
+ open_rate: number;
237
+ }>;
238
+ top_flows: Array<{
239
+ name: string;
240
+ revenue: number;
241
+ }>;
242
+ };
243
+ subscribers: {
244
+ total: number;
245
+ list_count: number;
246
+ };
247
+ }
@@ -0,0 +1,3 @@
1
+ // ---- MCP Tool Response ----
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,8BAA8B"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "dtc-mcp",
3
+ "version": "0.1.0",
4
+ "description": "Context-optimized MCP server for DTC e-commerce brands (Klaviyo + Shopify). 80% less context usage than raw API wrappers.",
5
+ "type": "module",
6
+ "bin": {
7
+ "dtc-mcp": "dist/index.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsc --watch",
13
+ "start": "node dist/index.js",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "inspect": "npx @modelcontextprotocol/inspector dist/index.js"
17
+ },
18
+ "keywords": [
19
+ "mcp",
20
+ "klaviyo",
21
+ "shopify",
22
+ "dtc",
23
+ "ecommerce",
24
+ "analytics",
25
+ "context-optimized"
26
+ ],
27
+ "author": "Rafael Sztutman",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/rafaelsztutman/dtc-mcp.git"
32
+ },
33
+ "homepage": "https://github.com/rafaelsztutman/dtc-mcp#readme",
34
+ "bugs": {
35
+ "url": "https://github.com/rafaelsztutman/dtc-mcp/issues"
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "README.md",
40
+ "LICENSE"
41
+ ],
42
+ "engines": {
43
+ "node": ">=20.0.0"
44
+ },
45
+ "dependencies": {
46
+ "@modelcontextprotocol/sdk": "^1.27.0",
47
+ "dotenv": "^17.3.1",
48
+ "zod": "^3.23.8"
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^20.0.0",
52
+ "typescript": "^5.5.0",
53
+ "vitest": "^2.0.0"
54
+ }
55
+ }