ggcheckout-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 (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +633 -0
  3. package/dist/api/client.d.ts +35 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +270 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +52 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/tools/checkouts.d.ts +4 -0
  12. package/dist/tools/checkouts.d.ts.map +1 -0
  13. package/dist/tools/checkouts.js +180 -0
  14. package/dist/tools/checkouts.js.map +1 -0
  15. package/dist/tools/payments.d.ts +4 -0
  16. package/dist/tools/payments.d.ts.map +1 -0
  17. package/dist/tools/payments.js +126 -0
  18. package/dist/tools/payments.js.map +1 -0
  19. package/dist/tools/products.d.ts +4 -0
  20. package/dist/tools/products.d.ts.map +1 -0
  21. package/dist/tools/products.js +154 -0
  22. package/dist/tools/products.js.map +1 -0
  23. package/dist/tools/types.d.ts +148 -0
  24. package/dist/tools/types.d.ts.map +1 -0
  25. package/dist/tools/types.js +2 -0
  26. package/dist/tools/types.js.map +1 -0
  27. package/dist/tools/webhooks.d.ts +4 -0
  28. package/dist/tools/webhooks.d.ts.map +1 -0
  29. package/dist/tools/webhooks.js +153 -0
  30. package/dist/tools/webhooks.js.map +1 -0
  31. package/dist/utils/logger.d.ts +4 -0
  32. package/dist/utils/logger.d.ts.map +1 -0
  33. package/dist/utils/logger.js +13 -0
  34. package/dist/utils/logger.js.map +1 -0
  35. package/dist/utils/validation.d.ts +11 -0
  36. package/dist/utils/validation.d.ts.map +1 -0
  37. package/dist/utils/validation.js +54 -0
  38. package/dist/utils/validation.js.map +1 -0
  39. package/package.json +57 -0
@@ -0,0 +1,126 @@
1
+ import { z } from 'zod';
2
+ import * as logger from '../utils/logger.js';
3
+ export function registerPaymentTools(server, apiClient) {
4
+ // Get authenticated user's business ID
5
+ server.tool('get_my_business_id', 'Get the business ID of the authenticated user (from API key)', async () => {
6
+ const start = Date.now();
7
+ try {
8
+ logger.info('TOOL', 'get_my_business_id: Starting');
9
+ const businessId = await apiClient.getMyBusinessId();
10
+ const duration = Date.now() - start;
11
+ logger.info('TOOL', `get_my_business_id: Success (${duration}ms)`, { businessId });
12
+ const output = { businessId };
13
+ return {
14
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
15
+ structuredContent: output
16
+ };
17
+ }
18
+ catch (error) {
19
+ const duration = Date.now() - start;
20
+ logger.error('TOOL', `get_my_business_id: Failed (${duration}ms)`, error.message);
21
+ return {
22
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
23
+ isError: true
24
+ };
25
+ }
26
+ });
27
+ // List all payments for a business
28
+ server.registerTool('list_payments', {
29
+ description: 'List all payments for a specific business',
30
+ inputSchema: {
31
+ businessId: z.string().describe('Business ID to list payments for')
32
+ }
33
+ }, async (args) => {
34
+ const { businessId } = args;
35
+ const start = Date.now();
36
+ try {
37
+ logger.info('TOOL', `list_payments: Starting for business ${businessId}`);
38
+ const payments = await apiClient.listPayments(businessId);
39
+ const duration = Date.now() - start;
40
+ logger.info('TOOL', `list_payments: Success (${duration}ms)`, { count: payments.length });
41
+ const output = { payments };
42
+ return {
43
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
44
+ structuredContent: output
45
+ };
46
+ }
47
+ catch (error) {
48
+ const duration = Date.now() - start;
49
+ logger.error('TOOL', `list_payments: Failed (${duration}ms)`, error.message);
50
+ return {
51
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
52
+ isError: true
53
+ };
54
+ }
55
+ });
56
+ // Get paginated payments with filters
57
+ server.registerTool('get_payments_paginated', {
58
+ description: 'Get paginated payments for a business with optional filters. Requires Firestore indexes for status filtering.',
59
+ inputSchema: {
60
+ businessId: z.string().describe('Business ID'),
61
+ pageSize: z.number().optional().describe('Number of items per page (default: 10)'),
62
+ dateFrom: z.string().optional().describe('Filter payments from this date (ISO format)'),
63
+ dateTo: z.string().optional().describe('Filter payments until this date (ISO format)'),
64
+ lastCreatedAt: z.string().optional().describe('Last createdAt value for pagination cursor'),
65
+ status: z.string().optional().describe('Filter by payment status (e.g., "pending", "paid", "error", "all"). Requires Firestore indexes.'),
66
+ searchTerm: z.string().optional().describe('Search by payment ID, email, phone, or title offer'),
67
+ countOnly: z.boolean().optional().describe('Return only the total count, not the data')
68
+ }
69
+ }, async (args) => {
70
+ const { businessId, ...options } = args;
71
+ const start = Date.now();
72
+ try {
73
+ logger.info('TOOL', `get_payments_paginated: Starting for business ${businessId}`, { options });
74
+ const result = await apiClient.getPaymentsPaginated(businessId, options);
75
+ const duration = Date.now() - start;
76
+ logger.info('TOOL', `get_payments_paginated: Success (${duration}ms)`);
77
+ return {
78
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
79
+ structuredContent: result
80
+ };
81
+ }
82
+ catch (error) {
83
+ const duration = Date.now() - start;
84
+ logger.error('TOOL', `get_payments_paginated: Failed (${duration}ms)`, error.message);
85
+ let errorMessage = error.message;
86
+ if (error.message.includes('index') || error.message.includes('FAILED_PRECONDITION')) {
87
+ errorMessage = `${error.message}\n\nThis query requires Firestore composite indexes. Please run:\nnpm run setup:indexes\n\nOr follow: docs/setup-firestore-indexes.md`;
88
+ }
89
+ return {
90
+ content: [{ type: 'text', text: `Error: ${errorMessage}` }],
91
+ isError: true
92
+ };
93
+ }
94
+ });
95
+ // Get specific payment by ID
96
+ server.registerTool('get_payment', {
97
+ description: 'Get details of a specific payment by ID',
98
+ inputSchema: {
99
+ businessId: z.string().describe('Business ID'),
100
+ paymentId: z.string().describe('Payment ID (transaction ID)')
101
+ }
102
+ }, async (args) => {
103
+ const { businessId, paymentId } = args;
104
+ const start = Date.now();
105
+ try {
106
+ logger.info('TOOL', `get_payment: Starting for ${paymentId} in business ${businessId}`);
107
+ const payment = await apiClient.getPayment(businessId, paymentId);
108
+ const duration = Date.now() - start;
109
+ logger.info('TOOL', `get_payment: Success (${duration}ms)`);
110
+ const output = { payment };
111
+ return {
112
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
113
+ structuredContent: output
114
+ };
115
+ }
116
+ catch (error) {
117
+ const duration = Date.now() - start;
118
+ logger.error('TOOL', `get_payment: Failed (${duration}ms)`, error.message);
119
+ return {
120
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
121
+ isError: true
122
+ };
123
+ }
124
+ });
125
+ }
126
+ //# sourceMappingURL=payments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/tools/payments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { ApiClient } from '../api/client.js';
3
+ export declare function registerProductTools(server: McpServer, apiClient: ApiClient): void;
4
+ //# sourceMappingURL=products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA6K3E"}
@@ -0,0 +1,154 @@
1
+ import { z } from 'zod';
2
+ import { validateCreateInput, validateUpdateInput } from '../utils/validation.js';
3
+ import * as logger from '../utils/logger.js';
4
+ export function registerProductTools(server, apiClient) {
5
+ // List products (no parameters)
6
+ server.tool('list_products', 'List all products/deliveries for the authenticated user', async () => {
7
+ const start = Date.now();
8
+ try {
9
+ logger.info('TOOL', 'list_products: Starting');
10
+ const products = await apiClient.listProducts();
11
+ const duration = Date.now() - start;
12
+ logger.info('TOOL', `list_products: Success (${duration}ms)`, { count: products.length });
13
+ const output = { products };
14
+ return {
15
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
16
+ structuredContent: output
17
+ };
18
+ }
19
+ catch (error) {
20
+ const duration = Date.now() - start;
21
+ logger.error('TOOL', `list_products: Failed (${duration}ms)`, error.message);
22
+ return {
23
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
24
+ isError: true
25
+ };
26
+ }
27
+ });
28
+ server.registerTool('get_product', {
29
+ description: 'Get details of a specific product by ID',
30
+ inputSchema: {
31
+ productId: z.string().describe('Product ID (uid)')
32
+ }
33
+ }, async (args) => {
34
+ const { productId } = args;
35
+ const start = Date.now();
36
+ try {
37
+ logger.info('TOOL', `get_product: Starting for ${productId}`);
38
+ const product = await apiClient.getProduct(productId);
39
+ const duration = Date.now() - start;
40
+ logger.info('TOOL', `get_product: Success (${duration}ms)`);
41
+ const output = { product };
42
+ return {
43
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
44
+ structuredContent: output
45
+ };
46
+ }
47
+ catch (error) {
48
+ const duration = Date.now() - start;
49
+ logger.error('TOOL', `get_product: Failed (${duration}ms)`, error.message);
50
+ return {
51
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
52
+ isError: true
53
+ };
54
+ }
55
+ });
56
+ server.registerTool('create_product', {
57
+ description: 'Create a new product/delivery. Price should be in cents (e.g., 1990 for R$19.90) or Brazilian format string (e.g., "19,90")',
58
+ inputSchema: {
59
+ title: z.string().describe('Product title'),
60
+ url: z.string().describe('Product URL'),
61
+ imageUrl: z.string().optional().describe('Product image URL (optional)'),
62
+ description: z.string().describe('Product description'),
63
+ discount: z.string().describe('Discount information (e.g., "30%")'),
64
+ price: z.union([z.number(), z.string()]).describe('Price in cents (number) or Brazilian format (string)')
65
+ }
66
+ }, async (args) => {
67
+ const input = args;
68
+ const start = Date.now();
69
+ try {
70
+ logger.info('TOOL', 'create_product: Starting', { title: input.title });
71
+ const validated = validateCreateInput(input);
72
+ const product = await apiClient.createProduct(validated);
73
+ const duration = Date.now() - start;
74
+ logger.info('TOOL', `create_product: Success (${duration}ms)`, { uid: product.uid });
75
+ const output = { success: true, product };
76
+ return {
77
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
78
+ structuredContent: output
79
+ };
80
+ }
81
+ catch (error) {
82
+ const duration = Date.now() - start;
83
+ logger.error('TOOL', `create_product: Failed (${duration}ms)`, error.message);
84
+ return {
85
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
86
+ isError: true
87
+ };
88
+ }
89
+ });
90
+ server.registerTool('update_product', {
91
+ description: 'Update an existing product/delivery. Only provide fields you want to update.',
92
+ inputSchema: {
93
+ productId: z.string().describe('Product ID (uid)'),
94
+ title: z.string().optional().describe('Product title'),
95
+ url: z.string().optional().describe('Product URL'),
96
+ imageUrl: z.string().optional().describe('Product image URL'),
97
+ description: z.string().optional().describe('Product description'),
98
+ discount: z.string().optional().describe('Discount information'),
99
+ price: z.union([z.number(), z.string()]).optional().describe('Price in cents (number) or Brazilian format (string)')
100
+ }
101
+ }, async (args) => {
102
+ const { productId, ...input } = args;
103
+ const start = Date.now();
104
+ try {
105
+ logger.info('TOOL', `update_product: Starting for ${productId}`);
106
+ const validated = validateUpdateInput(input);
107
+ const product = await apiClient.updateProduct(productId, validated);
108
+ const duration = Date.now() - start;
109
+ logger.info('TOOL', `update_product: Success (${duration}ms)`);
110
+ const output = { success: true, product };
111
+ return {
112
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
113
+ structuredContent: output
114
+ };
115
+ }
116
+ catch (error) {
117
+ const duration = Date.now() - start;
118
+ logger.error('TOOL', `update_product: Failed (${duration}ms)`, error.message);
119
+ return {
120
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
121
+ isError: true
122
+ };
123
+ }
124
+ });
125
+ server.registerTool('delete_product', {
126
+ description: 'Delete a product/delivery by ID',
127
+ inputSchema: {
128
+ productId: z.string().describe('Product ID (uid)')
129
+ }
130
+ }, async (args) => {
131
+ const { productId } = args;
132
+ const start = Date.now();
133
+ try {
134
+ logger.info('TOOL', `delete_product: Starting for ${productId}`);
135
+ await apiClient.deleteProduct(productId);
136
+ const duration = Date.now() - start;
137
+ logger.info('TOOL', `delete_product: Success (${duration}ms)`);
138
+ const output = { success: true, message: `Product ${productId} deleted successfully` };
139
+ return {
140
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
141
+ structuredContent: output
142
+ };
143
+ }
144
+ catch (error) {
145
+ const duration = Date.now() - start;
146
+ logger.error('TOOL', `delete_product: Failed (${duration}ms)`, error.message);
147
+ return {
148
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
149
+ isError: true
150
+ };
151
+ }
152
+ });
153
+ }
154
+ //# sourceMappingURL=products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ export interface ProductDelivery {
2
+ uid?: string;
3
+ title: string;
4
+ url: string;
5
+ imageUrl?: string;
6
+ description: string;
7
+ discount: string;
8
+ price: number;
9
+ createdAt?: string;
10
+ updatedAt?: string;
11
+ uuidOwner?: string;
12
+ }
13
+ export interface CreateProductInput {
14
+ title: string;
15
+ url: string;
16
+ imageUrl?: string;
17
+ description: string;
18
+ discount: string;
19
+ price: number | string;
20
+ }
21
+ export interface UpdateProductInput {
22
+ title?: string;
23
+ url?: string;
24
+ imageUrl?: string;
25
+ description?: string;
26
+ discount?: string;
27
+ price?: number | string;
28
+ }
29
+ export interface Payment {
30
+ [key: string]: unknown;
31
+ id: string;
32
+ businessId: string;
33
+ name?: string | null;
34
+ email: string;
35
+ phone?: string | null;
36
+ cpf?: string | null;
37
+ value: number;
38
+ productId: string;
39
+ titleOffer: string;
40
+ status: string;
41
+ createdAt: string;
42
+ utmify?: any;
43
+ emailProvider?: string | null;
44
+ orderBumps?: any[];
45
+ delivery?: any;
46
+ trackProps?: any;
47
+ discountsApplied?: any[];
48
+ finalValueInCents?: number;
49
+ couponsCodesApplied?: string[];
50
+ }
51
+ export interface PaymentsListResponse {
52
+ [key: string]: unknown;
53
+ payments: Payment[];
54
+ }
55
+ export interface PaymentsPaginatedResponse {
56
+ [key: string]: unknown;
57
+ payments: Payment[];
58
+ total: number;
59
+ lastCreatedAt: string | null;
60
+ }
61
+ export interface Checkout {
62
+ [key: string]: unknown;
63
+ uid?: string;
64
+ id: string;
65
+ title: string;
66
+ uuidOwnwer: string;
67
+ sellerName?: string | null;
68
+ socialCard?: any;
69
+ fields?: any[];
70
+ bannerUrl?: string;
71
+ url?: string;
72
+ published?: boolean;
73
+ orderBumps?: any[];
74
+ checkout?: any;
75
+ metricToken?: string | null;
76
+ emailProviderToken?: string;
77
+ paymentMethods?: any;
78
+ price: number;
79
+ image?: string;
80
+ createBy?: string;
81
+ createdAt?: string;
82
+ updatedAt?: string;
83
+ }
84
+ export interface CreateCheckoutInput {
85
+ title: string;
86
+ id: string;
87
+ uuidOwnwer?: string;
88
+ sellerName?: string | null;
89
+ socialCard?: any;
90
+ fields?: any[];
91
+ bannerUrl?: string;
92
+ url?: string;
93
+ published?: boolean;
94
+ orderBumps?: any[];
95
+ checkout: any;
96
+ metricToken?: string | null;
97
+ emailProviderToken?: string;
98
+ paymentMethods: any;
99
+ price: number;
100
+ image?: string;
101
+ }
102
+ export interface UpdateCheckoutInput {
103
+ title?: string;
104
+ sellerName?: string | null;
105
+ socialCard?: any;
106
+ fields?: any[];
107
+ bannerUrl?: string;
108
+ url?: string;
109
+ published?: boolean;
110
+ orderBumps?: any[];
111
+ checkout?: any;
112
+ metricToken?: string | null;
113
+ emailProviderToken?: string;
114
+ paymentMethods?: any;
115
+ price?: number;
116
+ image?: string;
117
+ }
118
+ export interface Webhook {
119
+ [key: string]: unknown;
120
+ id?: string;
121
+ businessId: string;
122
+ name: string;
123
+ url: string;
124
+ secret?: string;
125
+ productsId?: string[];
126
+ events: string[];
127
+ createdAt?: Date | string;
128
+ updatedAt?: Date | string;
129
+ }
130
+ export interface CreateWebhookInput {
131
+ businessId?: string;
132
+ name: string;
133
+ url: string;
134
+ secret?: string;
135
+ productsId?: string[];
136
+ events: string[];
137
+ }
138
+ export interface UpdateWebhookInput {
139
+ name?: string;
140
+ url?: string;
141
+ secret?: string;
142
+ productsId?: string[];
143
+ events?: string[];
144
+ }
145
+ export interface WebhooksListResponse {
146
+ webhooks: Webhook[];
147
+ }
148
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { ApiClient } from '../api/client.js';
3
+ export declare function registerWebhookTools(server: McpServer, apiClient: ApiClient): void;
4
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA6K3E"}
@@ -0,0 +1,153 @@
1
+ import { z } from 'zod';
2
+ import * as logger from '../utils/logger.js';
3
+ export function registerWebhookTools(server, apiClient) {
4
+ // List all webhooks
5
+ server.tool('list_webhooks', 'List all webhooks for the authenticated user', async () => {
6
+ const start = Date.now();
7
+ try {
8
+ logger.info('TOOL', 'list_webhooks: Starting');
9
+ const webhooks = await apiClient.listWebhooks();
10
+ const duration = Date.now() - start;
11
+ logger.info('TOOL', `list_webhooks: Success (${duration}ms)`, { count: webhooks.length });
12
+ const output = { webhooks };
13
+ return {
14
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
15
+ structuredContent: output
16
+ };
17
+ }
18
+ catch (error) {
19
+ const duration = Date.now() - start;
20
+ logger.error('TOOL', `list_webhooks: Failed (${duration}ms)`, error.message);
21
+ return {
22
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
23
+ isError: true
24
+ };
25
+ }
26
+ });
27
+ // Get specific webhook
28
+ server.registerTool('get_webhook', {
29
+ description: 'Get details of a specific webhook by ID',
30
+ inputSchema: {
31
+ webhookId: z.string().describe('Webhook ID')
32
+ }
33
+ }, async (args) => {
34
+ const { webhookId } = args;
35
+ const start = Date.now();
36
+ try {
37
+ logger.info('TOOL', `get_webhook: Starting for ${webhookId}`);
38
+ const webhook = await apiClient.getWebhook(webhookId);
39
+ const duration = Date.now() - start;
40
+ logger.info('TOOL', `get_webhook: Success (${duration}ms)`);
41
+ const output = { webhook };
42
+ return {
43
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
44
+ structuredContent: output
45
+ };
46
+ }
47
+ catch (error) {
48
+ const duration = Date.now() - start;
49
+ logger.error('TOOL', `get_webhook: Failed (${duration}ms)`, error.message);
50
+ return {
51
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
52
+ isError: true
53
+ };
54
+ }
55
+ });
56
+ // Create webhook
57
+ server.registerTool('create_webhook', {
58
+ description: 'Create a new webhook for payment notifications',
59
+ inputSchema: {
60
+ name: z.string().describe('Webhook name/description'),
61
+ url: z.string().url().describe('Webhook URL endpoint to receive notifications'),
62
+ events: z.array(z.string()).describe('Events to trigger this webhook (e.g., ["payment.created", "payment.paid", "payment.refunded"])'),
63
+ secret: z.string().optional().describe('Secret key for webhook signature verification (optional)'),
64
+ productsId: z.array(z.string()).optional().describe('Product IDs to filter notifications (optional - leave empty for all products)')
65
+ }
66
+ }, async (args) => {
67
+ const input = args;
68
+ const start = Date.now();
69
+ try {
70
+ logger.info('TOOL', 'create_webhook: Starting', { name: input.name });
71
+ const webhook = await apiClient.createWebhook(input);
72
+ const duration = Date.now() - start;
73
+ logger.info('TOOL', `create_webhook: Success (${duration}ms)`, { id: webhook.id });
74
+ const output = { success: true, webhook };
75
+ return {
76
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
77
+ structuredContent: output
78
+ };
79
+ }
80
+ catch (error) {
81
+ const duration = Date.now() - start;
82
+ logger.error('TOOL', `create_webhook: Failed (${duration}ms)`, error.message);
83
+ return {
84
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
85
+ isError: true
86
+ };
87
+ }
88
+ });
89
+ // Update webhook
90
+ server.registerTool('update_webhook', {
91
+ description: 'Update an existing webhook. Only provide fields you want to update.',
92
+ inputSchema: {
93
+ webhookId: z.string().describe('Webhook ID'),
94
+ name: z.string().optional().describe('New webhook name/description'),
95
+ url: z.string().url().optional().describe('New webhook URL'),
96
+ events: z.array(z.string()).optional().describe('New events list'),
97
+ secret: z.string().optional().describe('New secret key'),
98
+ productsId: z.array(z.string()).optional().describe('New product IDs filter')
99
+ }
100
+ }, async (args) => {
101
+ const { webhookId, ...input } = args;
102
+ const start = Date.now();
103
+ try {
104
+ logger.info('TOOL', `update_webhook: Starting for ${webhookId}`);
105
+ const webhook = await apiClient.updateWebhook(webhookId, input);
106
+ const duration = Date.now() - start;
107
+ logger.info('TOOL', `update_webhook: Success (${duration}ms)`);
108
+ const output = { success: true, webhook };
109
+ return {
110
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
111
+ structuredContent: output
112
+ };
113
+ }
114
+ catch (error) {
115
+ const duration = Date.now() - start;
116
+ logger.error('TOOL', `update_webhook: Failed (${duration}ms)`, error.message);
117
+ return {
118
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
119
+ isError: true
120
+ };
121
+ }
122
+ });
123
+ // Delete webhook
124
+ server.registerTool('delete_webhook', {
125
+ description: 'Delete a webhook by ID',
126
+ inputSchema: {
127
+ webhookId: z.string().describe('Webhook ID')
128
+ }
129
+ }, async (args) => {
130
+ const { webhookId } = args;
131
+ const start = Date.now();
132
+ try {
133
+ logger.info('TOOL', `delete_webhook: Starting for ${webhookId}`);
134
+ await apiClient.deleteWebhook(webhookId);
135
+ const duration = Date.now() - start;
136
+ logger.info('TOOL', `delete_webhook: Success (${duration}ms)`);
137
+ const output = { success: true, message: `Webhook ${webhookId} deleted successfully` };
138
+ return {
139
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
140
+ structuredContent: output
141
+ };
142
+ }
143
+ catch (error) {
144
+ const duration = Date.now() - start;
145
+ logger.error('TOOL', `delete_webhook: Failed (${duration}ms)`, error.message);
146
+ return {
147
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
148
+ isError: true
149
+ };
150
+ }
151
+ });
152
+ }
153
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}