pcbway-mcp-server 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 (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +322 -0
  3. package/dist/client.d.ts +35 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +135 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +23 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +24 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/enums.d.ts +20 -0
  12. package/dist/enums.d.ts.map +1 -0
  13. package/dist/enums.js +20 -0
  14. package/dist/enums.js.map +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +509 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/resources/Account.d.ts +14 -0
  20. package/dist/resources/Account.d.ts.map +1 -0
  21. package/dist/resources/Account.js +22 -0
  22. package/dist/resources/Account.js.map +1 -0
  23. package/dist/resources/AssemblyQuote.d.ts +144 -0
  24. package/dist/resources/AssemblyQuote.d.ts.map +1 -0
  25. package/dist/resources/AssemblyQuote.js +102 -0
  26. package/dist/resources/AssemblyQuote.js.map +1 -0
  27. package/dist/resources/CancelOrder.d.ts +23 -0
  28. package/dist/resources/CancelOrder.d.ts.map +1 -0
  29. package/dist/resources/CancelOrder.js +21 -0
  30. package/dist/resources/CancelOrder.js.map +1 -0
  31. package/dist/resources/CancelTGroupOrder.d.ts +23 -0
  32. package/dist/resources/CancelTGroupOrder.d.ts.map +1 -0
  33. package/dist/resources/CancelTGroupOrder.js +21 -0
  34. package/dist/resources/CancelTGroupOrder.js.map +1 -0
  35. package/dist/resources/CheckGroupOrder.d.ts +23 -0
  36. package/dist/resources/CheckGroupOrder.d.ts.map +1 -0
  37. package/dist/resources/CheckGroupOrder.js +40 -0
  38. package/dist/resources/CheckGroupOrder.js.map +1 -0
  39. package/dist/resources/CheckTGroupOrder.d.ts +23 -0
  40. package/dist/resources/CheckTGroupOrder.d.ts.map +1 -0
  41. package/dist/resources/CheckTGroupOrder.js +43 -0
  42. package/dist/resources/CheckTGroupOrder.js.map +1 -0
  43. package/dist/resources/ConfirmOrder.d.ts +107 -0
  44. package/dist/resources/ConfirmOrder.d.ts.map +1 -0
  45. package/dist/resources/ConfirmOrder.js +67 -0
  46. package/dist/resources/ConfirmOrder.js.map +1 -0
  47. package/dist/resources/GetCities.d.ts +35 -0
  48. package/dist/resources/GetCities.d.ts.map +1 -0
  49. package/dist/resources/GetCities.js +33 -0
  50. package/dist/resources/GetCities.js.map +1 -0
  51. package/dist/resources/GetCountries.d.ts +14 -0
  52. package/dist/resources/GetCountries.d.ts.map +1 -0
  53. package/dist/resources/GetCountries.js +22 -0
  54. package/dist/resources/GetCountries.js.map +1 -0
  55. package/dist/resources/GetStates.d.ts +29 -0
  56. package/dist/resources/GetStates.d.ts.map +1 -0
  57. package/dist/resources/GetStates.js +31 -0
  58. package/dist/resources/GetStates.js.map +1 -0
  59. package/dist/resources/Order.d.ts +25 -0
  60. package/dist/resources/Order.d.ts.map +1 -0
  61. package/dist/resources/Order.js +59 -0
  62. package/dist/resources/Order.js.map +1 -0
  63. package/dist/resources/OrderDetails.d.ts +23 -0
  64. package/dist/resources/OrderDetails.d.ts.map +1 -0
  65. package/dist/resources/OrderDetails.js +47 -0
  66. package/dist/resources/OrderDetails.js.map +1 -0
  67. package/dist/resources/OrderProcess.d.ts +23 -0
  68. package/dist/resources/OrderProcess.d.ts.map +1 -0
  69. package/dist/resources/OrderProcess.js +36 -0
  70. package/dist/resources/OrderProcess.js.map +1 -0
  71. package/dist/resources/PayTGroupOrder.d.ts +29 -0
  72. package/dist/resources/PayTGroupOrder.d.ts.map +1 -0
  73. package/dist/resources/PayTGroupOrder.js +41 -0
  74. package/dist/resources/PayTGroupOrder.js.map +1 -0
  75. package/dist/resources/PcbQuote.d.ts +329 -0
  76. package/dist/resources/PcbQuote.d.ts.map +1 -0
  77. package/dist/resources/PcbQuote.js +111 -0
  78. package/dist/resources/PcbQuote.js.map +1 -0
  79. package/dist/resources/PlaceOrder.d.ts +173 -0
  80. package/dist/resources/PlaceOrder.d.ts.map +1 -0
  81. package/dist/resources/PlaceOrder.js +90 -0
  82. package/dist/resources/PlaceOrder.js.map +1 -0
  83. package/dist/resources/Shipping.d.ts +65 -0
  84. package/dist/resources/Shipping.d.ts.map +1 -0
  85. package/dist/resources/Shipping.js +47 -0
  86. package/dist/resources/Shipping.js.map +1 -0
  87. package/dist/resources/SmtQuote.d.ts +89 -0
  88. package/dist/resources/SmtQuote.d.ts.map +1 -0
  89. package/dist/resources/SmtQuote.js +56 -0
  90. package/dist/resources/SmtQuote.js.map +1 -0
  91. package/dist/resources/Status.d.ts +27 -0
  92. package/dist/resources/Status.d.ts.map +1 -0
  93. package/dist/resources/Status.js +47 -0
  94. package/dist/resources/Status.js.map +1 -0
  95. package/dist/resources/common.d.ts +10 -0
  96. package/dist/resources/common.d.ts.map +1 -0
  97. package/dist/resources/common.js +69 -0
  98. package/dist/resources/common.js.map +1 -0
  99. package/dist/types.d.ts +552 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +8 -0
  102. package/dist/types.js.map +1 -0
  103. package/package.json +56 -0
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ import { PCB_DEFAULTS } from './common.js';
3
+ export const PlaceOrderInputSchema = z.object({
4
+ PcbFileName: z.string().min(1).describe('PCB file name (required)'),
5
+ BuildDays: z.number().int().positive().describe('Production cycle in days (from quote response)'),
6
+ BoardType: z.string().default('Single PCB').describe('"Single PCB", "Panel PCB as design", or "Panel PCB by Supplier"'),
7
+ DesignInPanel: z.number().int().default(1).describe('Design in panel: 1-6'),
8
+ Length: z.number().positive().describe('Board length in mm'),
9
+ Width: z.number().positive().describe('Board width in mm'),
10
+ Qty: z.number().int().positive().describe('Quantity'),
11
+ Layers: z.number().int().min(1).max(14).describe('Number of layers'),
12
+ Material: z.string().default('FR-4').describe('PCB material'),
13
+ FR4Tg: z.string().default('TG150').describe('FR4 Tg grade'),
14
+ Thickness: z.number().default(1.6).describe('Board thickness in mm'),
15
+ MinTrackSpacing: z.string().default('6/6mil').describe('Min track/space'),
16
+ MinHoleSize: z.number().default(0.3).describe('Min hole size in mm'),
17
+ SolderMask: z.string().default('Green').describe('Solder mask color'),
18
+ Silkscreen: z.string().default('White').describe('Silkscreen color'),
19
+ SilkSides: z.number().int().default(0).describe('Silkscreen sides (0,2,3,4)'),
20
+ Goldfingers: z.string().default('No').describe('Gold fingers: Yes or No'),
21
+ SurfaceFinish: z.string().default('HASL with lead').describe('Surface finish'),
22
+ ViaProcess: z.string().default('Tenting vias').describe('Via process'),
23
+ FinishedCopper: z.string().default('1 oz Cu').describe('Finished copper weight'),
24
+ RemoveProductNo: z.string().default('No').describe('Remove product number'),
25
+ // Optional fields
26
+ PcbFileUrl: z.string().optional().describe('URL to PCB file (alternative to DataZipFile)'),
27
+ DataZipFile: z.string().optional().describe('Base64 encoded zip of PCB files'),
28
+ Note: z.string().optional().describe('Order notes'),
29
+ BuyerEmail: z.string().email().optional().describe('Buyer email for contact'),
30
+ PONumber: z.string().optional().describe('Purchase order number'),
31
+ });
32
+ export class PlaceOrder {
33
+ client;
34
+ static inputSchema = PlaceOrderInputSchema;
35
+ constructor(client) {
36
+ this.client = client;
37
+ }
38
+ async place(params) {
39
+ const body = {
40
+ PcbFileName: params.PcbFileName,
41
+ BuildDays: params.BuildDays,
42
+ BoardType: params.BoardType,
43
+ DesignInPanel: params.DesignInPanel,
44
+ Length: params.Length,
45
+ Width: params.Width,
46
+ Qty: params.Qty,
47
+ Layers: params.Layers,
48
+ Material: params.Material,
49
+ FR4Tg: params.FR4Tg,
50
+ Thickness: params.Thickness,
51
+ MinTrackSpacing: params.MinTrackSpacing,
52
+ MinHoleSize: params.MinHoleSize,
53
+ SolderMask: params.SolderMask,
54
+ Silkscreen: params.Silkscreen,
55
+ SilkSides: params.SilkSides,
56
+ Goldfingers: params.Goldfingers,
57
+ SurfaceFinish: params.SurfaceFinish,
58
+ ViaProcess: params.ViaProcess,
59
+ FinishedCopper: params.FinishedCopper,
60
+ RemoveProductNo: params.RemoveProductNo,
61
+ ...PCB_DEFAULTS,
62
+ // Override specific fields
63
+ PcbFileUrl: params.PcbFileUrl ?? null,
64
+ DataZipFile: params.DataZipFile ?? null,
65
+ Note: params.Note ?? null,
66
+ BuyerEmail: params.BuyerEmail ?? null,
67
+ PONumber: params.PONumber ?? null,
68
+ CopperLayer: '--',
69
+ CopperSolderMask: '--',
70
+ CopperSilkscreen: '--',
71
+ RouteProcess: '--',
72
+ EdgeRails: null,
73
+ Rogers: null,
74
+ TCE: null,
75
+ ECopperPCB: null,
76
+ EResistorPCB: null,
77
+ CavityPCB: null,
78
+ SemiFlexPCB: null,
79
+ BackplanePCB: null,
80
+ };
81
+ const res = await this.client.request('/api/Pcb/PlaceOrder', body);
82
+ return [
83
+ '## Order Placed Successfully\n',
84
+ `**Order Number:** ${res.OrderNo}`,
85
+ `**Price:** $${res.Price.toFixed(2)}`,
86
+ `**Delivery Date:** ${new Date(res.DeliveryDate).toLocaleString()}`,
87
+ ].join('\n');
88
+ }
89
+ }
90
+ //# sourceMappingURL=PlaceOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaceOrder.js","sourceRoot":"","sources":["../../src/resources/PlaceOrder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ import type { PcbWayClient } from '../client.js';
3
+ export declare const ShippingInputSchema: z.ZodObject<{
4
+ OrderNo: z.ZodString;
5
+ ShipType: z.ZodNumber;
6
+ Country: z.ZodString;
7
+ CountryCode: z.ZodString;
8
+ Postalcode: z.ZodString;
9
+ City: z.ZodString;
10
+ State: z.ZodOptional<z.ZodString>;
11
+ AddGroupNo: z.ZodOptional<z.ZodString>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ Country: string;
14
+ CountryCode: string;
15
+ ShipType: number;
16
+ Postalcode: string;
17
+ City: string;
18
+ OrderNo: string;
19
+ State?: string | undefined;
20
+ AddGroupNo?: string | undefined;
21
+ }, {
22
+ Country: string;
23
+ CountryCode: string;
24
+ ShipType: number;
25
+ Postalcode: string;
26
+ City: string;
27
+ OrderNo: string;
28
+ State?: string | undefined;
29
+ AddGroupNo?: string | undefined;
30
+ }>;
31
+ export type ShippingInput = z.infer<typeof ShippingInputSchema>;
32
+ export declare class Shipping {
33
+ private client;
34
+ static inputSchema: z.ZodObject<{
35
+ OrderNo: z.ZodString;
36
+ ShipType: z.ZodNumber;
37
+ Country: z.ZodString;
38
+ CountryCode: z.ZodString;
39
+ Postalcode: z.ZodString;
40
+ City: z.ZodString;
41
+ State: z.ZodOptional<z.ZodString>;
42
+ AddGroupNo: z.ZodOptional<z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ Country: string;
45
+ CountryCode: string;
46
+ ShipType: number;
47
+ Postalcode: string;
48
+ City: string;
49
+ OrderNo: string;
50
+ State?: string | undefined;
51
+ AddGroupNo?: string | undefined;
52
+ }, {
53
+ Country: string;
54
+ CountryCode: string;
55
+ ShipType: number;
56
+ Postalcode: string;
57
+ City: string;
58
+ OrderNo: string;
59
+ State?: string | undefined;
60
+ AddGroupNo?: string | undefined;
61
+ }>;
62
+ constructor(client: PcbWayClient);
63
+ getFreight(params: ShippingInput): Promise<string>;
64
+ }
65
+ //# sourceMappingURL=Shipping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shipping.d.ts","sourceRoot":"","sources":["../../src/resources/Shipping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,qBAAa,QAAQ;IAGP,OAAO,CAAC,MAAM;IAF1B,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAuB;gBAErB,MAAM,EAAE,YAAY;IAElC,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;CAoCzD"}
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ import { SHIP_TYPES } from '../enums.js';
3
+ export const ShippingInputSchema = z.object({
4
+ OrderNo: z.string().min(1).describe('PCBWay order number (or comma-separated for multiple)'),
5
+ ShipType: z.number().int().describe('Logistics company (1=DHL, 10=FedEx IP, 4=SF Express, etc.)'),
6
+ Country: z.string().describe('Country name'),
7
+ CountryCode: z.string().describe('Country code (e.g. "US")'),
8
+ Postalcode: z.string().describe('Postal code'),
9
+ City: z.string().describe('City'),
10
+ State: z.string().optional().describe('State/Province/Region'),
11
+ AddGroupNo: z.string().optional().describe('Order package number (when adding to package)'),
12
+ });
13
+ export class Shipping {
14
+ client;
15
+ static inputSchema = ShippingInputSchema;
16
+ constructor(client) {
17
+ this.client = client;
18
+ }
19
+ async getFreight(params) {
20
+ const body = {
21
+ OrderNo: params.OrderNo,
22
+ ShipType: params.ShipType,
23
+ Country: params.Country,
24
+ CountryCode: params.CountryCode,
25
+ Postalcode: params.Postalcode,
26
+ City: params.City,
27
+ State: params.State ?? null,
28
+ AddGroupNo: params.AddGroupNo ?? null,
29
+ };
30
+ const res = await this.client.request('/api/Pcb/GetFreightByOrder', body);
31
+ // Reverse lookup ship type name
32
+ const shipTypeName = Object.entries(SHIP_TYPES).find(([, v]) => v === params.ShipType)?.[0] ??
33
+ `Type ${params.ShipType}`;
34
+ const lines = [
35
+ `## Freight Quote — Order ${params.OrderNo}\n`,
36
+ `**Carrier:** ${shipTypeName}`,
37
+ `**Shipping Cost:** $${res.Price.toFixed(2)}`,
38
+ `**Estimated Delivery:** ${res.Days} days`,
39
+ `**Weight:** Included in calculation`,
40
+ ];
41
+ if (res.IsRas) {
42
+ lines.push('\n⚠️ **DHL Remote Area Surcharge** may apply to this address.');
43
+ }
44
+ return lines.join('\n');
45
+ }
46
+ }
47
+ //# sourceMappingURL=Shipping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shipping.js","sourceRoot":"","sources":["../../src/resources/Shipping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IAC5F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IACjG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC9D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;CAC5F,CAAC,CAAC;AAIH,MAAM,OAAO,QAAQ;IAGC;IAFpB,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAC;IAEzC,YAAoB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE5C,KAAK,CAAC,UAAU,CAAC,MAAqB;QACpC,MAAM,IAAI,GAA6B;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;SACtC,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACnC,4BAA4B,EAC5B,IAA0C,CAC3C,CAAC;QAEF,gCAAgC;QAChC,MAAM,YAAY,GAChB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE5B,MAAM,KAAK,GAAa;YACtB,4BAA4B,MAAM,CAAC,OAAO,IAAI;YAC9C,gBAAgB,YAAY,EAAE;YAC9B,uBAAuB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7C,2BAA2B,GAAG,CAAC,IAAI,OAAO;YAC1C,qCAAqC;SACtC,CAAC;QAEF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { z } from 'zod';
2
+ import type { PcbWayClient } from '../client.js';
3
+ export declare const SmtQuoteInputSchema: z.ZodObject<{
4
+ Country: z.ZodString;
5
+ CountryCode: z.ZodString;
6
+ ShipType: z.ZodNumber;
7
+ Postalcode: z.ZodString;
8
+ City: z.ZodString;
9
+ FlexibleOption: z.ZodEnum<["Turnkey", "Kitted or Consigned", "Combo"]>;
10
+ BoardType: z.ZodEnum<["Single pieces", "Panelized PCBs"]>;
11
+ AssemblySide: z.ZodEnum<["Top side", "Bottom side", "Both sides"]>;
12
+ Qty: z.ZodNumber;
13
+ UniqueParts: z.ZodDefault<z.ZodNumber>;
14
+ SMTParts: z.ZodDefault<z.ZodNumber>;
15
+ HoleParts: z.ZodDefault<z.ZodNumber>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ Country: string;
18
+ CountryCode: string;
19
+ ShipType: number;
20
+ Postalcode: string;
21
+ City: string;
22
+ BoardType: "Single pieces" | "Panelized PCBs";
23
+ Qty: number;
24
+ FlexibleOption: "Turnkey" | "Kitted or Consigned" | "Combo";
25
+ AssemblySide: "Top side" | "Bottom side" | "Both sides";
26
+ UniqueParts: number;
27
+ SMTParts: number;
28
+ HoleParts: number;
29
+ }, {
30
+ Country: string;
31
+ CountryCode: string;
32
+ ShipType: number;
33
+ Postalcode: string;
34
+ City: string;
35
+ BoardType: "Single pieces" | "Panelized PCBs";
36
+ Qty: number;
37
+ FlexibleOption: "Turnkey" | "Kitted or Consigned" | "Combo";
38
+ AssemblySide: "Top side" | "Bottom side" | "Both sides";
39
+ UniqueParts?: number | undefined;
40
+ SMTParts?: number | undefined;
41
+ HoleParts?: number | undefined;
42
+ }>;
43
+ export type SmtQuoteInput = z.infer<typeof SmtQuoteInputSchema>;
44
+ export declare class SmtQuote {
45
+ private client;
46
+ static inputSchema: z.ZodObject<{
47
+ Country: z.ZodString;
48
+ CountryCode: z.ZodString;
49
+ ShipType: z.ZodNumber;
50
+ Postalcode: z.ZodString;
51
+ City: z.ZodString;
52
+ FlexibleOption: z.ZodEnum<["Turnkey", "Kitted or Consigned", "Combo"]>;
53
+ BoardType: z.ZodEnum<["Single pieces", "Panelized PCBs"]>;
54
+ AssemblySide: z.ZodEnum<["Top side", "Bottom side", "Both sides"]>;
55
+ Qty: z.ZodNumber;
56
+ UniqueParts: z.ZodDefault<z.ZodNumber>;
57
+ SMTParts: z.ZodDefault<z.ZodNumber>;
58
+ HoleParts: z.ZodDefault<z.ZodNumber>;
59
+ }, "strip", z.ZodTypeAny, {
60
+ Country: string;
61
+ CountryCode: string;
62
+ ShipType: number;
63
+ Postalcode: string;
64
+ City: string;
65
+ BoardType: "Single pieces" | "Panelized PCBs";
66
+ Qty: number;
67
+ FlexibleOption: "Turnkey" | "Kitted or Consigned" | "Combo";
68
+ AssemblySide: "Top side" | "Bottom side" | "Both sides";
69
+ UniqueParts: number;
70
+ SMTParts: number;
71
+ HoleParts: number;
72
+ }, {
73
+ Country: string;
74
+ CountryCode: string;
75
+ ShipType: number;
76
+ Postalcode: string;
77
+ City: string;
78
+ BoardType: "Single pieces" | "Panelized PCBs";
79
+ Qty: number;
80
+ FlexibleOption: "Turnkey" | "Kitted or Consigned" | "Combo";
81
+ AssemblySide: "Top side" | "Bottom side" | "Both sides";
82
+ UniqueParts?: number | undefined;
83
+ SMTParts?: number | undefined;
84
+ HoleParts?: number | undefined;
85
+ }>;
86
+ constructor(client: PcbWayClient);
87
+ getQuote(params: SmtQuoteInput): Promise<string>;
88
+ }
89
+ //# sourceMappingURL=SmtQuote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmtQuote.d.ts","sourceRoot":"","sources":["../../src/resources/SmtQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,qBAAa,QAAQ;IAGP,OAAO,CAAC,MAAM;IAF1B,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAuB;gBAErB,MAAM,EAAE,YAAY;IAElC,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;CAsCvD"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ export const SmtQuoteInputSchema = z.object({
3
+ Country: z.string().describe('Country name'),
4
+ CountryCode: z.string().describe('Country code (e.g. "US")'),
5
+ ShipType: z.number().int().describe('Logistics company (1=DHL, 10=FedEx IP, etc.)'),
6
+ Postalcode: z.string().describe('Postal code'),
7
+ City: z.string().describe('City'),
8
+ FlexibleOption: z.enum(['Turnkey', 'Kitted or Consigned', 'Combo'])
9
+ .describe('Assembly flexible option'),
10
+ BoardType: z.enum(['Single pieces', 'Panelized PCBs'])
11
+ .describe('Board type'),
12
+ AssemblySide: z.enum(['Top side', 'Bottom side', 'Both sides'])
13
+ .describe('Assembly side'),
14
+ Qty: z.number().int().positive().describe('Quantity to assemble'),
15
+ UniqueParts: z.number().int().min(0).default(0).describe('Number of unique parts'),
16
+ SMTParts: z.number().int().min(0).default(0).describe('Number of SMT parts'),
17
+ HoleParts: z.number().int().min(0).default(0).describe('Number of through-hole parts'),
18
+ });
19
+ export class SmtQuote {
20
+ client;
21
+ static inputSchema = SmtQuoteInputSchema;
22
+ constructor(client) {
23
+ this.client = client;
24
+ }
25
+ async getQuote(params) {
26
+ const body = {
27
+ Country: params.Country,
28
+ CountryCode: params.CountryCode,
29
+ ShipType: params.ShipType,
30
+ Postalcode: params.Postalcode,
31
+ City: params.City,
32
+ FlexibleOption: params.FlexibleOption,
33
+ BoardType: params.BoardType,
34
+ AssemblySide: params.AssemblySide,
35
+ Qty: params.Qty,
36
+ UniqueParts: params.UniqueParts,
37
+ SMTParts: params.SMTParts,
38
+ HoleParts: params.HoleParts,
39
+ };
40
+ const res = await this.client.request('/api/SMT/SMTQuotation', body);
41
+ const lines = ['## SMT Assembly Quotation Results\n'];
42
+ for (const item of res.priceList) {
43
+ const type = item.Express ? '🚀 Express' : item.Standard ? '📦 Standard' : '⚡ Economy';
44
+ lines.push(`**${type}** — $${item.Price.toFixed(2)} | Build: ${item.BuildDays} days (${item.BuildText})`);
45
+ }
46
+ if (res.Shipping) {
47
+ lines.push('');
48
+ lines.push('### Shipping');
49
+ lines.push(`Cost: $${res.Shipping.ShipCost.toFixed(2)} | Days: ${res.Shipping.ShipDays} | Weight: ${res.Shipping.Weight}g`);
50
+ if (res.Shipping.IsRas)
51
+ lines.push('⚠️ DHL Remote Area Surcharge may apply');
52
+ }
53
+ return lines.join('\n');
54
+ }
55
+ }
56
+ //# sourceMappingURL=SmtQuote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmtQuote.js","sourceRoot":"","sources":["../../src/resources/SmtQuote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import { PcbWayClient } from '../client.js';
3
+ /**
4
+ * Production Status resource.
5
+ *
6
+ * Tool: production_status
7
+ * Returns a simplified view of production progress without
8
+ * the full order overhead — just the status and percentage.
9
+ */
10
+ export declare class Status {
11
+ private client;
12
+ constructor(client: PcbWayClient);
13
+ static inputSchema: z.ZodObject<{
14
+ orderId: z.ZodString;
15
+ }, "strip", z.ZodTypeAny, {
16
+ orderId: string;
17
+ }, {
18
+ orderId: string;
19
+ }>;
20
+ /**
21
+ * Get simplified production status.
22
+ * Shares the same backend endpoint as Order but returns
23
+ * a terse summary suitable for quick polling.
24
+ */
25
+ getStatus(input: z.infer<typeof Status.inputSchema>): Promise<string>;
26
+ }
27
+ //# sourceMappingURL=Status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Status.d.ts","sourceRoot":"","sources":["../../src/resources/Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;GAMG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAIhC,MAAM,CAAC,WAAW;;;;;;OAEf;IAEH;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAkC5E"}
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Production Status resource.
4
+ *
5
+ * Tool: production_status
6
+ * Returns a simplified view of production progress without
7
+ * the full order overhead — just the status and percentage.
8
+ */
9
+ export class Status {
10
+ client;
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ static inputSchema = z.object({
15
+ orderId: z.string().min(1).describe('PCBWay order number'),
16
+ });
17
+ /**
18
+ * Get simplified production status.
19
+ * Shares the same backend endpoint as Order but returns
20
+ * a terse summary suitable for quick polling.
21
+ */
22
+ async getStatus(input) {
23
+ const response = await this.client.post('/api/Order/GetStatus', { orderId: input.orderId });
24
+ if (response.code !== 0) {
25
+ return `PCBWay API error: ${response.message}`;
26
+ }
27
+ if (!response.data) {
28
+ return 'No status data returned.';
29
+ }
30
+ const d = response.data;
31
+ const pct = d.progressPercent ?? 0;
32
+ // Build a compact progress bar
33
+ const barWidth = 20;
34
+ const filled = Math.round((pct / 100) * barWidth);
35
+ const bar = '█'.repeat(filled) + '░'.repeat(barWidth - filled);
36
+ const lines = [
37
+ `**${d.orderId}**`,
38
+ `[${bar}] ${pct}%`,
39
+ `Status: ${d.statusDescription ?? d.status}`,
40
+ ];
41
+ if (d.estimatedCompletion) {
42
+ lines.push(`Est. completion: ${d.estimatedCompletion}`);
43
+ }
44
+ return lines.join('\n');
45
+ }
46
+ }
47
+ //# sourceMappingURL=Status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Status.js","sourceRoot":"","sources":["../../src/resources/Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IACT,MAAM,CAAe;IAE7B,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KAC3D,CAAC,CAAC;IAEH;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,KAAyC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,sBAAsB,EACtB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAC3B,CAAC;QAEF,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,qBAAqB,QAAQ,CAAC,OAAO,EAAE,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,0BAA0B,CAAC;QACpC,CAAC;QAED,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;QAEnC,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,CAAC,OAAO,IAAI;YAClB,IAAI,GAAG,KAAK,GAAG,GAAG;YAClB,WAAW,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,MAAM,EAAE;SAC7C,CAAC;QAEF,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared utilities for PCBWay MCP resource handlers.
3
+ *
4
+ * PCB_DEFAULTS eliminates ~40 lines of null-fill boilerplate per resource file.
5
+ * Every PCB request (PcbQuotation, PlaceOrder, etc.) sends the same set of
6
+ * optional advanced fields that must be explicitly set to null / empty / default.
7
+ */
8
+ /** Default values for all optional PCB advanced fields. */
9
+ export declare const PCB_DEFAULTS: Record<string, unknown>;
10
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/resources/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2DAA2D;AAC3D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA8DvC,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Shared utilities for PCBWay MCP resource handlers.
3
+ *
4
+ * PCB_DEFAULTS eliminates ~40 lines of null-fill boilerplate per resource file.
5
+ * Every PCB request (PcbQuotation, PlaceOrder, etc.) sends the same set of
6
+ * optional advanced fields that must be explicitly set to null / empty / default.
7
+ */
8
+ /** Default values for all optional PCB advanced fields. */
9
+ export const PCB_DEFAULTS = {
10
+ // ── Gold / plating fields (always null unless specified) ──────
11
+ cxipt: null,
12
+ cxiptselectiveGold: null,
13
+ cxiptselectiveHold: null,
14
+ cxiptselectiveGoldHold: null,
15
+ XoutAllowance: null,
16
+ EdgeRailsContent: null,
17
+ GoldFingersBevelling: null,
18
+ GoldPlatingType: null,
19
+ GoldThickness: null,
20
+ GoldThicknessSelective: null,
21
+ GoldFingerThickness: null,
22
+ BoardThickness: null,
23
+ AUGoldThickness: null,
24
+ NiGoldThickness: null,
25
+ SendAUGoldThickness: null,
26
+ SendNiGoldThickness: null,
27
+ SendPdAUGoldThickness: null,
28
+ SendPdNiGoldThickness: null,
29
+ SendPdPdGoldThickness: null,
30
+ AuHoldSelective: null,
31
+ NiHoldSelective: null,
32
+ GoldHoldSelective: null,
33
+ AuGoldHoldSelective: null,
34
+ NiGoldHoldSelective: null,
35
+ PdAUGoldThickness: null,
36
+ PdNiGoldThickness: null,
37
+ PdPdGoldThickness: null,
38
+ // ── Process / material fields ─────────────────────────────────
39
+ AllowENIG: null,
40
+ DataCodeDes: null,
41
+ ViaPadOrViaResin: null,
42
+ ViaPadNew: null,
43
+ WPHybridPCB: null,
44
+ LeadlessHardGold: null,
45
+ BlackFR4blackcore: null,
46
+ Pressfitholes: null,
47
+ AcceptHASLUp: null,
48
+ Zaxis: null,
49
+ // ── String fields that must be empty string, not null ──────────
50
+ ThermoelectricSeparation: '',
51
+ Buriedblind: '',
52
+ Viafilled: '',
53
+ PaperBetweenPCBs: '',
54
+ // ── Fields with non-null defaults ──────────────────────────────
55
+ StructureMCPCB: 'middle',
56
+ DateCode: 'None',
57
+ PeelableSoldermask: 'None',
58
+ HoleCopperThickness: 'None',
59
+ ULMaker: 'None',
60
+ PackageBox: 'No',
61
+ RemoveProductNo: 'No',
62
+ AddSerialNumbers: 'None',
63
+ RouteProcess: '--',
64
+ PinBanNum: 0,
65
+ CopperLayer: '--',
66
+ CopperSolderMask: '--',
67
+ CopperSilkscreen: '--',
68
+ };
69
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/resources/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,YAAY,GAA4B;IACnD,iEAAiE;IACjE,KAAK,EAAE,IAAI;IACX,kBAAkB,EAAE,IAAI;IACxB,kBAAkB,EAAE,IAAI;IACxB,sBAAsB,EAAE,IAAI;IAC5B,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,IAAI;IAC1B,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,sBAAsB,EAAE,IAAI;IAC5B,mBAAmB,EAAE,IAAI;IACzB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;IACzB,qBAAqB,EAAE,IAAI;IAC3B,qBAAqB,EAAE,IAAI;IAC3B,qBAAqB,EAAE,IAAI;IAC3B,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,IAAI;IAEvB,iEAAiE;IACjE,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,IAAI;IACtB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,IAAI;IAEX,kEAAkE;IAClE,wBAAwB,EAAE,EAAE;IAC5B,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE,EAAE;IAEpB,kEAAkE;IAClE,cAAc,EAAE,QAAQ;IACxB,QAAQ,EAAE,MAAM;IAChB,kBAAkB,EAAE,MAAM;IAC1B,mBAAmB,EAAE,MAAM;IAC3B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,MAAM;IACxB,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;CACd,CAAC"}