@brainerce/mcp-server 3.11.0 → 3.11.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.
package/dist/bin/http.js CHANGED
@@ -163,7 +163,26 @@ import {
163
163
  getDescriptionContent, isHtmlDescription,
164
164
  getProductMetafieldValue, getProductCustomizationFields,
165
165
  } from 'brainerce';
166
- \`\`\``;
166
+ \`\`\`
167
+
168
+ ### Available features \u2014 request each topic for full docs
169
+
170
+ | Topic | What it covers |
171
+ |-------|----------------|
172
+ | \`products\` | Catalog listing, search, PDP, variants, swatches, stock, attributes |
173
+ | \`cart\` | Guest + logged-in cart, add/remove/update, reservations |
174
+ | \`checkout\` | Guest + customer checkout, shipping, address |
175
+ | \`payment\` | Payment providers, intents, status polling, confirmation |
176
+ | \`auth\` | Customer sign-up, login, OAuth, email verification |
177
+ | \`discounts\` | Coupons, banners, nudges |
178
+ | \`recommendations\` | Cross-sell / upsell grids |
179
+ | \`reviews\` | Product reviews & ratings |
180
+ | \`inventory\` | Stock badges, reservation countdown |
181
+ | \`inquiries\` | Contact / custom forms |
182
+ | \`i18n\` | Multi-language, RTL |
183
+ | \`admin\` | Server-to-server admin API (products, orders, customers) |
184
+ | \`storefront-bot\` | **AI chat widget** \u2014 add Brainerce's AI shopping assistant to any page with one script tag or \`BrainerceBot.mount()\`. Answers product questions, shows recommendation cards, handles cart adds, opens escalation form. |
185
+ | \`content\` | Blog, articles, static pages |`;
167
186
  }
168
187
  function getCheckoutFlowSection(_currency) {
169
188
  return `## \u26A0\uFE0F CHECKOUT FLOW (CRITICAL \u2014 READ CAREFULLY!)
@@ -1885,8 +1904,8 @@ function getTaxDisplaySection(_currency) {
1885
1904
  | Product Page | \u274C No | "Price excludes tax" (optional note) |
1886
1905
  | Cart Page | \u26A0\uFE0F "Calculated at checkout" | No address yet |
1887
1906
  | Checkout (before address) | \u26A0\uFE0F "Enter address to calculate" | Waiting for location |
1888
- | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` |
1889
- | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` |
1907
+ | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` (0 in VAT mode \u2192 \`checkout.taxBreakdown.totalTax\`) |
1908
+ | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` (0 in VAT mode \u2192 \`order.taxBreakdown.totalTax\`) |
1890
1909
 
1891
1910
  ### Cart Page \u2014 Partial Display
1892
1911
 
@@ -1938,7 +1957,13 @@ const totals = getCartTotals(cart);
1938
1957
  <div className="flex justify-between text-green-600"><span>Discount</span><span>-{formatPrice(order.discountAmount, { currency: order.currency })}</span></div>
1939
1958
  )}
1940
1959
  <div className="flex justify-between"><span>Shipping</span><span>{formatPrice(order.shippingAmount, { currency: order.currency })}</span></div>
1941
- <div className="flex justify-between"><span>Tax</span><span>{formatPrice(order.taxAmount, { currency: order.currency })}</span></div>
1960
+ {/* Inclusive (VAT) stores keep taxAmount="0" \u2014 the real VAT is on taxBreakdown.totalTax. */}
1961
+ {(() => {
1962
+ const tax = parseFloat(order.taxAmount || '0') || order.taxBreakdown?.totalTax || 0;
1963
+ if (tax <= 0) return null;
1964
+ const incl = order.taxBreakdown?.pricesIncludeTax;
1965
+ return <div className="flex justify-between"><span>{incl ? 'Tax (incl.)' : 'Tax'}</span><span>{formatPrice(tax, { currency: order.currency })}</span></div>;
1966
+ })()}
1942
1967
  <div className="flex justify-between font-bold text-lg border-t pt-2"><span>Total Paid</span><span>{formatPrice(order.totalAmount, { currency: order.currency })}</span></div>
1943
1968
  </div>
1944
1969
  \`\`\``;
@@ -2067,7 +2092,7 @@ A useful order card includes ALL of the following when the data is present. Each
2067
2092
  | **Tracking** | \`order.trackingNumber\`, \`order.trackingUrl\`, \`order.carrier\`, \`order.shippedAt\`, \`order.deliveredAt\` | Link out to \`trackingUrl\` when set. |
2068
2093
  | **Payment** | \`order.paymentMethod\`, \`order.financialStatus\` | Badge \`financialStatus\` (paid / pending / refunded / partially_refunded). |
2069
2094
  | Downloads | \`order.hasDownloads\` \u2192 \`client.getOrderDownloads(id)\` | Separate call; returns \`OrderDownloadLink[]\`. |
2070
- | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. |
2095
+ | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. In VAT-inclusive mode \`taxAmount\` is 0 \u2014 read \`order.taxBreakdown.totalTax\` and label "Tax (incl.)". |
2071
2096
 
2072
2097
  #### Rendering \`order.items[i].customizations\` by type
2073
2098
 
@@ -3770,6 +3795,8 @@ interface Order {
3770
3795
  totalAmount: string; // ALWAYS use this, not .total
3771
3796
  total?: string; // optional alias
3772
3797
  currency?: string;
3798
+ taxAmount?: string | null; // 0 in inclusive (VAT) mode \u2014 read taxBreakdown.totalTax
3799
+ taxBreakdown?: TaxBreakdown | null; // carries the included VAT when prices include tax
3773
3800
  customer?: OrderCustomer | null;
3774
3801
  items: OrderItem[];
3775
3802
  itemCount?: number;
package/dist/bin/stdio.js CHANGED
@@ -160,7 +160,26 @@ import {
160
160
  getDescriptionContent, isHtmlDescription,
161
161
  getProductMetafieldValue, getProductCustomizationFields,
162
162
  } from 'brainerce';
163
- \`\`\``;
163
+ \`\`\`
164
+
165
+ ### Available features \u2014 request each topic for full docs
166
+
167
+ | Topic | What it covers |
168
+ |-------|----------------|
169
+ | \`products\` | Catalog listing, search, PDP, variants, swatches, stock, attributes |
170
+ | \`cart\` | Guest + logged-in cart, add/remove/update, reservations |
171
+ | \`checkout\` | Guest + customer checkout, shipping, address |
172
+ | \`payment\` | Payment providers, intents, status polling, confirmation |
173
+ | \`auth\` | Customer sign-up, login, OAuth, email verification |
174
+ | \`discounts\` | Coupons, banners, nudges |
175
+ | \`recommendations\` | Cross-sell / upsell grids |
176
+ | \`reviews\` | Product reviews & ratings |
177
+ | \`inventory\` | Stock badges, reservation countdown |
178
+ | \`inquiries\` | Contact / custom forms |
179
+ | \`i18n\` | Multi-language, RTL |
180
+ | \`admin\` | Server-to-server admin API (products, orders, customers) |
181
+ | \`storefront-bot\` | **AI chat widget** \u2014 add Brainerce's AI shopping assistant to any page with one script tag or \`BrainerceBot.mount()\`. Answers product questions, shows recommendation cards, handles cart adds, opens escalation form. |
182
+ | \`content\` | Blog, articles, static pages |`;
164
183
  }
165
184
  function getCheckoutFlowSection(_currency) {
166
185
  return `## \u26A0\uFE0F CHECKOUT FLOW (CRITICAL \u2014 READ CAREFULLY!)
@@ -1882,8 +1901,8 @@ function getTaxDisplaySection(_currency) {
1882
1901
  | Product Page | \u274C No | "Price excludes tax" (optional note) |
1883
1902
  | Cart Page | \u26A0\uFE0F "Calculated at checkout" | No address yet |
1884
1903
  | Checkout (before address) | \u26A0\uFE0F "Enter address to calculate" | Waiting for location |
1885
- | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` |
1886
- | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` |
1904
+ | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` (0 in VAT mode \u2192 \`checkout.taxBreakdown.totalTax\`) |
1905
+ | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` (0 in VAT mode \u2192 \`order.taxBreakdown.totalTax\`) |
1887
1906
 
1888
1907
  ### Cart Page \u2014 Partial Display
1889
1908
 
@@ -1935,7 +1954,13 @@ const totals = getCartTotals(cart);
1935
1954
  <div className="flex justify-between text-green-600"><span>Discount</span><span>-{formatPrice(order.discountAmount, { currency: order.currency })}</span></div>
1936
1955
  )}
1937
1956
  <div className="flex justify-between"><span>Shipping</span><span>{formatPrice(order.shippingAmount, { currency: order.currency })}</span></div>
1938
- <div className="flex justify-between"><span>Tax</span><span>{formatPrice(order.taxAmount, { currency: order.currency })}</span></div>
1957
+ {/* Inclusive (VAT) stores keep taxAmount="0" \u2014 the real VAT is on taxBreakdown.totalTax. */}
1958
+ {(() => {
1959
+ const tax = parseFloat(order.taxAmount || '0') || order.taxBreakdown?.totalTax || 0;
1960
+ if (tax <= 0) return null;
1961
+ const incl = order.taxBreakdown?.pricesIncludeTax;
1962
+ return <div className="flex justify-between"><span>{incl ? 'Tax (incl.)' : 'Tax'}</span><span>{formatPrice(tax, { currency: order.currency })}</span></div>;
1963
+ })()}
1939
1964
  <div className="flex justify-between font-bold text-lg border-t pt-2"><span>Total Paid</span><span>{formatPrice(order.totalAmount, { currency: order.currency })}</span></div>
1940
1965
  </div>
1941
1966
  \`\`\``;
@@ -2064,7 +2089,7 @@ A useful order card includes ALL of the following when the data is present. Each
2064
2089
  | **Tracking** | \`order.trackingNumber\`, \`order.trackingUrl\`, \`order.carrier\`, \`order.shippedAt\`, \`order.deliveredAt\` | Link out to \`trackingUrl\` when set. |
2065
2090
  | **Payment** | \`order.paymentMethod\`, \`order.financialStatus\` | Badge \`financialStatus\` (paid / pending / refunded / partially_refunded). |
2066
2091
  | Downloads | \`order.hasDownloads\` \u2192 \`client.getOrderDownloads(id)\` | Separate call; returns \`OrderDownloadLink[]\`. |
2067
- | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. |
2092
+ | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. In VAT-inclusive mode \`taxAmount\` is 0 \u2014 read \`order.taxBreakdown.totalTax\` and label "Tax (incl.)". |
2068
2093
 
2069
2094
  #### Rendering \`order.items[i].customizations\` by type
2070
2095
 
@@ -3767,6 +3792,8 @@ interface Order {
3767
3792
  totalAmount: string; // ALWAYS use this, not .total
3768
3793
  total?: string; // optional alias
3769
3794
  currency?: string;
3795
+ taxAmount?: string | null; // 0 in inclusive (VAT) mode \u2014 read taxBreakdown.totalTax
3796
+ taxBreakdown?: TaxBreakdown | null; // carries the included VAT when prices include tax
3770
3797
  customer?: OrderCustomer | null;
3771
3798
  items: OrderItem[];
3772
3799
  itemCount?: number;
package/dist/index.js CHANGED
@@ -186,7 +186,26 @@ import {
186
186
  getDescriptionContent, isHtmlDescription,
187
187
  getProductMetafieldValue, getProductCustomizationFields,
188
188
  } from 'brainerce';
189
- \`\`\``;
189
+ \`\`\`
190
+
191
+ ### Available features \u2014 request each topic for full docs
192
+
193
+ | Topic | What it covers |
194
+ |-------|----------------|
195
+ | \`products\` | Catalog listing, search, PDP, variants, swatches, stock, attributes |
196
+ | \`cart\` | Guest + logged-in cart, add/remove/update, reservations |
197
+ | \`checkout\` | Guest + customer checkout, shipping, address |
198
+ | \`payment\` | Payment providers, intents, status polling, confirmation |
199
+ | \`auth\` | Customer sign-up, login, OAuth, email verification |
200
+ | \`discounts\` | Coupons, banners, nudges |
201
+ | \`recommendations\` | Cross-sell / upsell grids |
202
+ | \`reviews\` | Product reviews & ratings |
203
+ | \`inventory\` | Stock badges, reservation countdown |
204
+ | \`inquiries\` | Contact / custom forms |
205
+ | \`i18n\` | Multi-language, RTL |
206
+ | \`admin\` | Server-to-server admin API (products, orders, customers) |
207
+ | \`storefront-bot\` | **AI chat widget** \u2014 add Brainerce's AI shopping assistant to any page with one script tag or \`BrainerceBot.mount()\`. Answers product questions, shows recommendation cards, handles cart adds, opens escalation form. |
208
+ | \`content\` | Blog, articles, static pages |`;
190
209
  }
191
210
  function getCheckoutFlowSection(_currency) {
192
211
  return `## \u26A0\uFE0F CHECKOUT FLOW (CRITICAL \u2014 READ CAREFULLY!)
@@ -1908,8 +1927,8 @@ function getTaxDisplaySection(_currency) {
1908
1927
  | Product Page | \u274C No | "Price excludes tax" (optional note) |
1909
1928
  | Cart Page | \u26A0\uFE0F "Calculated at checkout" | No address yet |
1910
1929
  | Checkout (before address) | \u26A0\uFE0F "Enter address to calculate" | Waiting for location |
1911
- | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` |
1912
- | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` |
1930
+ | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` (0 in VAT mode \u2192 \`checkout.taxBreakdown.totalTax\`) |
1931
+ | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` (0 in VAT mode \u2192 \`order.taxBreakdown.totalTax\`) |
1913
1932
 
1914
1933
  ### Cart Page \u2014 Partial Display
1915
1934
 
@@ -1961,7 +1980,13 @@ const totals = getCartTotals(cart);
1961
1980
  <div className="flex justify-between text-green-600"><span>Discount</span><span>-{formatPrice(order.discountAmount, { currency: order.currency })}</span></div>
1962
1981
  )}
1963
1982
  <div className="flex justify-between"><span>Shipping</span><span>{formatPrice(order.shippingAmount, { currency: order.currency })}</span></div>
1964
- <div className="flex justify-between"><span>Tax</span><span>{formatPrice(order.taxAmount, { currency: order.currency })}</span></div>
1983
+ {/* Inclusive (VAT) stores keep taxAmount="0" \u2014 the real VAT is on taxBreakdown.totalTax. */}
1984
+ {(() => {
1985
+ const tax = parseFloat(order.taxAmount || '0') || order.taxBreakdown?.totalTax || 0;
1986
+ if (tax <= 0) return null;
1987
+ const incl = order.taxBreakdown?.pricesIncludeTax;
1988
+ return <div className="flex justify-between"><span>{incl ? 'Tax (incl.)' : 'Tax'}</span><span>{formatPrice(tax, { currency: order.currency })}</span></div>;
1989
+ })()}
1965
1990
  <div className="flex justify-between font-bold text-lg border-t pt-2"><span>Total Paid</span><span>{formatPrice(order.totalAmount, { currency: order.currency })}</span></div>
1966
1991
  </div>
1967
1992
  \`\`\``;
@@ -2090,7 +2115,7 @@ A useful order card includes ALL of the following when the data is present. Each
2090
2115
  | **Tracking** | \`order.trackingNumber\`, \`order.trackingUrl\`, \`order.carrier\`, \`order.shippedAt\`, \`order.deliveredAt\` | Link out to \`trackingUrl\` when set. |
2091
2116
  | **Payment** | \`order.paymentMethod\`, \`order.financialStatus\` | Badge \`financialStatus\` (paid / pending / refunded / partially_refunded). |
2092
2117
  | Downloads | \`order.hasDownloads\` \u2192 \`client.getOrderDownloads(id)\` | Separate call; returns \`OrderDownloadLink[]\`. |
2093
- | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. |
2118
+ | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. In VAT-inclusive mode \`taxAmount\` is 0 \u2014 read \`order.taxBreakdown.totalTax\` and label "Tax (incl.)". |
2094
2119
 
2095
2120
  #### Rendering \`order.items[i].customizations\` by type
2096
2121
 
@@ -3793,6 +3818,8 @@ interface Order {
3793
3818
  totalAmount: string; // ALWAYS use this, not .total
3794
3819
  total?: string; // optional alias
3795
3820
  currency?: string;
3821
+ taxAmount?: string | null; // 0 in inclusive (VAT) mode \u2014 read taxBreakdown.totalTax
3822
+ taxBreakdown?: TaxBreakdown | null; // carries the included VAT when prices include tax
3796
3823
  customer?: OrderCustomer | null;
3797
3824
  items: OrderItem[];
3798
3825
  itemCount?: number;
package/dist/index.mjs CHANGED
@@ -154,7 +154,26 @@ import {
154
154
  getDescriptionContent, isHtmlDescription,
155
155
  getProductMetafieldValue, getProductCustomizationFields,
156
156
  } from 'brainerce';
157
- \`\`\``;
157
+ \`\`\`
158
+
159
+ ### Available features \u2014 request each topic for full docs
160
+
161
+ | Topic | What it covers |
162
+ |-------|----------------|
163
+ | \`products\` | Catalog listing, search, PDP, variants, swatches, stock, attributes |
164
+ | \`cart\` | Guest + logged-in cart, add/remove/update, reservations |
165
+ | \`checkout\` | Guest + customer checkout, shipping, address |
166
+ | \`payment\` | Payment providers, intents, status polling, confirmation |
167
+ | \`auth\` | Customer sign-up, login, OAuth, email verification |
168
+ | \`discounts\` | Coupons, banners, nudges |
169
+ | \`recommendations\` | Cross-sell / upsell grids |
170
+ | \`reviews\` | Product reviews & ratings |
171
+ | \`inventory\` | Stock badges, reservation countdown |
172
+ | \`inquiries\` | Contact / custom forms |
173
+ | \`i18n\` | Multi-language, RTL |
174
+ | \`admin\` | Server-to-server admin API (products, orders, customers) |
175
+ | \`storefront-bot\` | **AI chat widget** \u2014 add Brainerce's AI shopping assistant to any page with one script tag or \`BrainerceBot.mount()\`. Answers product questions, shows recommendation cards, handles cart adds, opens escalation form. |
176
+ | \`content\` | Blog, articles, static pages |`;
158
177
  }
159
178
  function getCheckoutFlowSection(_currency) {
160
179
  return `## \u26A0\uFE0F CHECKOUT FLOW (CRITICAL \u2014 READ CAREFULLY!)
@@ -1876,8 +1895,8 @@ function getTaxDisplaySection(_currency) {
1876
1895
  | Product Page | \u274C No | "Price excludes tax" (optional note) |
1877
1896
  | Cart Page | \u26A0\uFE0F "Calculated at checkout" | No address yet |
1878
1897
  | Checkout (before address) | \u26A0\uFE0F "Enter address to calculate" | Waiting for location |
1879
- | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` |
1880
- | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` |
1898
+ | Checkout (after address) | \u2705 **REQUIRED** | \`checkout.taxAmount\` (0 in VAT mode \u2192 \`checkout.taxBreakdown.totalTax\`) |
1899
+ | Order Confirmation | \u2705 **REQUIRED** | \`order.taxAmount\` (0 in VAT mode \u2192 \`order.taxBreakdown.totalTax\`) |
1881
1900
 
1882
1901
  ### Cart Page \u2014 Partial Display
1883
1902
 
@@ -1929,7 +1948,13 @@ const totals = getCartTotals(cart);
1929
1948
  <div className="flex justify-between text-green-600"><span>Discount</span><span>-{formatPrice(order.discountAmount, { currency: order.currency })}</span></div>
1930
1949
  )}
1931
1950
  <div className="flex justify-between"><span>Shipping</span><span>{formatPrice(order.shippingAmount, { currency: order.currency })}</span></div>
1932
- <div className="flex justify-between"><span>Tax</span><span>{formatPrice(order.taxAmount, { currency: order.currency })}</span></div>
1951
+ {/* Inclusive (VAT) stores keep taxAmount="0" \u2014 the real VAT is on taxBreakdown.totalTax. */}
1952
+ {(() => {
1953
+ const tax = parseFloat(order.taxAmount || '0') || order.taxBreakdown?.totalTax || 0;
1954
+ if (tax <= 0) return null;
1955
+ const incl = order.taxBreakdown?.pricesIncludeTax;
1956
+ return <div className="flex justify-between"><span>{incl ? 'Tax (incl.)' : 'Tax'}</span><span>{formatPrice(tax, { currency: order.currency })}</span></div>;
1957
+ })()}
1933
1958
  <div className="flex justify-between font-bold text-lg border-t pt-2"><span>Total Paid</span><span>{formatPrice(order.totalAmount, { currency: order.currency })}</span></div>
1934
1959
  </div>
1935
1960
  \`\`\``;
@@ -2058,7 +2083,7 @@ A useful order card includes ALL of the following when the data is present. Each
2058
2083
  | **Tracking** | \`order.trackingNumber\`, \`order.trackingUrl\`, \`order.carrier\`, \`order.shippedAt\`, \`order.deliveredAt\` | Link out to \`trackingUrl\` when set. |
2059
2084
  | **Payment** | \`order.paymentMethod\`, \`order.financialStatus\` | Badge \`financialStatus\` (paid / pending / refunded / partially_refunded). |
2060
2085
  | Downloads | \`order.hasDownloads\` \u2192 \`client.getOrderDownloads(id)\` | Separate call; returns \`OrderDownloadLink[]\`. |
2061
- | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. |
2086
+ | Financial summary | \`order.subtotal\`, \`order.appliedDiscounts\`, \`order.couponCode\` + \`couponDiscount\`, \`order.shippingAmount\`, \`order.taxAmount\`, \`order.totalAmount\` | Breakdown rows + final total. In VAT-inclusive mode \`taxAmount\` is 0 \u2014 read \`order.taxBreakdown.totalTax\` and label "Tax (incl.)". |
2062
2087
 
2063
2088
  #### Rendering \`order.items[i].customizations\` by type
2064
2089
 
@@ -3761,6 +3786,8 @@ interface Order {
3761
3786
  totalAmount: string; // ALWAYS use this, not .total
3762
3787
  total?: string; // optional alias
3763
3788
  currency?: string;
3789
+ taxAmount?: string | null; // 0 in inclusive (VAT) mode \u2014 read taxBreakdown.totalTax
3790
+ taxBreakdown?: TaxBreakdown | null; // carries the included VAT when prices include tax
3764
3791
  customer?: OrderCustomer | null;
3765
3792
  items: OrderItem[];
3766
3793
  itemCount?: number;
package/package.json CHANGED
@@ -1,53 +1,53 @@
1
- {
2
- "name": "@brainerce/mcp-server",
3
- "version": "3.11.0",
4
- "description": "Framework-agnostic domain knowledge API for Brainerce. Provides SDK docs, types, business flows, critical rules, and store capabilities to AI tools like Lovable, Cursor, Bolt, v0, and Claude Code. Does NOT provide framework-specific boilerplate — clients build in whatever framework fits.",
5
- "bin": {
6
- "brainerce-mcp": "dist/bin/stdio.js"
7
- },
8
- "main": "dist/index.js",
9
- "module": "dist/index.mjs",
10
- "types": "dist/index.d.ts",
11
- "exports": {
12
- ".": {
13
- "types": "./dist/index.d.ts",
14
- "require": "./dist/index.js",
15
- "import": "./dist/index.mjs"
16
- }
17
- },
18
- "files": [
19
- "dist",
20
- "README.md"
21
- ],
22
- "scripts": {
23
- "build": "tsup",
24
- "dev": "tsup --watch",
25
- "start:stdio": "node dist/bin/stdio.js",
26
- "start:http": "node dist/bin/http.js",
27
- "prepublishOnly": "npm run build"
28
- },
29
- "dependencies": {
30
- "@modelcontextprotocol/sdk": "^1.27.1",
31
- "zod": "^3.24.0"
32
- },
33
- "devDependencies": {
34
- "@types/node": "^22.0.0",
35
- "tsup": "^8.0.0",
36
- "typescript": "^5.3.0"
37
- },
38
- "engines": {
39
- "node": ">=18"
40
- },
41
- "keywords": [
42
- "brainerce",
43
- "mcp",
44
- "model-context-protocol",
45
- "ai",
46
- "ecommerce",
47
- "lovable",
48
- "cursor",
49
- "claude-code",
50
- "vibe-coding"
51
- ],
52
- "license": "MIT"
53
- }
1
+ {
2
+ "name": "@brainerce/mcp-server",
3
+ "version": "3.11.1",
4
+ "description": "Framework-agnostic domain knowledge API for Brainerce. Provides SDK docs, types, business flows, critical rules, and store capabilities to AI tools like Lovable, Cursor, Bolt, v0, and Claude Code. Does NOT provide framework-specific boilerplate — clients build in whatever framework fits.",
5
+ "bin": {
6
+ "brainerce-mcp": "dist/bin/stdio.js"
7
+ },
8
+ "main": "dist/index.js",
9
+ "module": "dist/index.mjs",
10
+ "types": "dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "require": "./dist/index.js",
15
+ "import": "./dist/index.mjs"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsup",
24
+ "dev": "tsup --watch",
25
+ "start:stdio": "node dist/bin/stdio.js",
26
+ "start:http": "node dist/bin/http.js",
27
+ "prepublishOnly": "npm run build"
28
+ },
29
+ "dependencies": {
30
+ "@modelcontextprotocol/sdk": "^1.27.1",
31
+ "zod": "^3.24.0"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "^22.0.0",
35
+ "tsup": "^8.0.0",
36
+ "typescript": "^5.3.0"
37
+ },
38
+ "engines": {
39
+ "node": ">=18"
40
+ },
41
+ "keywords": [
42
+ "brainerce",
43
+ "mcp",
44
+ "model-context-protocol",
45
+ "ai",
46
+ "ecommerce",
47
+ "lovable",
48
+ "cursor",
49
+ "claude-code",
50
+ "vibe-coding"
51
+ ],
52
+ "license": "MIT"
53
+ }