lemonsqueezy-mcp-server 1.0.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 (97) hide show
  1. package/ENV_EXAMPLE.md +83 -0
  2. package/LICENSE +21 -0
  3. package/README.md +141 -0
  4. package/SETUP.md +244 -0
  5. package/dist/config.d.ts +25 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +80 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/config.test.d.ts +2 -0
  10. package/dist/config.test.d.ts.map +1 -0
  11. package/dist/config.test.js +55 -0
  12. package/dist/config.test.js.map +1 -0
  13. package/dist/connections/firebase.d.ts +3 -0
  14. package/dist/connections/firebase.d.ts.map +1 -0
  15. package/dist/connections/firebase.js +62 -0
  16. package/dist/connections/firebase.js.map +1 -0
  17. package/dist/connections/salesforce.d.ts +3 -0
  18. package/dist/connections/salesforce.d.ts.map +1 -0
  19. package/dist/connections/salesforce.js +307 -0
  20. package/dist/connections/salesforce.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +101 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/resources/payment-context.d.ts +14 -0
  26. package/dist/resources/payment-context.d.ts.map +1 -0
  27. package/dist/resources/payment-context.js +111 -0
  28. package/dist/resources/payment-context.js.map +1 -0
  29. package/dist/server.d.ts +36 -0
  30. package/dist/server.d.ts.map +1 -0
  31. package/dist/server.js +14 -0
  32. package/dist/server.js.map +1 -0
  33. package/dist/sync-last-purchase.d.ts +3 -0
  34. package/dist/sync-last-purchase.d.ts.map +1 -0
  35. package/dist/sync-last-purchase.js +113 -0
  36. package/dist/sync-last-purchase.js.map +1 -0
  37. package/dist/tools/definitions.d.ts +3768 -0
  38. package/dist/tools/definitions.d.ts.map +1 -0
  39. package/dist/tools/definitions.js +753 -0
  40. package/dist/tools/definitions.js.map +1 -0
  41. package/dist/tools/handlers/analytics.d.ts +21 -0
  42. package/dist/tools/handlers/analytics.d.ts.map +1 -0
  43. package/dist/tools/handlers/analytics.js +398 -0
  44. package/dist/tools/handlers/analytics.js.map +1 -0
  45. package/dist/tools/handlers/lemonsqueezy.d.ts +436 -0
  46. package/dist/tools/handlers/lemonsqueezy.d.ts.map +1 -0
  47. package/dist/tools/handlers/lemonsqueezy.js +481 -0
  48. package/dist/tools/handlers/lemonsqueezy.js.map +1 -0
  49. package/dist/tools/handlers/salesforce.d.ts +13 -0
  50. package/dist/tools/handlers/salesforce.d.ts.map +1 -0
  51. package/dist/tools/handlers/salesforce.js +54 -0
  52. package/dist/tools/handlers/salesforce.js.map +1 -0
  53. package/dist/tools/handlers/vos.d.ts +26 -0
  54. package/dist/tools/handlers/vos.d.ts.map +1 -0
  55. package/dist/tools/handlers/vos.js +207 -0
  56. package/dist/tools/handlers/vos.js.map +1 -0
  57. package/dist/tools/index.d.ts +7 -0
  58. package/dist/tools/index.d.ts.map +1 -0
  59. package/dist/tools/index.js +202 -0
  60. package/dist/tools/index.js.map +1 -0
  61. package/dist/types.d.ts +24 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +2 -0
  64. package/dist/types.js.map +1 -0
  65. package/dist/utils/logger.d.ts +3 -0
  66. package/dist/utils/logger.d.ts.map +1 -0
  67. package/dist/utils/logger.js +8 -0
  68. package/dist/utils/logger.js.map +1 -0
  69. package/dist/utils/response.d.ts +14 -0
  70. package/dist/utils/response.d.ts.map +1 -0
  71. package/dist/utils/response.js +17 -0
  72. package/dist/utils/response.js.map +1 -0
  73. package/dist/utils/retry.d.ts +11 -0
  74. package/dist/utils/retry.d.ts.map +1 -0
  75. package/dist/utils/retry.js +36 -0
  76. package/dist/utils/retry.js.map +1 -0
  77. package/dist/utils/secrets/provider.d.ts +30 -0
  78. package/dist/utils/secrets/provider.d.ts.map +1 -0
  79. package/dist/utils/secrets/provider.js +51 -0
  80. package/dist/utils/secrets/provider.js.map +1 -0
  81. package/dist/utils/secrets.d.ts +7 -0
  82. package/dist/utils/secrets.d.ts.map +1 -0
  83. package/dist/utils/secrets.js +16 -0
  84. package/dist/utils/secrets.js.map +1 -0
  85. package/dist/utils/validation.d.ts +580 -0
  86. package/dist/utils/validation.d.ts.map +1 -0
  87. package/dist/utils/validation.js +250 -0
  88. package/dist/utils/validation.js.map +1 -0
  89. package/dist/webhooks/listener.d.ts +17 -0
  90. package/dist/webhooks/listener.d.ts.map +1 -0
  91. package/dist/webhooks/listener.js +140 -0
  92. package/dist/webhooks/listener.js.map +1 -0
  93. package/dist/webhooks/ngrok.d.ts +8 -0
  94. package/dist/webhooks/ngrok.d.ts.map +1 -0
  95. package/dist/webhooks/ngrok.js +50 -0
  96. package/dist/webhooks/ngrok.js.map +1 -0
  97. package/package.json +68 -0
@@ -0,0 +1,207 @@
1
+ import admin from "firebase-admin";
2
+ import { listOrders, listSubscriptions } from "@lemonsqueezy/lemonsqueezy.js";
3
+ import { getFirebaseApp } from "../../connections/firebase.js";
4
+ import { config } from "../../config.js";
5
+ import { createResponse, createErrorResponse } from "../../utils/response.js";
6
+ export async function handleSearchTransactionsNatural(args) {
7
+ const { query } = args;
8
+ try {
9
+ const app = await getFirebaseApp();
10
+ const db = app.firestore();
11
+ // 1. Parse query for date range and intent
12
+ const now = new Date();
13
+ let startDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000); // Default 30 days
14
+ const q = query.toLowerCase();
15
+ if (q.includes("yesterday")) {
16
+ startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
17
+ }
18
+ else if (q.includes("today")) {
19
+ startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());
20
+ }
21
+ else if (q.includes("week")) {
22
+ startDate = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
23
+ }
24
+ else if (q.includes("month")) {
25
+ startDate = new Date(now.getFullYear(), now.getMonth(), 1);
26
+ }
27
+ // Keywords
28
+ const isRefund = q.includes("refund");
29
+ const isSub = q.includes("subscription");
30
+ const isPack = q.includes("pack");
31
+ const isOrder = q.includes("order") || (!isRefund && !isSub && !isPack);
32
+ // 2. Query Lemon Squeezy
33
+ const lsTransactions = [];
34
+ const storeId = config.lemonSqueezyStoreId;
35
+ if (isOrder || isRefund) {
36
+ const { data } = await listOrders({
37
+ filter: { storeId: storeId ? parseInt(storeId) : undefined },
38
+ });
39
+ if (data?.data) {
40
+ lsTransactions.push(...data.data.filter((o) => {
41
+ const created = new Date(o.attributes.created_at);
42
+ if (created < startDate)
43
+ return false;
44
+ if (isRefund && o.attributes.status !== "refunded")
45
+ return false;
46
+ return true;
47
+ }));
48
+ }
49
+ }
50
+ if (isSub) {
51
+ const { data } = await listSubscriptions({
52
+ filter: { storeId: storeId ? parseInt(storeId) : undefined },
53
+ });
54
+ if (data?.data) {
55
+ lsTransactions.push(...data.data.filter((s) => {
56
+ const created = new Date(s.attributes.created_at);
57
+ return created >= startDate;
58
+ }));
59
+ }
60
+ }
61
+ // 3. Query Firestore
62
+ let firestoreQuery = db
63
+ .collection("revenue_ledger")
64
+ .where("createdAt", ">=", admin.firestore.Timestamp.fromDate(startDate));
65
+ if (isSub)
66
+ firestoreQuery = firestoreQuery.where("type", "==", "subscription");
67
+ if (isPack)
68
+ firestoreQuery = firestoreQuery.where("type", "==", "pack");
69
+ const snapshot = await firestoreQuery.get();
70
+ const firestoreEntries = snapshot.docs.map((doc) => ({ id: doc.id, ...doc.data() }));
71
+ // 4. Discrepancies
72
+ const discrepancies = [];
73
+ firestoreEntries.forEach((entry) => {
74
+ const lsMatch = lsTransactions.find((t) => t.id === entry.transactionId || t.attributes.identifier === entry.transactionId);
75
+ if (lsMatch) {
76
+ const lsAmount = (lsMatch.attributes.total || lsMatch.attributes.amount) / 100;
77
+ if (lsAmount !== entry.amountPaid) {
78
+ discrepancies.push({
79
+ transactionId: entry.transactionId,
80
+ lsAmount,
81
+ firestoreAmount: entry.amountPaid,
82
+ delta: lsAmount - entry.amountPaid,
83
+ });
84
+ }
85
+ }
86
+ });
87
+ return createResponse({
88
+ lemonSqueezy: {
89
+ count: lsTransactions.length,
90
+ totalAmount: lsTransactions.reduce((acc, t) => acc + (t.attributes.total || t.attributes.amount || 0) / 100, 0),
91
+ transactions: lsTransactions.map((t) => ({
92
+ id: t.id,
93
+ status: t.attributes.status,
94
+ amount: (t.attributes.total || t.attributes.amount) / 100,
95
+ })),
96
+ },
97
+ firestore: {
98
+ count: firestoreEntries.length,
99
+ totalAmount: firestoreEntries.reduce((acc, e) => acc + (e.amountPaid || 0), 0),
100
+ entries: firestoreEntries,
101
+ },
102
+ discrepancies,
103
+ });
104
+ }
105
+ catch (error) {
106
+ return createErrorResponse(error);
107
+ }
108
+ }
109
+ export async function handleAnalyzeChurnRisk(args) {
110
+ try {
111
+ const app = await getFirebaseApp();
112
+ const db = app.firestore();
113
+ // 1. Fetch active subscriptions from LS
114
+ const storeId = config.lemonSqueezyStoreId;
115
+ const { data } = await listSubscriptions({
116
+ filter: { storeId: storeId ? parseInt(storeId) : undefined, status: "active" },
117
+ });
118
+ if (!data?.data)
119
+ return createResponse({ totalActiveSubscriptions: 0, atRiskUsers: [], atRiskMRR: 0 });
120
+ const activeSubs = data.data;
121
+ const atRiskUsers = [];
122
+ let atRiskMRR = 0;
123
+ const twentyEightDaysAgo = new Date(Date.now() - 28 * 24 * 60 * 60 * 1000);
124
+ // 2. Cross-reference with Firestore users
125
+ for (const sub of activeSubs) {
126
+ const email = sub.attributes.user_email;
127
+ const attrs = sub.attributes;
128
+ const userSnapshot = await db.collection("users").where("email", "==", email).limit(1).get();
129
+ if (userSnapshot.empty) {
130
+ // No user found in Firestore but active subscription exists? Flag it.
131
+ atRiskUsers.push({
132
+ email,
133
+ name: attrs.user_name || "Unknown",
134
+ subscriptionId: sub.id,
135
+ daysSinceLastLogin: -1, // Never logged in
136
+ monthlyValue: attrs.variant_amount / 100 || 0,
137
+ });
138
+ atRiskMRR += attrs.variant_amount / 100 || 0;
139
+ continue;
140
+ }
141
+ const userData = userSnapshot.docs[0].data();
142
+ const lastLogin = userData.lastLoginAt ? userData.lastLoginAt.toDate() : null;
143
+ if (!lastLogin || lastLogin < twentyEightDaysAgo) {
144
+ const daysSince = lastLogin
145
+ ? Math.floor((Date.now() - lastLogin.getTime()) / (1000 * 60 * 60 * 24))
146
+ : 999;
147
+ atRiskUsers.push({
148
+ email: userData.email || email,
149
+ name: userData.name || attrs.user_name,
150
+ subscriptionId: sub.id,
151
+ daysSinceLastLogin: daysSince,
152
+ monthlyValue: attrs.variant_amount / 100 || 0,
153
+ });
154
+ atRiskMRR += attrs.variant_amount / 100 || 0;
155
+ }
156
+ }
157
+ return createResponse({
158
+ totalActiveSubscriptions: activeSubs.length,
159
+ atRiskUsers,
160
+ atRiskMRR,
161
+ });
162
+ }
163
+ catch (error) {
164
+ return createErrorResponse(error);
165
+ }
166
+ }
167
+ export async function handleCanonizeDecision(args) {
168
+ const { decision, rationale, expectedOutcome, category } = args;
169
+ try {
170
+ const app = await getFirebaseApp();
171
+ const db = app.firestore();
172
+ // 1. Calculate Snapshot Metrics
173
+ const activeSubscribersSnapshot = await db
174
+ .collection("users")
175
+ .where("subscriptionStatus", "==", "active")
176
+ .get();
177
+ const usersWithCreditsSnapshot = await db.collection("users").where("creditBalance", ">", 0).get();
178
+ // Use a Set to get unique active users
179
+ const activeUserIds = new Set();
180
+ activeSubscribersSnapshot.docs.forEach((doc) => activeUserIds.add(doc.id));
181
+ usersWithCreditsSnapshot.docs.forEach((doc) => activeUserIds.add(doc.id));
182
+ const snapshot = {
183
+ activeUserCount: activeUserIds.size,
184
+ activeSubscriberCount: activeSubscribersSnapshot.size,
185
+ timestamp: new Date().toISOString(),
186
+ };
187
+ // 2. Create Decision Document
188
+ const decisionData = {
189
+ decision,
190
+ rationale,
191
+ expectedOutcome,
192
+ category: category || "general",
193
+ createdAt: admin.firestore.FieldValue.serverTimestamp(),
194
+ snapshot,
195
+ };
196
+ const docRef = await db.collection("business_decisions").add(decisionData);
197
+ return createResponse({
198
+ success: true,
199
+ id: docRef.id,
200
+ snapshot,
201
+ });
202
+ }
203
+ catch (error) {
204
+ return createErrorResponse(error);
205
+ }
206
+ }
207
+ //# sourceMappingURL=vos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vos.js","sourceRoot":"","sources":["../../../src/tools/handlers/vos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function handleToolCall(name: string, args: unknown): Promise<{
2
+ content: {
3
+ type: "text";
4
+ text: string;
5
+ }[];
6
+ }>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AASA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;;;;;GAwT/D"}
@@ -0,0 +1,202 @@
1
+ import { TOOLS } from "./definitions.js";
2
+ import * as lsHandlers from "./handlers/lemonsqueezy.js";
3
+ import * as sfHandlers from "./handlers/salesforce.js";
4
+ import * as vosHandlers from "./handlers/vos.js";
5
+ import * as analyticsHandlers from "./handlers/analytics.js";
6
+ import { createErrorResponse } from "../utils/response.js";
7
+ import { validateToolArgs } from "../utils/validation.js";
8
+ import { logger } from "../utils/logger.js";
9
+ export async function handleToolCall(name, args) {
10
+ try {
11
+ // Validate input arguments
12
+ let validatedArgs;
13
+ try {
14
+ validatedArgs = validateToolArgs(name, args);
15
+ }
16
+ catch (validationError) {
17
+ logger.warn({ tool: name, args, error: validationError }, "Input validation failed");
18
+ return createErrorResponse(new Error(`Invalid arguments for ${name}: ${validationError instanceof Error ? validationError.message : String(validationError)}`));
19
+ }
20
+ // Stores
21
+ if (name === TOOLS.GET_STORE) {
22
+ return await lsHandlers.handleGetStore(validatedArgs);
23
+ }
24
+ if (name === TOOLS.LIST_STORES) {
25
+ return await lsHandlers.handleListStores(validatedArgs);
26
+ }
27
+ // Customers
28
+ if (name === TOOLS.GET_CUSTOMER) {
29
+ return await lsHandlers.handleGetCustomer(validatedArgs);
30
+ }
31
+ if (name === TOOLS.LIST_CUSTOMERS) {
32
+ return await lsHandlers.handleListCustomers(validatedArgs);
33
+ }
34
+ if (name === TOOLS.CREATE_CUSTOMER) {
35
+ return await lsHandlers.handleCreateCustomer(validatedArgs);
36
+ }
37
+ if (name === TOOLS.UPDATE_CUSTOMER) {
38
+ return await lsHandlers.handleUpdateCustomer(validatedArgs);
39
+ }
40
+ if (name === TOOLS.ARCHIVE_CUSTOMER) {
41
+ return await lsHandlers.handleArchiveCustomer(validatedArgs);
42
+ }
43
+ // Products
44
+ if (name === TOOLS.GET_PRODUCT) {
45
+ return await lsHandlers.handleGetProduct(validatedArgs);
46
+ }
47
+ if (name === TOOLS.LIST_PRODUCTS) {
48
+ return await lsHandlers.handleListProducts(validatedArgs);
49
+ }
50
+ // Variants
51
+ if (name === TOOLS.GET_VARIANT) {
52
+ return await lsHandlers.handleGetVariant(validatedArgs);
53
+ }
54
+ if (name === TOOLS.LIST_VARIANTS) {
55
+ return await lsHandlers.handleListVariants(validatedArgs);
56
+ }
57
+ // Orders
58
+ if (name === TOOLS.GET_ORDER) {
59
+ return await lsHandlers.handleGetOrder(validatedArgs);
60
+ }
61
+ if (name === TOOLS.LIST_ORDERS) {
62
+ return await lsHandlers.handleListOrders(validatedArgs);
63
+ }
64
+ if (name === TOOLS.SEARCH_ORDERS) {
65
+ return await lsHandlers.handleSearchOrders(validatedArgs);
66
+ }
67
+ if (name === TOOLS.GET_ORDER_ITEM) {
68
+ return await lsHandlers.handleGetOrderItem(validatedArgs);
69
+ }
70
+ if (name === TOOLS.LIST_ORDER_ITEMS) {
71
+ return await lsHandlers.handleListOrderItems(validatedArgs);
72
+ }
73
+ if (name === TOOLS.GENERATE_ORDER_INVOICE) {
74
+ return await lsHandlers.handleGenerateOrderInvoice(validatedArgs);
75
+ }
76
+ if (name === TOOLS.ISSUE_ORDER_REFUND) {
77
+ return await lsHandlers.handleIssueOrderRefund(validatedArgs);
78
+ }
79
+ // Subscriptions
80
+ if (name === TOOLS.GET_SUBSCRIPTION) {
81
+ return await lsHandlers.handleGetSubscription(validatedArgs);
82
+ }
83
+ if (name === TOOLS.LIST_SUBSCRIPTIONS) {
84
+ return await lsHandlers.handleListSubscriptions(validatedArgs);
85
+ }
86
+ if (name === TOOLS.UPDATE_SUBSCRIPTION) {
87
+ return await lsHandlers.handleUpdateSubscription(validatedArgs);
88
+ }
89
+ if (name === TOOLS.CANCEL_SUBSCRIPTION) {
90
+ return await lsHandlers.handleCancelSubscription(validatedArgs);
91
+ }
92
+ // Subscription Items
93
+ if (name === TOOLS.GET_SUBSCRIPTION_ITEM) {
94
+ return await lsHandlers.handleGetSubscriptionItem(validatedArgs);
95
+ }
96
+ if (name === TOOLS.LIST_SUBSCRIPTION_ITEMS) {
97
+ return await lsHandlers.handleListSubscriptionItems(validatedArgs);
98
+ }
99
+ if (name === TOOLS.GET_SUBSCRIPTION_ITEM_USAGE) {
100
+ return await lsHandlers.handleGetSubscriptionItemUsage(validatedArgs);
101
+ }
102
+ // Subscription Invoices
103
+ if (name === TOOLS.GET_SUBSCRIPTION_INVOICE) {
104
+ return await lsHandlers.handleGetSubscriptionInvoice(validatedArgs);
105
+ }
106
+ if (name === TOOLS.LIST_SUBSCRIPTION_INVOICES) {
107
+ return await lsHandlers.handleListSubscriptionInvoices(validatedArgs);
108
+ }
109
+ if (name === TOOLS.GENERATE_SUBSCRIPTION_INVOICE) {
110
+ return await lsHandlers.handleGenerateSubscriptionInvoice(validatedArgs);
111
+ }
112
+ if (name === TOOLS.ISSUE_SUBSCRIPTION_INVOICE_REFUND) {
113
+ return await lsHandlers.handleIssueSubscriptionInvoiceRefund(validatedArgs);
114
+ }
115
+ // Discounts
116
+ if (name === TOOLS.GET_DISCOUNT) {
117
+ return await lsHandlers.handleGetDiscount(validatedArgs);
118
+ }
119
+ if (name === TOOLS.LIST_DISCOUNTS) {
120
+ return await lsHandlers.handleListDiscounts(validatedArgs);
121
+ }
122
+ if (name === TOOLS.CREATE_DISCOUNT) {
123
+ return await lsHandlers.handleCreateDiscount(validatedArgs);
124
+ }
125
+ if (name === TOOLS.DELETE_DISCOUNT) {
126
+ return await lsHandlers.handleDeleteDiscount(validatedArgs);
127
+ }
128
+ // License Keys
129
+ if (name === TOOLS.GET_LICENSE_KEY) {
130
+ return await lsHandlers.handleGetLicenseKey(validatedArgs);
131
+ }
132
+ if (name === TOOLS.LIST_LICENSE_KEYS) {
133
+ return await lsHandlers.handleListLicenseKeys(validatedArgs);
134
+ }
135
+ if (name === TOOLS.UPDATE_LICENSE_KEY) {
136
+ return await lsHandlers.handleUpdateLicenseKey(validatedArgs);
137
+ }
138
+ // Files
139
+ if (name === TOOLS.GET_FILE) {
140
+ return await lsHandlers.handleGetFile(validatedArgs);
141
+ }
142
+ if (name === TOOLS.LIST_FILES) {
143
+ return await lsHandlers.handleListFiles(validatedArgs);
144
+ }
145
+ // Usage Records
146
+ if (name === TOOLS.GET_USAGE_RECORD) {
147
+ return await lsHandlers.handleGetUsageRecord(validatedArgs);
148
+ }
149
+ if (name === TOOLS.LIST_USAGE_RECORDS) {
150
+ return await lsHandlers.handleListUsageRecords(validatedArgs);
151
+ }
152
+ if (name === TOOLS.CREATE_USAGE_RECORD) {
153
+ return await lsHandlers.handleCreateUsageRecord(validatedArgs);
154
+ }
155
+ // Checkouts
156
+ if (name === TOOLS.CREATE_CHECKOUT) {
157
+ return await lsHandlers.handleCreateCheckout(validatedArgs);
158
+ }
159
+ // Webhooks
160
+ if (name === TOOLS.GET_WEBHOOK) {
161
+ return await lsHandlers.handleGetWebhook(validatedArgs);
162
+ }
163
+ if (name === TOOLS.LIST_WEBHOOKS) {
164
+ return await lsHandlers.handleListWebhooks(validatedArgs);
165
+ }
166
+ if (name === TOOLS.CREATE_WEBHOOK) {
167
+ return await lsHandlers.handleCreateWebhook(validatedArgs);
168
+ }
169
+ if (name === TOOLS.UPDATE_WEBHOOK) {
170
+ return await lsHandlers.handleUpdateWebhook(validatedArgs);
171
+ }
172
+ if (name === TOOLS.DELETE_WEBHOOK) {
173
+ return await lsHandlers.handleDeleteWebhook(validatedArgs);
174
+ }
175
+ // Salesforce
176
+ if (name === TOOLS.SYNC_CUSTOMER_TO_CRM) {
177
+ return await sfHandlers.handleSyncCustomerToCRM(validatedArgs);
178
+ }
179
+ // VOS Tools
180
+ if (name === TOOLS.SEARCH_TRANSACTIONS_NATURAL) {
181
+ return await vosHandlers.handleSearchTransactionsNatural(validatedArgs);
182
+ }
183
+ if (name === TOOLS.ANALYZE_CHURN_RISK) {
184
+ return await vosHandlers.handleAnalyzeChurnRisk(validatedArgs);
185
+ }
186
+ if (name === TOOLS.CANONIZE_DECISION) {
187
+ return await vosHandlers.handleCanonizeDecision(validatedArgs);
188
+ }
189
+ // Analytics Tools
190
+ if (name === TOOLS.GET_FINANCIAL_METRICS) {
191
+ return await analyticsHandlers.handleGetFinancialMetrics(validatedArgs);
192
+ }
193
+ if (name === TOOLS.PREDICT_CHURN_RISK) {
194
+ return await analyticsHandlers.handlePredictChurnRisk(validatedArgs);
195
+ }
196
+ throw new Error(`Tool not found: ${name}`);
197
+ }
198
+ catch (error) {
199
+ return createErrorResponse(error);
200
+ }
201
+ }
202
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { Connection } from "jsforce";
2
+ export type SalesforceConnection = Connection;
3
+ export type SalesforceCredentials = {
4
+ type: "username_password";
5
+ username: string;
6
+ password: string;
7
+ securityToken: string;
8
+ } | {
9
+ type: "jwt";
10
+ clientId: string;
11
+ username: string;
12
+ privateKey: string;
13
+ loginUrl?: string;
14
+ };
15
+ export interface PaymentEvent {
16
+ timestamp: string;
17
+ type: string;
18
+ orderId?: number;
19
+ customerEmail?: string;
20
+ status?: string;
21
+ amount?: string;
22
+ message: string;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAC7B;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import pino from "pino";
2
+ export declare const logger: pino.Logger<never, boolean>;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAYxB,eAAO,MAAM,MAAM,6BAA2D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import pino from "pino";
2
+ const logLevel = process.env.LOG_LEVEL || (process.env.NODE_ENV === "production" ? "info" : "debug");
3
+ const logFormat = process.env.LOG_FORMAT || (process.env.NODE_ENV === "production" ? "json" : "pretty");
4
+ const baseLogger = pino({
5
+ level: logLevel,
6
+ }, process.stderr);
7
+ export const logger = baseLogger.child({ service: "lemonsqueezy-mcp-server" });
8
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACrG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAExG,MAAM,UAAU,GAAG,IAAI,CACrB;IACE,KAAK,EAAE,QAAQ;CAChB,EACD,OAAO,CAAC,MAAM,CACf,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare function createResponse(data: unknown): {
2
+ content: {
3
+ type: "text";
4
+ text: string;
5
+ }[];
6
+ };
7
+ export declare function createErrorResponse(error: unknown): {
8
+ content: {
9
+ type: "text";
10
+ text: string;
11
+ }[];
12
+ isError: boolean;
13
+ };
14
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;;;EAI3C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO;;;;;;EAUjD"}
@@ -0,0 +1,17 @@
1
+ export function createResponse(data) {
2
+ return {
3
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
4
+ };
5
+ }
6
+ export function createErrorResponse(error) {
7
+ return {
8
+ content: [
9
+ {
10
+ type: "text",
11
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
12
+ },
13
+ ],
14
+ isError: true,
15
+ };
16
+ }
17
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACzE;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface RetryConfig {
2
+ maxRetries: number;
3
+ initialDelayMs: number;
4
+ maxDelayMs: number;
5
+ backoffMultiplier: number;
6
+ }
7
+ export declare function retry<T>(fn: () => Promise<T>, retryConfig?: Partial<RetryConfig>, context?: {
8
+ operation: string;
9
+ [key: string]: unknown;
10
+ }): Promise<T>;
11
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAYD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAClC,OAAO,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACtD,OAAO,CAAC,CAAC,CAAC,CAsCZ"}
@@ -0,0 +1,36 @@
1
+ import { logger } from "./logger.js";
2
+ // Get retry config from environment with sensible defaults
3
+ function getRetryConfig() {
4
+ return {
5
+ maxRetries: parseInt(process.env.RETRY_MAX_ATTEMPTS || "3", 10),
6
+ initialDelayMs: parseInt(process.env.RETRY_INITIAL_DELAY_MS || "1000", 10),
7
+ maxDelayMs: parseInt(process.env.RETRY_MAX_DELAY_MS || "30000", 10),
8
+ backoffMultiplier: parseFloat(process.env.RETRY_BACKOFF_MULTIPLIER || "2"),
9
+ };
10
+ }
11
+ export async function retry(fn, retryConfig, context) {
12
+ const config = { ...getRetryConfig(), ...retryConfig };
13
+ let lastError;
14
+ const operation = context?.operation || "operation";
15
+ for (let attempt = 0; attempt <= config.maxRetries; attempt++) {
16
+ try {
17
+ return await fn();
18
+ }
19
+ catch (error) {
20
+ lastError = error;
21
+ // Don't retry on last attempt
22
+ if (attempt === config.maxRetries) {
23
+ logger.warn({ attempt: attempt + 1, maxRetries: config.maxRetries, error, ...context }, `Retry failed after ${attempt + 1} attempts: ${operation}`);
24
+ throw error;
25
+ }
26
+ // Calculate delay with exponential backoff
27
+ const delay = Math.min(config.initialDelayMs * Math.pow(config.backoffMultiplier, attempt), config.maxDelayMs);
28
+ logger.debug({ attempt: attempt + 1, delay, error, ...context }, `Retrying ${operation} (attempt ${attempt + 1}/${config.maxRetries})`);
29
+ // Wait before retrying
30
+ await new Promise((resolve) => setTimeout(resolve, delay));
31
+ }
32
+ }
33
+ // This should never be reached, but TypeScript needs it
34
+ throw lastError;
35
+ }
36
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAUrC,2DAA2D;AAC3D,SAAS,cAAc;IACrB,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,GAAG,EAAE,EAAE,CAAC;QAC/D,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,EAAE,EAAE,CAAC;QAC1E,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,EAAE,EAAE,CAAC;QACnE,iBAAiB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,WAAkC,EAClC,OAAuD;IAEvD,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;IACvD,IAAI,SAA0B,CAAC;IAC/B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC;IAEpD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAElB,8BAA8B;YAC9B,IAAI,OAAO,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CACT,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,EAC1E,sBAAsB,OAAO,GAAG,CAAC,cAAc,SAAS,EAAE,CAC3D,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;YAED,2CAA2C;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,EACnE,MAAM,CAAC,UAAU,CAClB,CAAC;YAEF,MAAM,CAAC,KAAK,CACV,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,EAClD,YAAY,SAAS,aAAa,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CACtE,CAAC;YAEF,uBAAuB;YACvB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,MAAM,SAAS,CAAC;AAClB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * SecretsProvider interface for pluggable secret management
3
+ * Allows users to use AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager, etc.
4
+ */
5
+ export interface SecretsProvider {
6
+ getSecret(name: string): Promise<string>;
7
+ }
8
+ /**
9
+ * Environment variable secrets provider (default)
10
+ * Reads secrets directly from environment variables
11
+ */
12
+ export declare class EnvSecretsProvider implements SecretsProvider {
13
+ getSecret(name: string): Promise<string>;
14
+ }
15
+ /**
16
+ * AWS Secrets Manager provider
17
+ * Retrieves secrets from AWS Secrets Manager
18
+ */
19
+ export declare class AwsSecretsProvider implements SecretsProvider {
20
+ private client;
21
+ private region;
22
+ constructor(region: string);
23
+ getSecret(name: string): Promise<string>;
24
+ }
25
+ /**
26
+ * Get the configured secrets provider based on environment variables
27
+ * Defaults to EnvSecretsProvider if no provider is specified
28
+ */
29
+ export declare function getSecretsProvider(): SecretsProvider;
30
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/utils/secrets/provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IAClD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAO/C;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,MAAM,CAAiE;IAC/E,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAMpB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAW/C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAWpD"}