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,270 @@
1
+ import axios from 'axios';
2
+ import * as logger from '../utils/logger.js';
3
+ export class ApiClient {
4
+ client;
5
+ constructor(apiUrl, apiKey) {
6
+ this.client = axios.create({
7
+ baseURL: apiUrl,
8
+ timeout: 15000,
9
+ headers: {
10
+ 'Content-Type': 'application/json',
11
+ },
12
+ });
13
+ this.client.interceptors.request.use((config) => {
14
+ config.headers.Authorization = `Bearer ${apiKey}`;
15
+ return config;
16
+ });
17
+ this.client.interceptors.response.use((response) => response, (error) => {
18
+ const status = error.response?.status;
19
+ const message = error.response?.data?.error || error.message;
20
+ logger.error('HTTP', `Request failed: ${status} - ${message}`);
21
+ throw new Error(`API Error (${status}): ${message}`);
22
+ });
23
+ }
24
+ async listProducts() {
25
+ try {
26
+ logger.info('HTTP', 'Listing products');
27
+ const response = await this.client.get('/api/product-delivery');
28
+ return response.data;
29
+ }
30
+ catch (error) {
31
+ throw error;
32
+ }
33
+ }
34
+ async getProduct(id) {
35
+ try {
36
+ logger.info('HTTP', `Getting product: ${id}`);
37
+ const response = await this.client.get(`/api/product-delivery/${id}`);
38
+ return response.data;
39
+ }
40
+ catch (error) {
41
+ throw error;
42
+ }
43
+ }
44
+ async createProduct(payload) {
45
+ try {
46
+ logger.info('HTTP', 'Creating product', { title: payload.title });
47
+ const response = await this.client.post('/api/product-delivery', payload);
48
+ return { ...payload, uid: response.data.documentId };
49
+ }
50
+ catch (error) {
51
+ throw error;
52
+ }
53
+ }
54
+ async updateProduct(id, payload) {
55
+ try {
56
+ logger.info('HTTP', `Updating product: ${id}`);
57
+ const response = await this.client.patch(`/api/product-delivery/${id}`, {
58
+ ...payload,
59
+ id,
60
+ });
61
+ return { ...payload, uid: id };
62
+ }
63
+ catch (error) {
64
+ throw error;
65
+ }
66
+ }
67
+ async deleteProduct(id) {
68
+ try {
69
+ logger.info('HTTP', `Deleting product: ${id}`);
70
+ await this.client.delete(`/api/product-delivery/${id}`);
71
+ }
72
+ catch (error) {
73
+ throw error;
74
+ }
75
+ }
76
+ async listPayments(businessId) {
77
+ try {
78
+ logger.info('HTTP', `Listing payments for business: ${businessId}`);
79
+ const response = await this.client.get(`/api/get-clients/business/${businessId}/payments`);
80
+ return response.data.payments;
81
+ }
82
+ catch (error) {
83
+ throw error;
84
+ }
85
+ }
86
+ async getPaymentsPaginated(businessId, options) {
87
+ try {
88
+ const params = new URLSearchParams();
89
+ if (options?.pageSize)
90
+ params.append('pageSize', options.pageSize.toString());
91
+ if (options?.dateFrom)
92
+ params.append('dateFrom', options.dateFrom);
93
+ if (options?.dateTo)
94
+ params.append('dateTo', options.dateTo);
95
+ if (options?.lastCreatedAt)
96
+ params.append('lastCreatedAt', options.lastCreatedAt);
97
+ if (options?.status && options.status !== 'all') {
98
+ params.append('status', options.status);
99
+ }
100
+ if (options?.searchTerm)
101
+ params.append('searchTerm', options.searchTerm);
102
+ if (options?.countOnly)
103
+ params.append('countOnly', 'true');
104
+ const queryString = params.toString();
105
+ const url = `/api/get-clients/business/${businessId}/payments/paginated${queryString ? `?${queryString}` : ''}`;
106
+ logger.info('HTTP', `Getting paginated payments for business: ${businessId}`, { options });
107
+ const response = await this.client.get(url);
108
+ return response.data;
109
+ }
110
+ catch (error) {
111
+ throw error;
112
+ }
113
+ }
114
+ async getPayment(businessId, paymentId) {
115
+ try {
116
+ logger.info('HTTP', `Getting payment: ${paymentId} for business: ${businessId}`);
117
+ const response = await this.client.get(`/api/get-clients/business/${businessId}/payments/paginated?pageSize=1000`);
118
+ if (!response.data.payments || response.data.payments.length === 0) {
119
+ throw new Error('No payments found for this business');
120
+ }
121
+ const payment = response.data.payments.find(p => p.id === paymentId);
122
+ if (!payment) {
123
+ throw new Error(`Payment ${paymentId} not found`);
124
+ }
125
+ return payment;
126
+ }
127
+ catch (error) {
128
+ throw error;
129
+ }
130
+ }
131
+ async getMyBusinessId() {
132
+ try {
133
+ logger.info('HTTP', 'Getting authenticated user business ID');
134
+ const response = await this.client.get('/api/me');
135
+ return response.data.businessId;
136
+ }
137
+ catch (error) {
138
+ throw error;
139
+ }
140
+ }
141
+ async listCheckouts(uuidOwnwer) {
142
+ try {
143
+ logger.info('HTTP', `Listing checkouts for owner: ${uuidOwnwer}`);
144
+ const response = await this.client.get(`/api/checkouts?uuidOwnwer=${uuidOwnwer}`);
145
+ return response.data;
146
+ }
147
+ catch (error) {
148
+ throw error;
149
+ }
150
+ }
151
+ async getCheckout(id) {
152
+ try {
153
+ logger.info('HTTP', `Getting checkout: ${id}`);
154
+ const response = await this.client.get(`/api/checkouts/${id}`);
155
+ return response.data;
156
+ }
157
+ catch (error) {
158
+ throw error;
159
+ }
160
+ }
161
+ async createCheckout(payload) {
162
+ try {
163
+ logger.info('HTTP', 'Creating checkout', { title: payload.title });
164
+ const response = await this.client.post('/api/checkouts', payload);
165
+ // Backend now returns { success: true, message: string, checkout: {...} }
166
+ return response.data.checkout;
167
+ }
168
+ catch (error) {
169
+ throw error;
170
+ }
171
+ }
172
+ async updateCheckout(id, payload) {
173
+ try {
174
+ logger.info('HTTP', `Updating checkout: ${id}`);
175
+ // First, get current checkout to merge with updates
176
+ const currentCheckout = await this.getCheckout(id);
177
+ // Backend requires all mandatory fields even for updates
178
+ const fullPayload = {
179
+ title: currentCheckout.title,
180
+ uuidOwnwer: currentCheckout.uuidOwnwer,
181
+ id: currentCheckout.id,
182
+ price: currentCheckout.price,
183
+ paymentMethods: currentCheckout.paymentMethods,
184
+ checkout: currentCheckout.checkout,
185
+ orderBumps: currentCheckout.orderBumps || [],
186
+ published: currentCheckout.published ?? true,
187
+ createBy: currentCheckout.createBy || 'system',
188
+ ...payload, // Override with user updates
189
+ };
190
+ const response = await this.client.patch(`/api/checkouts/${id}`, fullPayload);
191
+ return response.data.productData || { ...fullPayload, uid: id };
192
+ }
193
+ catch (error) {
194
+ throw error;
195
+ }
196
+ }
197
+ async deleteCheckout(id) {
198
+ try {
199
+ logger.info('HTTP', `Deleting checkout: ${id}`);
200
+ // Get checkout first to get uuidOwnwer
201
+ const checkout = await this.getCheckout(id);
202
+ // Backend DELETE requires uuidOwnwer in body
203
+ await this.client.delete(`/api/checkouts/${id}`, {
204
+ data: { uuidOwnwer: checkout.uuidOwnwer }
205
+ });
206
+ }
207
+ catch (error) {
208
+ throw error;
209
+ }
210
+ }
211
+ async listWebhooks() {
212
+ try {
213
+ logger.info('HTTP', 'Listing webhooks');
214
+ const response = await this.client.get('/api/clients-webhook');
215
+ return response.data.webhooks;
216
+ }
217
+ catch (error) {
218
+ throw error;
219
+ }
220
+ }
221
+ async getWebhook(id) {
222
+ try {
223
+ logger.info('HTTP', `Getting webhook: ${id}`);
224
+ // Backend doesn't have a GET by ID endpoint, so we list and filter
225
+ const webhooks = await this.listWebhooks();
226
+ const webhook = webhooks.find(w => w.id === id);
227
+ if (!webhook) {
228
+ throw new Error(`Webhook ${id} not found`);
229
+ }
230
+ return webhook;
231
+ }
232
+ catch (error) {
233
+ throw error;
234
+ }
235
+ }
236
+ async createWebhook(payload) {
237
+ try {
238
+ logger.info('HTTP', 'Creating webhook', { name: payload.name });
239
+ // Add businessId if not provided
240
+ if (!payload.businessId) {
241
+ payload.businessId = await this.getMyBusinessId();
242
+ }
243
+ const response = await this.client.post('/api/clients-webhook', payload);
244
+ return response.data;
245
+ }
246
+ catch (error) {
247
+ throw error;
248
+ }
249
+ }
250
+ async updateWebhook(id, payload) {
251
+ try {
252
+ logger.info('HTTP', `Updating webhook: ${id}`);
253
+ const response = await this.client.put(`/api/clients-webhook?id=${id}`, payload);
254
+ return response.data;
255
+ }
256
+ catch (error) {
257
+ throw error;
258
+ }
259
+ }
260
+ async deleteWebhook(id) {
261
+ try {
262
+ logger.info('HTTP', `Deleting webhook: ${id}`);
263
+ await this.client.delete(`/api/clients-webhook?id=${id}`);
264
+ }
265
+ catch (error) {
266
+ throw error;
267
+ }
268
+ }
269
+ }
270
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+ import dotenv from 'dotenv';
3
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
+ import { ApiClient } from './api/client.js';
6
+ import { registerProductTools } from './tools/products.js';
7
+ import { registerPaymentTools } from './tools/payments.js';
8
+ import { registerCheckoutTools } from './tools/checkouts.js';
9
+ import { registerWebhookTools } from './tools/webhooks.js';
10
+ import * as logger from './utils/logger.js';
11
+ dotenv.config();
12
+ const API_KEY = process.env.GGCHECKOUT_API_KEY;
13
+ const API_URL = process.env.GGCHECKOUT_API_URL || 'https://www.ggcheckout.com';
14
+ if (!API_KEY) {
15
+ console.error('[MCP] Error: Missing required environment variable');
16
+ console.error('[MCP] Please set GGCHECKOUT_API_KEY');
17
+ console.error('[MCP] Example:');
18
+ console.error('[MCP] GGCHECKOUT_API_KEY=ggck_live_your_key_here');
19
+ console.error('[MCP] Get your API key at: https://www.ggcheckout.com/');
20
+ process.exit(1);
21
+ }
22
+ if (!API_KEY.startsWith('ggck_live_')) {
23
+ console.error('[MCP] Error: Invalid API key format');
24
+ console.error('[MCP] API key must start with "ggck_live_"');
25
+ process.exit(1);
26
+ }
27
+ logger.info('STARTUP', 'Initializing GG Checkout MCP Server');
28
+ logger.info('STARTUP', `API URL: ${API_URL}`);
29
+ const apiClient = new ApiClient(API_URL, API_KEY);
30
+ const server = new McpServer({
31
+ name: 'ggcheckout-mcp',
32
+ version: '0.1.0',
33
+ });
34
+ registerProductTools(server, apiClient);
35
+ registerPaymentTools(server, apiClient);
36
+ registerCheckoutTools(server, apiClient);
37
+ registerWebhookTools(server, apiClient);
38
+ logger.info('STARTUP', 'Registered 19 tools: list_products, get_product, create_product, update_product, delete_product, get_my_business_id, list_payments, get_payments_paginated, get_payment, list_checkouts, get_checkout, create_checkout, update_checkout, delete_checkout, list_webhooks, get_webhook, create_webhook, update_webhook, delete_webhook');
39
+ const transport = new StdioServerTransport();
40
+ await server.connect(transport);
41
+ logger.info('STARTUP', 'Server started successfully');
42
+ process.on('SIGINT', async () => {
43
+ logger.info('SHUTDOWN', 'Received SIGINT, shutting down gracefully');
44
+ await server.close();
45
+ process.exit(0);
46
+ });
47
+ process.on('SIGTERM', async () => {
48
+ logger.info('SHUTDOWN', 'Received SIGTERM, shutting down gracefully');
49
+ await server.close();
50
+ process.exit(0);
51
+ });
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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 registerCheckoutTools(server: McpServer, apiClient: ApiClient): void;
4
+ //# sourceMappingURL=checkouts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkouts.d.ts","sourceRoot":"","sources":["../../src/tools/checkouts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAwM5E"}
@@ -0,0 +1,180 @@
1
+ import { z } from 'zod';
2
+ import * as logger from '../utils/logger.js';
3
+ export function registerCheckoutTools(server, apiClient) {
4
+ // List all checkouts for a user
5
+ server.tool('list_checkouts', 'List all checkouts for the authenticated user', async () => {
6
+ const start = Date.now();
7
+ try {
8
+ logger.info('TOOL', 'list_checkouts: Starting');
9
+ // Get user's businessId first
10
+ const businessId = await apiClient.getMyBusinessId();
11
+ const checkouts = await apiClient.listCheckouts(businessId);
12
+ const duration = Date.now() - start;
13
+ logger.info('TOOL', `list_checkouts: Success (${duration}ms)`, { count: checkouts.length });
14
+ const output = { checkouts };
15
+ return {
16
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
17
+ structuredContent: output
18
+ };
19
+ }
20
+ catch (error) {
21
+ const duration = Date.now() - start;
22
+ logger.error('TOOL', `list_checkouts: Failed (${duration}ms)`, error.message);
23
+ return {
24
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
25
+ isError: true
26
+ };
27
+ }
28
+ });
29
+ // Get specific checkout
30
+ server.registerTool('get_checkout', {
31
+ description: 'Get details of a specific checkout by ID',
32
+ inputSchema: {
33
+ checkoutId: z.string().describe('Checkout ID (uid)')
34
+ }
35
+ }, async (args) => {
36
+ const { checkoutId } = args;
37
+ const start = Date.now();
38
+ try {
39
+ logger.info('TOOL', `get_checkout: Starting for ${checkoutId}`);
40
+ const checkout = await apiClient.getCheckout(checkoutId);
41
+ const duration = Date.now() - start;
42
+ logger.info('TOOL', `get_checkout: Success (${duration}ms)`);
43
+ const output = { checkout };
44
+ return {
45
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
46
+ structuredContent: output
47
+ };
48
+ }
49
+ catch (error) {
50
+ const duration = Date.now() - start;
51
+ logger.error('TOOL', `get_checkout: Failed (${duration}ms)`, error.message);
52
+ return {
53
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
54
+ isError: true
55
+ };
56
+ }
57
+ });
58
+ // Create checkout
59
+ server.registerTool('create_checkout', {
60
+ description: 'Create a new checkout page',
61
+ inputSchema: {
62
+ title: z.string().describe('Checkout page title'),
63
+ id: z.string().describe('Unique checkout ID (slug)'),
64
+ price: z.number().describe('Price in Brazilian Reais (e.g., 99.90)'),
65
+ paymentMethods: z.object({}).passthrough().describe('Payment methods configuration'),
66
+ checkout: z.object({}).passthrough().describe('Checkout page configuration'),
67
+ url: z.string().optional().describe('Checkout URL (optional)'),
68
+ bannerUrl: z.string().optional().describe('Banner image URL (optional)'),
69
+ image: z.string().optional().describe('Product image URL (optional)'),
70
+ sellerName: z.string().optional().describe('Seller name (optional)'),
71
+ orderBumps: z.array(z.any()).optional().describe('Order bumps (upsells) - optional'),
72
+ fields: z.array(z.any()).optional().describe('Custom form fields (optional)'),
73
+ socialCard: z.any().optional().describe('Social card configuration (optional)'),
74
+ published: z.boolean().optional().describe('Published status (default: true)'),
75
+ metricToken: z.string().optional().describe('Metrics token (optional)'),
76
+ emailProviderToken: z.string().optional().describe('Email provider token (optional)')
77
+ }
78
+ }, async (args) => {
79
+ const input = args;
80
+ const start = Date.now();
81
+ try {
82
+ logger.info('TOOL', 'create_checkout: Starting', { title: input.title });
83
+ // Get user's businessId and add to payload
84
+ const businessId = await apiClient.getMyBusinessId();
85
+ const payload = {
86
+ ...input,
87
+ uuidOwnwer: businessId
88
+ };
89
+ const checkout = await apiClient.createCheckout(payload);
90
+ const duration = Date.now() - start;
91
+ logger.info('TOOL', `create_checkout: Success (${duration}ms)`, { uid: checkout.uid });
92
+ const output = { success: true, checkout };
93
+ return {
94
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
95
+ structuredContent: output
96
+ };
97
+ }
98
+ catch (error) {
99
+ const duration = Date.now() - start;
100
+ logger.error('TOOL', `create_checkout: Failed (${duration}ms)`, error.message);
101
+ return {
102
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
103
+ isError: true
104
+ };
105
+ }
106
+ });
107
+ // Update checkout
108
+ server.registerTool('update_checkout', {
109
+ description: 'Update an existing checkout page. Only provide fields you want to update.',
110
+ inputSchema: {
111
+ checkoutId: z.string().describe('Checkout ID (uid)'),
112
+ title: z.string().optional().describe('Checkout page title'),
113
+ price: z.number().optional().describe('Price in Brazilian Reais'),
114
+ paymentMethods: z.object({}).passthrough().optional().describe('Payment methods configuration'),
115
+ checkout: z.object({}).passthrough().optional().describe('Checkout page configuration'),
116
+ url: z.string().optional().describe('Checkout URL'),
117
+ bannerUrl: z.string().optional().describe('Banner image URL'),
118
+ image: z.string().optional().describe('Product image URL'),
119
+ sellerName: z.string().optional().describe('Seller name'),
120
+ orderBumps: z.array(z.any()).optional().describe('Order bumps (upsells)'),
121
+ fields: z.array(z.any()).optional().describe('Custom form fields'),
122
+ socialCard: z.any().optional().describe('Social card configuration'),
123
+ published: z.boolean().optional().describe('Published status'),
124
+ metricToken: z.string().optional().describe('Metrics token'),
125
+ emailProviderToken: z.string().optional().describe('Email provider token')
126
+ }
127
+ }, async (args) => {
128
+ const { checkoutId, ...input } = args;
129
+ const start = Date.now();
130
+ try {
131
+ logger.info('TOOL', `update_checkout: Starting for ${checkoutId}`);
132
+ const checkout = await apiClient.updateCheckout(checkoutId, input);
133
+ const duration = Date.now() - start;
134
+ logger.info('TOOL', `update_checkout: Success (${duration}ms)`);
135
+ const output = { success: true, checkout };
136
+ return {
137
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
138
+ structuredContent: output
139
+ };
140
+ }
141
+ catch (error) {
142
+ const duration = Date.now() - start;
143
+ logger.error('TOOL', `update_checkout: Failed (${duration}ms)`, error.message);
144
+ return {
145
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
146
+ isError: true
147
+ };
148
+ }
149
+ });
150
+ // Delete checkout
151
+ server.registerTool('delete_checkout', {
152
+ description: 'Delete a checkout page by ID',
153
+ inputSchema: {
154
+ checkoutId: z.string().describe('Checkout ID (uid)')
155
+ }
156
+ }, async (args) => {
157
+ const { checkoutId } = args;
158
+ const start = Date.now();
159
+ try {
160
+ logger.info('TOOL', `delete_checkout: Starting for ${checkoutId}`);
161
+ await apiClient.deleteCheckout(checkoutId);
162
+ const duration = Date.now() - start;
163
+ logger.info('TOOL', `delete_checkout: Success (${duration}ms)`);
164
+ const output = { success: true, message: `Checkout ${checkoutId} deleted successfully` };
165
+ return {
166
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
167
+ structuredContent: output
168
+ };
169
+ }
170
+ catch (error) {
171
+ const duration = Date.now() - start;
172
+ logger.error('TOOL', `delete_checkout: Failed (${duration}ms)`, error.message);
173
+ return {
174
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
175
+ isError: true
176
+ };
177
+ }
178
+ });
179
+ }
180
+ //# sourceMappingURL=checkouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkouts.js","sourceRoot":"","sources":["../../src/tools/checkouts.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 registerPaymentTools(server: McpServer, apiClient: ApiClient): void;
4
+ //# sourceMappingURL=payments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../src/tools/payments.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,QAmJ3E"}