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,4 @@
1
+ export declare function info(operation: string, message: string, meta?: any): void;
2
+ export declare function warn(operation: string, message: string, meta?: any): void;
3
+ export declare function error(operation: string, message: string, meta?: any): void;
4
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,QAGlE;AAED,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,QAGlE;AAED,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,QAGnE"}
@@ -0,0 +1,13 @@
1
+ export function info(operation, message, meta) {
2
+ const timestamp = new Date().toISOString();
3
+ console.log(`[MCP] [${timestamp}] [INFO] [${operation}] ${message}`, meta || '');
4
+ }
5
+ export function warn(operation, message, meta) {
6
+ const timestamp = new Date().toISOString();
7
+ console.warn(`[MCP] [${timestamp}] [WARN] [${operation}] ${message}`, meta || '');
8
+ }
9
+ export function error(operation, message, meta) {
10
+ const timestamp = new Date().toISOString();
11
+ console.error(`[MCP] [${timestamp}] [ERROR] [${operation}] ${message}`, meta || '');
12
+ }
13
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;IACjE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,aAAa,SAAS,KAAK,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;IACjE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,UAAU,SAAS,aAAa,SAAS,KAAK,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;IAClE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,cAAc,SAAS,KAAK,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare function parsePriceToCents(input: number | string): number;
2
+ export declare function validateCreateInput(input: any): {
3
+ price: number;
4
+ imageUrl: string;
5
+ title: string;
6
+ url: string;
7
+ description: string;
8
+ discount: string;
9
+ };
10
+ export declare function validateUpdateInput(input: any): any;
11
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAkBhE;AAoBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG;;;;;;;EAO7C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,OAa7C"}
@@ -0,0 +1,54 @@
1
+ import { z } from 'zod';
2
+ export function parsePriceToCents(input) {
3
+ if (typeof input === 'number') {
4
+ if (!Number.isInteger(input) || input < 0) {
5
+ throw new Error('Price must be a non-negative integer in cents');
6
+ }
7
+ return input;
8
+ }
9
+ if (typeof input === 'string') {
10
+ const clean = input.replace(/\./g, '').replace(',', '.');
11
+ const value = Number.parseFloat(clean);
12
+ if (Number.isNaN(value) || value < 0) {
13
+ throw new Error('Invalid price format');
14
+ }
15
+ return Math.round(value * 100);
16
+ }
17
+ throw new Error('Price must be a number or string');
18
+ }
19
+ const createProductSchema = z.object({
20
+ title: z.string().min(1, 'Title is required'),
21
+ url: z.string().url('Invalid URL format'),
22
+ imageUrl: z.string().url('Invalid image URL').or(z.literal('')).optional(),
23
+ description: z.string().min(1, 'Description is required'),
24
+ discount: z.string().min(1, 'Discount is required'),
25
+ price: z.union([z.number(), z.string()]),
26
+ });
27
+ const updateProductSchema = z.object({
28
+ title: z.string().min(1).optional(),
29
+ url: z.string().url().optional(),
30
+ imageUrl: z.string().url().or(z.literal('')).optional(),
31
+ description: z.string().min(1).optional(),
32
+ discount: z.string().min(1).optional(),
33
+ price: z.union([z.number(), z.string()]).optional(),
34
+ });
35
+ export function validateCreateInput(input) {
36
+ const validated = createProductSchema.parse(input);
37
+ return {
38
+ ...validated,
39
+ price: parsePriceToCents(validated.price),
40
+ imageUrl: validated.imageUrl || '',
41
+ };
42
+ }
43
+ export function validateUpdateInput(input) {
44
+ const validated = updateProductSchema.parse(input);
45
+ const result = { ...validated };
46
+ if (validated.price !== undefined) {
47
+ result.price = parsePriceToCents(validated.price);
48
+ }
49
+ if (validated.imageUrl !== undefined) {
50
+ result.imageUrl = validated.imageUrl || '';
51
+ }
52
+ return result;
53
+ }
54
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "ggcheckout-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for GG Checkout - Manage your products via AI agents",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "bin": {
8
+ "ggcheckout-mcp": "dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "start": "node dist/index.js",
13
+ "dev": "tsx src/index.ts",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "keywords": [
17
+ "mcp",
18
+ "model-context-protocol",
19
+ "ggcheckout",
20
+ "ai",
21
+ "automation",
22
+ "api",
23
+ "claude",
24
+ "anthropic",
25
+ "checkout",
26
+ "payments",
27
+ "ecommerce"
28
+ ],
29
+ "author": "GG Checkout Team",
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/gui-drumond/ggcheckout-mcp.git"
34
+ },
35
+ "homepage": "https://github.com/gui-drumond/ggcheckout-mcp#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/gui-drumond/ggcheckout-mcp/issues"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "README.md"
42
+ ],
43
+ "dependencies": {
44
+ "@modelcontextprotocol/sdk": "^1.20.0",
45
+ "axios": "^1.12.2",
46
+ "dotenv": "^17.2.3",
47
+ "zod": "^3.25.76"
48
+ },
49
+ "devDependencies": {
50
+ "@types/node": "^24.7.1",
51
+ "tsx": "^4.20.6",
52
+ "typescript": "^5.9.3"
53
+ },
54
+ "engines": {
55
+ "node": ">=18.0.0"
56
+ }
57
+ }