@hayodev/crystallize-mcp 0.1.1

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +304 -0
  3. package/build/src/audit.d.ts +23 -0
  4. package/build/src/audit.d.ts.map +1 -0
  5. package/build/src/audit.js +38 -0
  6. package/build/src/audit.js.map +1 -0
  7. package/build/src/bin/crystallize-mcp.d.ts +12 -0
  8. package/build/src/bin/crystallize-mcp.d.ts.map +1 -0
  9. package/build/src/bin/crystallize-mcp.js +45 -0
  10. package/build/src/bin/crystallize-mcp.js.map +1 -0
  11. package/build/src/bin/setup.d.ts +12 -0
  12. package/build/src/bin/setup.d.ts.map +1 -0
  13. package/build/src/bin/setup.js +171 -0
  14. package/build/src/bin/setup.js.map +1 -0
  15. package/build/src/client.d.ts +28 -0
  16. package/build/src/client.d.ts.map +1 -0
  17. package/build/src/client.js +124 -0
  18. package/build/src/client.js.map +1 -0
  19. package/build/src/credentials.d.ts +25 -0
  20. package/build/src/credentials.d.ts.map +1 -0
  21. package/build/src/credentials.js +104 -0
  22. package/build/src/credentials.js.map +1 -0
  23. package/build/src/errors.d.ts +12 -0
  24. package/build/src/errors.d.ts.map +1 -0
  25. package/build/src/errors.js +66 -0
  26. package/build/src/errors.js.map +1 -0
  27. package/build/src/index.d.ts +12 -0
  28. package/build/src/index.d.ts.map +1 -0
  29. package/build/src/index.js +83 -0
  30. package/build/src/index.js.map +1 -0
  31. package/build/src/pii.d.ts +20 -0
  32. package/build/src/pii.d.ts.map +1 -0
  33. package/build/src/pii.js +85 -0
  34. package/build/src/pii.js.map +1 -0
  35. package/build/src/tools/catalogue.d.ts +7 -0
  36. package/build/src/tools/catalogue.d.ts.map +1 -0
  37. package/build/src/tools/catalogue.js +329 -0
  38. package/build/src/tools/catalogue.js.map +1 -0
  39. package/build/src/tools/customers.d.ts +7 -0
  40. package/build/src/tools/customers.d.ts.map +1 -0
  41. package/build/src/tools/customers.js +278 -0
  42. package/build/src/tools/customers.js.map +1 -0
  43. package/build/src/tools/discovery.d.ts +10 -0
  44. package/build/src/tools/discovery.d.ts.map +1 -0
  45. package/build/src/tools/discovery.js +285 -0
  46. package/build/src/tools/discovery.js.map +1 -0
  47. package/build/src/tools/orders.d.ts +7 -0
  48. package/build/src/tools/orders.d.ts.map +1 -0
  49. package/build/src/tools/orders.js +250 -0
  50. package/build/src/tools/orders.js.map +1 -0
  51. package/build/src/tools/shapes.d.ts +7 -0
  52. package/build/src/tools/shapes.d.ts.map +1 -0
  53. package/build/src/tools/shapes.js +194 -0
  54. package/build/src/tools/shapes.js.map +1 -0
  55. package/build/src/types.d.ts +43 -0
  56. package/build/src/types.d.ts.map +1 -0
  57. package/build/src/types.js +5 -0
  58. package/build/src/types.js.map +1 -0
  59. package/package.json +75 -0
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Shape & tenant tools — inspect shapes, components, and tenant configuration.
3
+ */
4
+ import { z } from 'zod';
5
+ export function shapeTools(client) {
6
+ return [
7
+ {
8
+ name: 'list_shapes',
9
+ description: 'List all shapes defined in the tenant. Returns shape names, identifiers, types, and component counts with deep links to the Crystallize UI.',
10
+ schema: {},
11
+ handler: async () => {
12
+ const query = `
13
+ query ListShapes($tenantId: ID!) {
14
+ shape {
15
+ getMany(tenantId: $tenantId) {
16
+ identifier
17
+ name
18
+ type
19
+ components {
20
+ id
21
+ name
22
+ type
23
+ }
24
+ }
25
+ }
26
+ }
27
+ `;
28
+ const data = await client.api.pimApi(query, {
29
+ tenantId: client.config.tenantId,
30
+ });
31
+ const shapes = data.shape
32
+ .getMany;
33
+ if (!shapes?.length) {
34
+ return {
35
+ content: [
36
+ { type: 'text', text: 'No shapes found in this tenant.' },
37
+ ],
38
+ };
39
+ }
40
+ const lines = [
41
+ `${shapes.length} shape(s) in tenant "${client.config.tenantIdentifier}":\n`,
42
+ ];
43
+ for (const shape of shapes) {
44
+ lines.push(`${shape.name} (${shape.identifier}) [${shape.type}]`);
45
+ lines.push(` Components: ${shape.components?.length ?? 0}`);
46
+ if (shape.components?.length) {
47
+ const componentList = shape.components
48
+ .map(c => `${c.id} (${c.type})`)
49
+ .join(', ');
50
+ lines.push(` ${componentList}`);
51
+ }
52
+ lines.push(` Link: ${client.shapeLink(shape.identifier)}`);
53
+ lines.push('');
54
+ }
55
+ return {
56
+ content: [{ type: 'text', text: lines.join('\n') }],
57
+ };
58
+ },
59
+ },
60
+ {
61
+ name: 'get_shape',
62
+ description: 'Get the full component definition for a shape. Shows all components with their types, descriptions, and configuration. Useful for understanding what data a shape expects.',
63
+ schema: {
64
+ identifier: z
65
+ .string()
66
+ .describe('Shape identifier, e.g. "product" or "blog-post"'),
67
+ },
68
+ handler: async (params) => {
69
+ const { identifier } = params;
70
+ const query = `
71
+ query GetShape($identifier: String!, $tenantId: ID!) {
72
+ shape {
73
+ get(identifier: $identifier, tenantId: $tenantId) {
74
+ identifier
75
+ name
76
+ type
77
+ components {
78
+ id
79
+ name
80
+ type
81
+ description
82
+ config {
83
+ ... on ComponentConfig {
84
+ min
85
+ max
86
+ }
87
+ }
88
+ }
89
+ variantComponents {
90
+ id
91
+ name
92
+ type
93
+ description
94
+ }
95
+ }
96
+ }
97
+ }
98
+ `;
99
+ const data = await client.api.pimApi(query, {
100
+ identifier,
101
+ tenantId: client.config.tenantId,
102
+ });
103
+ const shape = data.shape
104
+ .get;
105
+ if (!shape) {
106
+ return {
107
+ content: [
108
+ {
109
+ type: 'text',
110
+ text: `Shape "${identifier}" not found. Use list_shapes to see available shapes.`,
111
+ },
112
+ ],
113
+ isError: true,
114
+ };
115
+ }
116
+ const lines = [
117
+ `${shape.name} (${shape.identifier}) [${shape.type}]`,
118
+ `Link: ${client.shapeLink(shape.identifier)}`,
119
+ '',
120
+ ];
121
+ if (shape.components?.length) {
122
+ lines.push(`Item Components (${shape.components.length}):`);
123
+ for (const comp of shape.components) {
124
+ lines.push(` ${comp.id} — ${comp.name} [${comp.type}]`);
125
+ if (comp.description) {
126
+ lines.push(` ${comp.description}`);
127
+ }
128
+ }
129
+ lines.push('');
130
+ }
131
+ if (shape.variantComponents?.length) {
132
+ lines.push(`Variant Components (${shape.variantComponents.length}):`);
133
+ for (const comp of shape.variantComponents) {
134
+ lines.push(` ${comp.id} — ${comp.name} [${comp.type}]`);
135
+ if (comp.description) {
136
+ lines.push(` ${comp.description}`);
137
+ }
138
+ }
139
+ }
140
+ return {
141
+ content: [{ type: 'text', text: lines.join('\n') }],
142
+ };
143
+ },
144
+ },
145
+ {
146
+ name: 'get_tenant_info',
147
+ description: 'Get tenant configuration including name, identifier, available languages, and default language.',
148
+ schema: {},
149
+ handler: async () => {
150
+ const query = `
151
+ query GetTenant($identifier: String!) {
152
+ tenant {
153
+ get(identifier: $identifier) {
154
+ id
155
+ identifier
156
+ name
157
+ defaults {
158
+ language
159
+ currency
160
+ }
161
+ availableLanguages {
162
+ code
163
+ name
164
+ }
165
+ }
166
+ }
167
+ }
168
+ `;
169
+ const data = await client.api.pimApi(query, {
170
+ identifier: client.config.tenantIdentifier,
171
+ });
172
+ const tenant = data.tenant.get;
173
+ const lines = [
174
+ `${tenant.name}`,
175
+ ` Identifier: ${tenant.identifier}`,
176
+ ` ID: ${tenant.id}`,
177
+ ` Default language: ${tenant.defaults?.language ?? 'en'}`,
178
+ ` Default currency: ${tenant.defaults?.currency ?? 'n/a'}`,
179
+ ` UI: https://app.crystallize.com/${tenant.identifier}`,
180
+ ];
181
+ if (tenant.availableLanguages?.length) {
182
+ const langs = tenant.availableLanguages
183
+ .map(l => `${l.name} (${l.code})`)
184
+ .join(', ');
185
+ lines.push(` Languages: ${langs}`);
186
+ }
187
+ return {
188
+ content: [{ type: 'text', text: lines.join('\n') }],
189
+ };
190
+ },
191
+ },
192
+ ];
193
+ }
194
+ //# sourceMappingURL=shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../src/tools/shapes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Shared types for crystallize-mcp.
3
+ */
4
+ import type { z, ZodRawShape } from 'zod';
5
+ /** Access mode controls which tools are registered. */
6
+ export type AccessMode = 'read' | 'write' | 'admin';
7
+ /** MCP tool result content block. */
8
+ export interface TextContent {
9
+ type: 'text';
10
+ text: string;
11
+ }
12
+ /** MCP tool result — uses index signature to satisfy MCP SDK. */
13
+ export interface ToolResult {
14
+ [key: string]: unknown;
15
+ content: TextContent[];
16
+ isError?: boolean;
17
+ }
18
+ /** A complete tool definition — schema, handler, and metadata. */
19
+ export interface ToolDefinition<T extends ZodRawShape = ZodRawShape> {
20
+ name: string;
21
+ description: string;
22
+ schema: T;
23
+ /** Minimum access mode required to use this tool. Defaults to 'read'. */
24
+ mode?: AccessMode;
25
+ handler: (params: z.objectOutputType<T, z.ZodTypeAny>) => Promise<ToolResult>;
26
+ }
27
+ /** PII masking mode for customer/order data. */
28
+ export type PiiMode = 'full' | 'masked' | 'none';
29
+ /** Crystallize environment configuration. */
30
+ export interface CrystallizeConfig {
31
+ tenantIdentifier: string;
32
+ tenantId?: string;
33
+ accessTokenId?: string;
34
+ accessTokenSecret?: string;
35
+ staticAuthToken?: string;
36
+ accessMode: AccessMode;
37
+ defaultLanguage?: string;
38
+ piiMode?: PiiMode;
39
+ auditLog?: string;
40
+ }
41
+ /** Error categories for actionable error messages. */
42
+ export type ErrorCategory = 'auth' | 'not_found' | 'rate_limit' | 'permission' | 'validation' | 'unknown';
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAE1C,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,yEAAyE;IACzE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/E;AAED,gDAAgD;AAChD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sDAAsD;AACtD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for crystallize-mcp.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@hayodev/crystallize-mcp",
3
+ "version": "0.1.1",
4
+ "description": "Crystallize MCP — headless commerce tools for AI agents. Browse catalogue, search products, inspect shapes, manage orders via Model Context Protocol.",
5
+ "type": "module",
6
+ "main": "build/src/index.js",
7
+ "bin": {
8
+ "crystallize-mcp": "build/src/bin/crystallize-mcp.js"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/HayoDev/crystallize-mcp.git"
13
+ },
14
+ "homepage": "https://github.com/HayoDev/crystallize-mcp#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/HayoDev/crystallize-mcp/issues"
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "files": [
22
+ "build/src",
23
+ "LICENSE",
24
+ "!*.tsbuildinfo"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "clean": "rm -rf build",
29
+ "start": "node build/src/bin/crystallize-mcp.js",
30
+ "dev": "npm run build && npm start",
31
+ "typecheck": "tsc --noEmit",
32
+ "lint": "oxlint",
33
+ "lint:fix": "oxlint --fix",
34
+ "format": "oxlint --fix && oxfmt --write .",
35
+ "check-format": "oxlint && oxfmt --check .",
36
+ "test": "npm run build && node --test build/tests/**/*.test.js",
37
+ "test:no-build": "node --test build/tests/**/*.test.js",
38
+ "prepare": "sh scripts/install-hooks.sh"
39
+ },
40
+ "keywords": [
41
+ "mcp",
42
+ "mcp-server",
43
+ "crystallize",
44
+ "headless-commerce",
45
+ "ecommerce",
46
+ "pim",
47
+ "catalogue",
48
+ "graphql",
49
+ "model-context-protocol",
50
+ "ai-agents",
51
+ "ai-coding",
52
+ "claude",
53
+ "cursor",
54
+ "copilot"
55
+ ],
56
+ "engines": {
57
+ "node": ">=18.0.0"
58
+ },
59
+ "author": "HayoDev",
60
+ "license": "MIT",
61
+ "dependencies": {
62
+ "@crystallize/js-api-client": "^4.0.0",
63
+ "@modelcontextprotocol/sdk": "^1.27.0",
64
+ "zod": "^3.23.0"
65
+ },
66
+ "optionalDependencies": {
67
+ "@napi-rs/keyring": "^1.2.0"
68
+ },
69
+ "devDependencies": {
70
+ "@types/node": "^22.10.0",
71
+ "oxfmt": "^0.42.0",
72
+ "oxlint": "^1.58.0",
73
+ "typescript": "^5.7.0"
74
+ }
75
+ }