@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 +32 -5
- package/dist/bin/stdio.js +32 -5
- package/dist/index.js +32 -5
- package/dist/index.mjs +32 -5
- package/package.json +53 -53
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
+
}
|