@epcc-sdk/sdks-cart-checkout-order 0.5.0 → 0.5.2

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.
@@ -112,7 +112,7 @@ const getCartsTool = (options) => {
112
112
  name: "cart_checkout_order_get_carts",
113
113
  config: {
114
114
  title: "Get Carts",
115
- description: "Retrieves a list of carts. The carts returned depend on the authentication method used:\n\n| Authentication Method | Header | Returns |\n| :--- | :--- | :--- |\n| **Customer Token** | `X-Moltin-Customer-Token` | Carts for the specified customer. See [Customer Tokens](/docs/customer-management/customer-management-api/customer-tokens). |\n| **Account Token** | `EP-Account-Management-Authentication-Token` | Carts for the specified account. See [Account Management Token](/docs/api/accounts/post-v-2-account-members-tokens). |\n| **Client Credentials** | `Authorization: Bearer <token>` | All carts or only registered carts, controlled by the `show_all_carts` setting. See [Cart Settings](/docs/api/carts/put-v-2-settings-cart). |\n\n**Client Credentials Behavior:**\n- When `show_all_carts` is `true`: Returns all carts in the store.\n- When `show_all_carts` is `false`: Returns only registered carts (associated with customers or accounts).\n\n**Sorting**\n\nCarts are sorted in descending order by `updated_date`. For more information, see [Pagination](/guides/Getting-Started/pagination).",
115
+ description: "Lists carts, most recently updated first. Which carts come back depends on the token: a customer token gives that customer's carts, an account token that account's carts, and client credentials all carts or only registered ones, as the show_all_carts cart setting decides. To read one cart, get it by ID.",
116
116
  inputSchema: getCartsInput,
117
117
  annotations: {
118
118
  readOnlyHint: true,
@@ -149,7 +149,7 @@ const createACartTool = (options) => {
149
149
  name: "cart_checkout_order_create_a_cart",
150
150
  config: {
151
151
  title: "Create a Cart",
152
- description: 'Creates a cart. Call this endpoint each time a customer creates a cart.\n\nEach shopper can have multiple carts. Use the carts API to create a cart. The carts are distinct from one another. Shoppers can add different items to their carts. They can check out one of the carts without affecting the content or status of their other carts.\n\nAfter the shopper checks out the cart, the cart remains available to the shopper. The cart is persistent and stays with the shopper after it is used.\n\nYou can create a cart to specify custom discounts. You can enable custom discounts when the `discount_settings.custom_discounts_enabled` field is set to `true`. Default is set from cart discount settings for the store. See [Update Cart Settings](/docs/api/carts/put-v-2-settings-cart).\n\nYou can also create a cart when inventory checks are not performed until checkout by setting the `inventory_settings.defer_inventory_check` field to `true`. Again the default is set from cart discount settings for the store. See [Update Cart Settings](/docs/api/carts/put-v-2-settings-cart).\n\n### Preview Cart\n\nYou can set a future date for your shopping cart and view the promotions that will be available during that time period. This feature enables you to validate your promotion settings and observe how they will be applied in the cart.\n\n:::caution\n- Once the cart is in preview mode, you cannot revert it to a regular cart.\n- Carts with `snapshot_date` are same as preview carts.\n- You cannot checkout a cart that includes a `snapshot_date`.\n- To delete a promotion preview cart, use [Delete a cart](/docs/api/carts/delete-a-cart) endpoint.\n- The promotion preview cart has the same expiration time as a regular cart based on the store\'s [cart settings](/docs/api/carts/put-v-2-settings-cart).\n- Preview cart interactions skip inventory checks and events, allowing users to preview future carts without impacting related external systems.\n:::\n\n### Custom Attributes\nYou can create custom attributes for the cart object to include additional information, enabling promotions that target specific cart attributes.\nFor example:\n```\n"custom_attributes":{\n "membership": {\n "type": "string",\n "value": "VIP"\n }\n}\n```\nSee [adding cart custom attributes in promotions builder](/docs/commerce-manager/promotions-builder/creating-a-promotion-in-promotions-builder#adding-cart-custom-attributes)\n\nCart custom attributes remain with the corresponding cart for the extent of its lifecycle. These custom attributes carry over to the resulting order objects on checkout and those on carts are deleted with their carts upon cart deletions.\nCustom attributes can be updated or removed using a PUT request. To delete specific custom attributes, simply exclude the unwanted attribute objects from the PUT request body.\n\n### Contact Email\nYou can attach an email to carts via the `contact.email` field. These values help identify guest shopper carts and, in the case of promotions with maximum usage settings for guest and registered shopper, track per-shopper promotion usages.\nSee [Create Max Uses Per Shopper Promotion Codes](/docs/promotions-builder/promotions-builder-codes/create-max-use-limit-promotion-codes)\n\nFor example:\n```\n"contact": {\n "email": "tester@email.com"\n}\n```\n\nPlease note, this value is not supported for registered shopper carts (that is, carts with accounts or customers associated), as these carts already have email values associated via the shopper details. Accordingly, requests to add contact email information to registered shopper carts (and vice versa) result in error messages.\n\n### Errors\n\n- `400 Bad Request` : This is returned when the submitted request does not adhere to the expected API contract for the endpoint.\n\n - For example, in the case of string fields, this error might indicate issues in the length or format of submitted strings. For more information about valid string fields, refer to Safe Characters section.\n - In the case of preview carts (those with `snapshot_date`), an error is returned for invalid actions, such as removing the preview date, setting a preview date in the past, or attempting to checkout a cart with a `snapshot_date`.',
152
+ description: "Creates a new, empty cart. A shopper can have several carts and check each out without affecting the others. It can set a name, custom attributes for promotions, a contact email for a guest cart, and whether custom discounts or deferred inventory checks apply. A cart with a snapshot_date is a promotion preview cart and cannot be checked out.",
153
153
  inputSchema: createACartInput,
154
154
  annotations: {
155
155
  readOnlyHint: false,
@@ -185,7 +185,7 @@ const deleteACartTool = (options) => {
185
185
  name: "cart_checkout_order_delete_a_cart",
186
186
  config: {
187
187
  title: "Delete a Cart",
188
- description: "You can delete a cart, including the items, name, description, and remove all associations.\n\n### Errors\n\nThe following error message is received when you attempt to delete a cart that is associated with a customer. Before deletion, ensure that the cart is disassociated.\n\n```json\nmessage: {\n errors: [\n {\n status: 400,\n title: 'Last cart',\n detail: 'This is the last cart associated with a customer and it cannot be deleted, try disassociating instead'\n }\n ]\n }\n````",
188
+ description: "Deletes a cart with its items, name and description, and removes all its associations. Fails with 400 when it is the last cart associated with a customer. To empty a cart but keep it, delete all its items instead.",
189
189
  inputSchema: deleteACartInput,
190
190
  annotations: {
191
191
  readOnlyHint: false,
@@ -222,7 +222,7 @@ const getACartTool = (options) => {
222
222
  name: "cart_checkout_order_get_a_cart",
223
223
  config: {
224
224
  title: "Get a Cart",
225
- description: "Use this endpoint to retrieve a specific cart. If a cart ID does not exist, a new cart will be automatically created. If the cart is associated with shipping groups, calling this endpoint displays the associated shipping group IDs in the `relationships` section.\n\nYou can easily get a new or existing cart by providing the unique cart reference in the request. If the cart is associated with shipping groups, calling this endpoint displays the associated shipping group IDs in the relationships section.\n\n:::note\n\n- The default cart name is Cart. However, you can update the cart name as required. Ensure that the string length of the name is greater than or equal to one. Follow the safe character guidelines for name and description naming. For more information about cart ID naming requirements, see the [Safe Characters](/guides/Getting-Started/safe-characters) section.\n- Outside of the JS-SDK, we don't handle creating cart references. You need to create your own.\n\n:::\n\n:::caution\n\nAn empty cart is returned for any carts that don't currently exist. For more information about the cart items object, see [Get Cart Items](/docs/api/carts/get-cart-items).\n\n:::\n\n### Query parameters\n\n\n| Name | Required | Type | Description |\n|:----------|:---------|:---------|:-------------------------------------------|\n| `include` | Optional | `string` | Comma-delimited string of entities that can be included. The information included are `items`,`tax_items`, `custom_discounts`, or `promotions`. |",
225
+ description: "Gets one cart by ID, optionally including its custom discounts or promotions. A cart ID that does not exist creates a new, empty cart instead of returning an error. To list the cart's items, get the cart items.",
226
226
  inputSchema: getACartInput,
227
227
  annotations: {
228
228
  readOnlyHint: true,
@@ -259,7 +259,7 @@ const updateACartTool = (options) => {
259
259
  name: "cart_checkout_order_update_a_cart",
260
260
  config: {
261
261
  title: "Update a Cart",
262
- description: "Updates cart properties for the specified cartID.\n\nYou can update a cart to specify custom discounts. You can enable custom discounts when the `discount_settings.custom_discounts_enabled` field is set to `true`. Default is set from cart discount settings for the store. See [Cart Settings](/docs/api/carts/put-v-2-settings-cart).\n\nYou can also create a cart when inventory checks are not performed until checkout by setting the `inventory_settings.defer_inventory_check` field to `true`. Again the default is set from cart discount settings for the store. See [Update Cart Settings](/docs/api/carts/put-v-2-settings-cart).",
262
+ description: "Updates one cart's own properties, such as its name, custom attributes, and whether custom discounts or deferred inventory checks apply. It does not change the cart's items; update the cart items for that.",
263
263
  inputSchema: updateACartInput,
264
264
  annotations: {
265
265
  readOnlyHint: false,
@@ -295,7 +295,7 @@ const deleteAllCartItemsTool = (options) => {
295
295
  name: "cart_checkout_order_delete_all_cart_items",
296
296
  config: {
297
297
  title: "Delete all Cart Items",
298
- description: "A shopper can clean up their cart, deleting custom items, promotions, and so on, while the empty cart remains available. The cart id, name, description, and any account or customer associations persist. The shopper can continue to add items to the cart.",
298
+ description: "Removes every item from a cart, including custom items and promotions. The cart itself stays, with its ID, name, description and any account or customer associations, and can be filled again. To remove one item, delete that item; to remove the cart too, delete the cart.",
299
299
  inputSchema: deleteAllCartItemsInput,
300
300
  annotations: {
301
301
  readOnlyHint: false,
@@ -332,7 +332,7 @@ const getCartItemsTool = (options) => {
332
332
  name: "cart_checkout_order_get_cart_items",
333
333
  config: {
334
334
  title: "Get Cart Items",
335
- description: 'Use this endpoint to retrieve cart items. If the cart is associated with shipping groups, calling this endpoint displays the associated shipping group IDs.\n\nYou can use this endpoint to retrieve the breakdown of cart items by promotion ID. For example, if you have Promotions Standard item discount with code *sale2024*, Rule Promotions item discount with code *sale2024*, and Rule Promotions cart discount with code *sale2024*, the `discounts.constituents` field in the response example will show the breakdown of the same promotion code used in both Promotions Standard and Rule Promotions.\n\n```json\n"data": [\n{\n "id": "98de010d-dd10-4fa5-a070-0b9bcdc72974",\n "type": "cart_item",\n "product_id": "5a4662d2-9a2b-4f6e-a215-2970db914b0c",\n "name": "sku1",\n "description": "sku1",\n "sku": "sku1",\n "slug": "sku1",\n "image": {\n "mime_type": "",\n "file_name": "",\n "href": ""\n },\n "quantity": 1,\n "manage_stock": false,\n "unit_price": {\n "amount": 10000,\n "currency": "USD",\n "includes_tax": false\n },\n "value": {\n "amount": 10000,\n "currency": "USD",\n "includes_tax": false\n },\n "discounts": [\n {\n "amount": {\n "amount": -2000,\n "currency": "USD",\n "includes_tax": false\n },\n "code": "sale2024",\n "id": "e4d929d5-f471-4317-9a86-a84a6c572b44",\n "promotion_source": "rule-promotion",\n "is_cart_discount": true\n },\n {\n "amount": {\n "amount": -1000,\n "currency": "USD",\n "includes_tax": false\n },\n "code": "sale2024",\n "id": "de19a043-a6da-4bde-b896-d17e16b77e25",\n "promotion_source": "rule-promotion"\n },\n {\n "amount": {\n "amount": -1000,\n "currency": "USD",\n "includes_tax": false\n },\n "code": "sale2024",\n "id": "509295ee-2971-45b6-801e-95df09756989"\n },\n {\n "amount": {\n "amount": -1000,\n "currency": "USD",\n "includes_tax": false\n },\n "code": "sale2024",\n "id": "ca79e606-7ecd-41ac-9478-af4c8c28c546",\n "promotion_source": "rule-promotion",\n "is_cart_discount": true\n }\n ],\n "links": {\n "product": "https://useast.api.elasticpath.com/v2/products/5a4662d2-9a2b-4f6e-a215-2970db914b0c"\n },\n "meta": {\n "display_price": {\n "with_tax": {\n "unit": {\n "amount": 5000,\n "currency": "USD",\n "formatted": "$50.00"\n },\n "value": {\n "amount": 5000,\n "currency": "USD",\n "formatted": "$50.00"\n }\n },\n "without_tax": {\n "unit": {\n "amount": 5000,\n "currency": "USD",\n "formatted": "$50.00"\n },\n "value": {\n "amount": 5000,\n "currency": "USD",\n "formatted": "$50.00"\n }\n },\n "tax": {\n "unit": {\n "amount": 0,\n "currency": "USD",\n "formatted": "$0.00"\n },\n "value": {\n "amount": 0,\n "currency": "USD",\n "formatted": "$0.00"\n }\n },\n "discount": {\n "unit": {\n "amount": -5000,\n "currency": "USD",\n "formatted": "-$50.00"\n },\n "value": {\n "amount": -5000,\n "currency": "USD",\n "formatted": "-$50.00"\n }\n },\n "without_discount": {\n "unit": {\n "amount": 10000,\n "currency": "USD",\n "formatted": "$100.00"\n },\n "value": {\n "amount": 10000,\n "currency": "USD",\n "formatted": "$100.00"\n }\n },\n "discounts": {\n "sale2024": {\n "amount": -5000,\n "currency": "USD",\n "formatted": "-$50.00",\n "constituents": {\n "509295ee-2971-45b6-801e-95df09756989": {\n "amount": -1000,\n "currency": "USD",\n "formatted": "-$10.00"\n },\n "ca79e606-7ecd-41ac-9478-af4c8c28c546": {\n "amount": -1000,\n "currency": "USD",\n "formatted": "-$10.00"\n },\n "de19a043-a6da-4bde-b896-d17e16b77e25": {\n "amount": -1000,\n "currency": "USD",\n "formatted": "-$10.00"\n },\n "e4d929d5-f471-4317-9a86-a84a6c572b44": {\n "amount": -2000,\n "currency": "USD",\n "formatted": "-$20.00"\n }\n }\n }\n }\n },\n "timestamps": {\n "created_at": "2024-05-24T18:00:58Z",\n "updated_at": "2024-05-24T18:00:58Z"\n }\n },\n "catalog_id": "09b9359f-897f-407f-89a2-702e167fe781",\n "catalog_source": "pim"\n}\n```',
335
+ description: "Lists the items in a cart, with each item's discounts broken down by promotion and any shipping group IDs. Can include tax items, custom discounts or promotions. Use it when you need the items rather than the cart's own details.",
336
336
  inputSchema: getCartItemsInput,
337
337
  annotations: {
338
338
  readOnlyHint: true,
@@ -369,7 +369,7 @@ const manageCartsTool = (options) => {
369
369
  name: "cart_checkout_order_manage_carts",
370
370
  config: {
371
371
  title: "Add Items to Cart",
372
- description: '### Add Product to Cart\n\nAdding a Product to Cart is the most common Cart action. If you want to add any custom products or promotions, you need to do that as a separate action.\n\n#### Dynamic Bundles\n\nA bundle is a purchasable product that is composed of a combination of two or more products that you want to sell together. You can create multiple components within a bundle. Each component can have one or more options. Each option is a product and a quantity. You can configure minimum and/or maximum values for the number of product options in a component that your shoppers can select. For example, you can enable a shopper to select 1 or more product options from a list of 10. These are called [dynamic bundles](/docs/api/pxm/products/products#dynamic-bundles).\n\nYour dynamic bundles are displayed in your published catalogs.\n\n1. Use the configure a shopper endpoint to allow shoppers to make their selections from a bundle.\n2. In the response of the configure a shopper, the `bundle_configuration` object contains the bundle selections a shopper has made.\n3. In the add a product to cart request, use the `bundle_configuration` object to add the customers selections to a cart.\n\n```json\n "bundle_configuration": {\n "selected_options": {\n "games": {\n "d7b79eb8-19d8-45ea-86ed-2324a604dd9c": 1\n },\n "toys": {\n "0192ccdd-6d33-4898-87d7-c4d87f2bf8ea": 1,\n "1aea6f97-f0d9-452c-b3c1-7fb5629ead82": 1\n }\n }\n}\n```\n\nWhen a cart is checked out, the options a shopper selected are added to the order. See [order items](/docs/api/carts/get-order-items).\n\n#### Personalized Products\n\nYou can allow shoppers to personalize their goods by adding custom text inputs to products directly. This feature is particularly useful for customizable items, such as personalized T-shirts or greeting cards. You can use this functionality by leveraging the `custom_inputs` attribute, and defining the details and validation rules for the custom text.\n\nFirst, you must configure a `custom_inputs` attribute when creating a new product or updating an existing product. Once you have defined your custom inputs on a product, you must configure the custom inputs in your orders.\n\nFor example, you may sell T-shirts that can have personalized text on the front and back of the shirt.\n\n```json\n {\n "data": {\n "type": "product",\n "attributes": {\n "custom_inputs": {\n "front": {\n "name": "T-Shirt Front",\n "validation_rules": [\n {\n "type": "string",\n "options": {\n "max_length": 50\n }\n }\n ],\n "required": false\n },\n "back": {\n "name": "T-Shirt Back",\n "validation_rules": [\n {\n "type": "string",\n "options": {\n "max_length": 50\n }\n }\n ],\n "required": false\n }\n }\n }\n }\n}\n```\n\nIf the same product has different `custom_inputs` attributes, then these are added as separate items in a cart.\n\nThe `custom_inputs` attribute is stored in the cart item and the text for `custom_input` must not exceed 255 characters in length. When a cart is checked out, the `custom_inputs` attribute becomes part of the order.\n\n#### Limitations on Usage of `custom_inputs` with Specific Promotion Types\n\nWhen you add products to a cart with `custom_inputs`, there are certain limitations on usage of the `custom_inputs` with the following promotion types:\n\n - For [Free Gift Promotions](/docs/api/promotions/create-a-promotion), you can add `custom_inputs` to gift items.\n - For [Fixed Bundle Discount Promotions](/docs/api/promotions/create-a-promotion), the promotion applies as long as the cart contains the bundle SKUs even when there are different `custom_inputs`.\n - For [X for Y Discount Promotion and X for amount discount promotion](/docs/api/promotions/create-a-promotion), the promotion applies when there are two SKUs with the same `custom_inputs`. The promotion does not apply when there are different `custom_inputs` and the SKUs are in different line items.\n\n#### Stock locations\n\nWhen adding to a cart it is possible to specify which [stock location](/docs/api/pxm/inventory_mli/inventories-introduction?#multi-location-inventories) should be used for tracking inventory for that product by specifying its slug in `location`. This might represent the warehouse a product is shipped from or the store holding the stock in a Buy Online Pick Up In Store scenario.\n\nEach line item is restricted to a single stock location. If the same product is added with a different location then the most recently-specified location will be used for the total quantity of that line item.\n\n:::note\n\n- Any requests to add a product to cart returns the collection of cart items.\n- [Tax items](/docs/api/carts/tax-items) may optionally be added with the product. Only administrators with [client_credentials access tokens](/docs/api/authentication/create-an-access-token) are able to do this. If included, they replace any existing taxes on the product.\n- The cart currency is set when the first item is added to the cart.\n- The product being added to the cart requires a price in the same currency as the other items in the cart. The API returns a 400 error if a price is not defined in the correct currency.\n- A cart can contain a maximum of 100 unique items. Items include products, custom items, tax items, and promotions.\n- There are a number of actions that happen to your inventory when checking out and paying for an order. For more information, see the [Inventory](/docs/api/pxm/inventory/inventories-introduction) documentation.\n\n:::\n\n### Including Resources\n\nWhen you make an `Add Product to Cart` request to the catalog-view service, you can obtain details of the component products. If you include the optional parameter `include=component_products` in the request, the response will include details for each component product.\n\nWhen a bundle with selected component products is added to a cart, the cart displays both the bundle pricing and component product IDs.\n\nThe response example is returned with a new field called `component_products` under `bundle_configuration`, which is a list of component products that the user has selected for dynamic bundles.\n\n| Parameter | Required | Description |\n|:------------------------|:-------------|:-------------------|\n| `component_products` | Optional | The component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle. |\n| `main_image` | Optional | The main images associated with a product. |\n| `files` | Optional | Any files associated with a product. |\n\n```json\n"bundle_configuration": {\n "selected_options": {\n "mixed-shirts": {\n "16a6cc14-6ebb-4156-9973-e6a0f92f5731": 3,\n "55037cc5-f382-4039-95c6-1e04ac0351d3": 2,\n "standard-shirts"\n "70f1c9d2-c580-4839-bd6c-a0a9b91d5159": 5\n }\n },\n "component_products": [\n {\n "id": "16a6cc14-6ebb-4156-9973-e6a0f92f5731",\n "type": "product",\n "attributes": {\n "name": "Red T-shirt",\n "description": "Standard red t-shirt.",\n "slug": "red-t-shirt-slug",\n "sku": "red-t-shirt-sku",\n "status": "live",\n "commodity_type": "physical"\n },\n "meta": {\n "display_price": {\n "without_tax": {\n "amount": 500,\n "currency": "USD",\n "formatted": "$5.00"\n }\n }\n }\n },\n {\n "id": "55037cc5-f382-4039-95c6-1e04ac0351d3",\n "type": "product",\n "attributes": {\n "name": "Blue T-shirt",\n "description": "Standard blue t-shirt.",\n "slug": "blue-t-shirt-slug",\n "sku": "blue-t-shirt-sku",\n "status": "live",\n "commodity_type": "physical"\n },\n "meta": {\n "display_price": {\n "without_tax": {\n "amount": 500,\n "currency": "USD",\n "formatted": "$5.00"\n }\n }\n }\n },\n {\n "id": "70f1c9d2-c580-4839-bd6c-a0a9b91d5159",\n "type": "product",\n "attributes": {\n "name": "White T-shirt",\n "description": "Standard white t-shirt.",\n "slug": "white-t-shirt-slug",\n "sku": "white-t-shirt-sku",\n "status": "live",\n "commodity_type": "physical"\n },\n "meta": {\n "display_price": {\n "without_tax": {\n "amount": 500,\n "currency": "USD",\n "formatted": "$5.00"\n }\n }\n }\n }\n ]\n}\n```\n\nSee [Including Resources](https://elasticpath.dev/guides/Getting-Started/includes).\n\n### Add Subscription to Cart\n\nTo add a subscription to your cart, you need to provide the ID of the subscription offering, and the ID of the pricing option and plan within that offering that you want to subscribe to.\n\n```json\n {\n {\n "data": {\n "id": "5b9be99f-1c94-4ddd-9718-81adab0cc3e0",\n "type": "subscription_item",\n "quantity": 1,\n "subscription_configuration": {\n "plan": "dfa31307-748c-4369-8571-709f924a0807",\n "pricing_option": "40010dde-2f38-489b-8b3f-14a13cbfb431"\n }\n }\n }\n```\n\nThe price of the subscription item in the cart reflects the cost of the subscription\'s initial billing period. Once the cart has been checked out and the order paid for, the subscription will be automatically created in the subscriptions service.\n\n### Add Custom Item to Cart\n\nYou can add a custom item to the cart when you don\'t manage things like shipping, taxes and inventory in Commerce.\n\nFor [Shipping Groups](/docs/ship-groups/shipping-groups/index), once you have created a [cart shipping group](/docs/ship-groups/shipping-groups/shipping-groups-api/create-cart-shipping-group), you need to link it to the cart items. This is important, because it is necessary to associate items with shipping groups in order to include shipping groups in the corresponding cart, order, and totals.\n\n:::note\n\n- Custom Cart Items are available when using [implicit access tokens](/docs/api/authentication/create-an-access-token). Ensure that you always check each order has the correct details for each item, most importantly, price.\n\n:::\n\n### Add Promotion to Cart\n\nYou can use the Promotions API to apply discounts to your cart as a special cart item type. Any requests to add a product to cart will return a collection of cart items.\n\n There are certain limitations on usage of the `custom_inputs` attribute with some promotion types. See [Limitations on Usage of `custom_inputs` with Specific Promotion Types](/docs/api/carts/manage-carts#limitations-on-usage-of-custom_inputs-with-specific-promotion-types).\n\nTo remove promotion from the cart via the promotion code, see [Delete Promotion Code from Cart](/docs/api/carts/delete-a-promotion-via-promotion-code).\n\n### Re-order\n\nFrom a shopper\'s order history, they can add the items from a previous order into their carts. Shoppers can add items regardless of past order status, such as incomplete or not paid. For more information, see [Orders](/docs/api/carts/orders).\n\n:::note\n - Any requests to add an item to cart return a collection of [cart items](/docs/api/carts/cart-items).\n - A cart can contain a maximum of 100 unique items. Items include products, custom items, and promotions.\n - When a shopper creates a cart and re-orders items from an order with properties such as custom attributes, custom discounts, and payment intent ID, these properties will remain unchanged in the original cart.\n - Custom items do not exist in catalogs, and therefore cannot be reordered.\n:::\n\n### Merging Carts\n\nA shopper can have multiple carts, and the system may automatically merge items from an anonymous cart into the shopper\'s registered cart when they sign in. For example, if a shopper has an existing cart with items `A`, `B` and `C`, and later adds items `D` and `E` while not signed in, the system can merge these carts when the shopper signs in. After the carts merge, the cart contains items `A`, `B`, `C`, `D` and `E`.\n\nIf any items are duplicated from the anonymous cart to the registered cart, their quantities are incremented accordingly. For example, if a shopper\'s existing cart with items `A`, `B` and `C`, and they later add two more `A` items and one `B` item while not signed in, the system will merge the carts when the shopper signs in. The existing cart will now contain three `A` items, two `B` items, and one `C` item.\n\n:::note\n\nWhen the system merges items from one cart into another cart, properties such as custom attributes, custom discounts, and payment intent ID will remain unchanged in the original cart.\n\n:::\n\n### Best Practices\n\nWe recommend to include a unique `sku` code within the request body while adding custom items to carts. If the same `sku` is used for multiple products, they are merged into a single line item.\n\nFor example, if a cart consists of the following items:\n\n- `product-1` with quantity 1 and sku code as `sku-1`\n- `product-2` with quantity 1 and sku code as `sku-1`\n- `product-3` with quantity 1 and sku code as `sku-2`.\n\nThe following response is returned where it combines all products with the same sku codes into a single line item, while products with a unique sku codes are represented as separate items:\n\n```json\n{\n "data": [\n {\n "id": "c58760f4-8889-4719-b34d-be1f1d11ae59",\n "type": "custom_item",\n "name": "product-1",\n "description": "My first custom item!",\n "sku": "sku-1",\n "slug": "",\n "image": {\n "mime_type": "",\n "file_name": "",\n "href": ""\n },\n "quantity": 2,\n "manage_stock": false,\n "unit_price": {\n "amount": 20000,\n "currency": "USD",\n "includes_tax": true\n },\n "value": {\n "amount": 40000,\n "currency": "USD",\n "includes_tax": true\n },\n "links": {},\n "meta": {\n "display_price": {\n "with_tax": {\n "unit": {\n "amount": 20000,\n "currency": "USD",\n "formatted": "$200.00"\n },\n "value": {\n "amount": 40000,\n "currency": "USD",\n "formatted": "$400.00"\n }\n },\n "without_tax": {\n "unit": {\n "amount": 20000,\n "currency": "USD",\n "formatted": "$200.00"\n },\n "value": {\n "amount": 40000,\n "currency": "USD",\n "formatted": "$400.00"\n }\n },\n "tax": {\n "unit": {\n "amount": 0,\n "currency": "USD",\n "formatted": "$0.00"\n },\n "value": {\n "amount": 0,\n "currency": "USD",\n "formatted": "$0.00"\n }\n },\n "discount": {\n "unit": {\n "amount": 0,\n "currency": "USD",\n "formatted": "$0.00"\n },\n "value": {\n "amount": 0,\n "currency": "USD",\n "formatted": "$0.00"\n }\n },\n "without_discount": {\n "unit": {\n "amount": 20000,\n "currency": "USD",\n "formatted": "$200.00"\n },\n "value": {\n "amount": 40000,\n "currency": "USD",\n "formatted": "$400.00"\n }\n }\n },\n "timestamps": {\n "created_at": "2023-05-02T16:28:11Z",\n "updated_at": "2023-05-02T16:28:18Z"\n }\n }\n ]\n ```',
372
+ description: "Adds to a cart: catalog products or bundles by product ID, custom items, subscription items, promotion codes, the items of a previous order (re-order), or the items of another cart (merge). Use it for every kind of addition. To change items already in the cart, update them instead.",
373
373
  inputSchema: manageCartsInput,
374
374
  annotations: {
375
375
  readOnlyHint: false,
@@ -406,7 +406,7 @@ const bulkUpdateItemsInCartTool = (options) => {
406
406
  name: "cart_checkout_order_bulk_update_items_in_cart",
407
407
  config: {
408
408
  title: "Bulk Update Items in Cart",
409
- description: "The bulk update feature allows shoppers to update an array of items to their cart in one action, rather than updating each item one at a time. Shoppers can update quantity and shipping group details in bulk requests. This minimizes the time for shoppers while updating items to their cart. Shoppers can even update multiple items with the same or different shipping groups to their cart.\n\nWhen you update multiple items that qualify for free gifts in the cart, the corresponding free gifts for all eligible products are also automatically updated in the cart.",
409
+ description: "Updates several existing cart items in one request: their quantity, shipping group or custom inputs. Free gifts for eligible products update automatically. To change a single item, update that item instead.",
410
410
  inputSchema: bulkUpdateItemsInCartInput,
411
411
  annotations: {
412
412
  readOnlyHint: false,
@@ -442,7 +442,7 @@ const deleteACartItemTool = (options) => {
442
442
  name: "cart_checkout_order_delete_a_cart_item",
443
443
  config: {
444
444
  title: "Delete a Cart Item",
445
- description: "Use this endpoint to delete a cart item.",
445
+ description: "Removes one item from a cart, by cart ID and cart item ID; the rest of the cart stays. To empty the whole cart, delete all its items instead.",
446
446
  inputSchema: deleteACartItemInput,
447
447
  annotations: {
448
448
  readOnlyHint: false,
@@ -479,7 +479,7 @@ const updateACartItemTool = (options) => {
479
479
  name: "cart_checkout_order_update_a_cart_item",
480
480
  config: {
481
481
  title: "Update a Cart Item",
482
- description: "You can easily update a cart item. A successful update returns the cart items.",
482
+ description: "Updates one item in a cart, such as its quantity or custom inputs, by cart ID and cart item ID, and returns the cart's items. To update several items in one request, update them in bulk instead.",
483
483
  inputSchema: updateACartItemInput,
484
484
  annotations: {
485
485
  readOnlyHint: false,
@@ -517,7 +517,7 @@ const deleteAccountCartAssociationTool = (options) => {
517
517
  name: "cart_checkout_order_delete_account_cart_association",
518
518
  config: {
519
519
  title: "Delete Account Cart Association",
520
- description: "You can delete an association between an account and a cart.",
520
+ description: "Removes the association between a cart and an account, so the account no longer reaches the cart through it. The cart itself is not deleted.",
521
521
  inputSchema: deleteAccountCartAssociationInput,
522
522
  annotations: {
523
523
  readOnlyHint: false,
@@ -555,7 +555,7 @@ const createAccountCartAssociationTool = (options) => {
555
555
  name: "cart_checkout_order_create_account_cart_association",
556
556
  config: {
557
557
  title: "Create an Account Cart Association",
558
- description: "You can create associations between an account and one or more carts. After cart associations exist for an account, the account can access those carts across any device.",
558
+ description: "Associates a cart with an account, so the account can reach the cart from any device. Use it for an account; for an individual customer, associate the cart with the customer instead.",
559
559
  inputSchema: createAccountCartAssociationInput,
560
560
  annotations: {
561
561
  readOnlyHint: false,
@@ -593,7 +593,7 @@ const deleteCustomerCartAssociationTool = (options) => {
593
593
  name: "cart_checkout_order_delete_customer_cart_association",
594
594
  config: {
595
595
  title: "Delete Customer Cart Association",
596
- description: "You can delete an association between a customer and a cart.",
596
+ description: "Removes the association between a cart and a customer, so the customer no longer reaches the cart through it. The cart itself is not deleted.",
597
597
  inputSchema: deleteCustomerCartAssociationInput,
598
598
  annotations: {
599
599
  readOnlyHint: false,
@@ -631,7 +631,7 @@ const createCustomerCartAssociationTool = (options) => {
631
631
  name: "cart_checkout_order_create_customer_cart_association",
632
632
  config: {
633
633
  title: "Create a Customer Cart Association",
634
- description: "You can create associations between a customer and one or more carts. After cart associations exist for a customer, the customer can access those carts across any device.",
634
+ description: "Associates a cart with a customer, so the customer can reach the cart from any device. Use it for an individual customer; for an account, associate the cart with the account instead.",
635
635
  inputSchema: createCustomerCartAssociationInput,
636
636
  annotations: {
637
637
  readOnlyHint: false,
@@ -667,7 +667,7 @@ const deleteAPromotionViaPromotionCodeTool = (options) => {
667
667
  name: "cart_checkout_order_delete_a_promotion_via_promotion_code",
668
668
  config: {
669
669
  title: "Delete a Promotion via Promotion Code",
670
- description: "You can remove promotion code from a cart if it was applied manually. This endpoint does not work if the promotion is applied automatically.",
670
+ description: "Removes a promotion code from a cart. Works only for codes applied manually; promotions applied automatically cannot be removed this way.",
671
671
  inputSchema: deleteAPromotionViaPromotionCodeInput,
672
672
  annotations: {
673
673
  readOnlyHint: false,
@@ -703,8 +703,8 @@ const addTaxItemToCartTool = (options) => {
703
703
  return {
704
704
  name: "cart_checkout_order_add_tax_item_to_cart",
705
705
  config: {
706
- title: "Add Tax Item to Cart",
707
- description: "Use this endpoint to add a tax item to a cart.\n\n:::note\n\nThere is a soft limit of 5 unique tax items per cart item at any one time.\n\n:::",
706
+ title: "Add Tax Item to Cart Item",
707
+ description: "Adds a tax item to one cart item. Use it for a single cart item, not a bundle component or many items at once. A cart item can have up to 5 unique tax items.",
708
708
  inputSchema: addTaxItemToCartInput,
709
709
  annotations: {
710
710
  readOnlyHint: false,
@@ -741,7 +741,7 @@ const addTaxItemToCartItemComponentTool = (options) => {
741
741
  name: "cart_checkout_order_add_tax_item_to_cart_item_component",
742
742
  config: {
743
743
  title: "Add Tax Item to Bundle Component",
744
- description: "Use this endpoint to add a tax item to a specific bundle component (component product) within a cart item.\n\n:::note\n\nThere is a soft limit of 5 unique tax items per component product at any one time.\n\n:::",
744
+ description: "Adds a tax item to one bundle component product inside a cart item. Use it only for bundle components; for a whole cart item, add the tax to the item. A component product can have up to 5 unique tax items.",
745
745
  inputSchema: addTaxItemToCartItemComponentInput,
746
746
  annotations: {
747
747
  readOnlyHint: false,
@@ -777,7 +777,7 @@ const deleteTaxItemFromCartItemComponentTool = (options) => {
777
777
  name: "cart_checkout_order_delete_tax_item_from_cart_item_component",
778
778
  config: {
779
779
  title: "Delete Tax Item from Bundle Component",
780
- description: "Use this endpoint to delete a tax item from a specific bundle component (component product) within a cart item.",
780
+ description: "Deletes a tax item from one bundle component product inside a cart item. For a tax item on the cart item itself, delete that instead.",
781
781
  inputSchema: deleteTaxItemFromCartItemComponentInput,
782
782
  annotations: {
783
783
  readOnlyHint: false,
@@ -814,7 +814,7 @@ const updateTaxItemFromCartItemComponentTool = (options) => {
814
814
  name: "cart_checkout_order_update_tax_item_from_cart_item_component",
815
815
  config: {
816
816
  title: "Update Tax Item on Bundle Component",
817
- description: "Use this endpoint to update a tax item on a specific bundle component (component product) within a cart item. To change tax value from `rate` to `amount`, set `rate` to `null`, then set `amount` value and vice versa.",
817
+ description: "Updates a tax item on one bundle component product inside a cart item. To switch between rate and amount, set the current one to null and then set the other. For a tax item on the cart item itself, update that instead.",
818
818
  inputSchema: updateTaxItemFromCartItemComponentInput,
819
819
  annotations: {
820
820
  readOnlyHint: false,
@@ -850,7 +850,7 @@ const bulkDeleteTaxItemsFromCartTool = (options) => {
850
850
  name: "cart_checkout_order_bulk_delete_tax_items_from_cart",
851
851
  config: {
852
852
  title: "Bulk Delete Tax Items from Cart",
853
- description: 'Use this endpoint to bulk delete all tax items from all cart items and bundle component products in the cart.\n\n:::warning\n\nThis operation will remove ALL tax items from:\n- All cart items in the cart\n- All bundle component products within bundle cart items\n\n:::\n\n### Behavior\n\n- Removes all tax items from every cart item\n- Removes all tax items from every component product in bundle cart items\n- If no tax items exist anywhere in the cart, returns a 404 error\n\n### Errors\n\n`404 Not Found`\n\nIf no tax items exist in the cart (on cart items or component products):\n\n```json\n{\n "status": 404,\n "title": "Resource Not Found",\n "detail": "No tax items exist in the cart"\n}\n```',
853
+ description: "Deletes every tax item in a cart, from all cart items and all bundle component products. Returns 404 if the cart has no tax items. To remove a single tax item, delete it on its item or component.",
854
854
  inputSchema: bulkDeleteTaxItemsFromCartInput,
855
855
  annotations: {
856
856
  readOnlyHint: false,
@@ -887,7 +887,7 @@ const bulkAddTaxItemsToCartTool = (options) => {
887
887
  name: "cart_checkout_order_bulk_add_tax_items_to_cart",
888
888
  config: {
889
889
  title: "Bulk Add Tax Items to Cart",
890
- description: 'Use this endpoint to bulk add tax items to cart items and bundle component products.\n\n:::note\n\nA cart item can only have a maximum of five tax items.\nA bundle component product can only have a maximum of five tax items.\n\n:::\n\n### Bundle Component Taxes\n\nTo add tax items to bundle component products, include a `meta` object with `component_product_id` in each tax item:\n\n```json\n{\n "data": [\n {\n "type": "tax_item",\n "code": "GST",\n "name": "Goods and Services Tax",\n "rate": 0.1,\n "meta": {\n "component_product_id": "12345678-1234-5678-9012-123456789012"\n },\n "relationships": {\n "item": {\n "data": {\n "type": "cart_item",\n "id": "cart-item-id"\n }\n }\n }\n }\n ]\n}\n```\n\n### Errors\n\n\n`422 Unprocessable Entity`\n\n\nIn this example, when `options.add_all_or_nothing` is set to `true` and if\none of cart items is not found or has reached its maximum tax item limit,\nthe following error response is returned:\n\n\n```json\n\n{\n "status": 422,\n "title": "Add all or nothing.",\n "detail": "Add all or nothing set to (true). Could not bulk add tax items to cart."\n }\n\n```\n\n\nIn this example, if you add more than five tax items to the same cart item,\nthe following error response is returned:\n\n\n```json\n\n{\n "status": 422,\n "title": "Tax item not added to cart item.",\n "detail": "Cannot exceed tax item limit of (5) on cart item.",\n "meta": {\n "id": "f88e6370-cb35-40b2-a998-c759f31dec0a"\n }\n }\n```\n\n\n`404`\n\n\nIn this example, if there is a mismatch between `cart_item`/`custom_item`\nand the `relationships.item.data.type` specified in the bulk add tax item,\nthe following error response is returned:\n\n\n```json\n\n{\n "data": [],\n "errors": [\n {\n "status": 404,\n "title": "Tax item not added to cart item.",\n "detail": "Mismatch between bulk tax item type(cart_item) and cart item type(custom_item).",\n "meta": {\n "id": "56aab5d1-1dd4-45ed-88ed-4d0cc396b62d"\n }\n },\n {\n "status": 404,\n "title": "Tax item not added to cart item.",\n "detail": "Mismatch between bulk tax item type(cart_item) and cart item type(custom_item).",\n "meta": {\n "id": "56aab5d1-1dd4-45ed-88ed-4d0cc396b62d"\n }\n }\n ]\n}\n\n```',
890
+ description: "Adds tax items to many cart items and bundle component products in one request; a tax item with meta.component_product_id targets a bundle component. Each cart item and each component product can have at most 5 tax items. With add_all_or_nothing set, one failure stops the whole request.",
891
891
  inputSchema: bulkAddTaxItemsToCartInput,
892
892
  annotations: {
893
893
  readOnlyHint: false,
@@ -922,8 +922,8 @@ const deleteATaxItemTool = (options) => {
922
922
  return {
923
923
  name: "cart_checkout_order_delete_a_tax_item",
924
924
  config: {
925
- title: "Delete a Tax Item",
926
- description: "Use this endpoint to delete a tax item.",
925
+ title: "Delete Tax Item from Cart Item",
926
+ description: "Deletes one tax item from a cart item, by tax item ID. For a tax item on a bundle component, delete the component's tax item instead; to remove every tax item in the cart, delete them in bulk.",
927
927
  inputSchema: deleteATaxItemInput,
928
928
  annotations: {
929
929
  readOnlyHint: false,
@@ -959,8 +959,8 @@ const updateATaxItemTool = (options) => {
959
959
  return {
960
960
  name: "cart_checkout_order_update_a_tax_item",
961
961
  config: {
962
- title: "Update a Tax Item",
963
- description: "Use this endpoint to update a tax item. To change tax value from `rate` to `amount`, set `rate` to `null`, then set `amount` value and vice versa.",
962
+ title: "Update Tax Item on Cart Item",
963
+ description: "Updates a tax item on a cart item. To switch between rate and amount, set the current one to null and then set the other. For a tax item on a bundle component, update the component's tax item instead.",
964
964
  inputSchema: updateATaxItemInput,
965
965
  annotations: {
966
966
  readOnlyHint: false,
@@ -996,7 +996,7 @@ const bulkDeleteCustomDiscountsFromCartTool = (options) => {
996
996
  name: "cart_checkout_order_bulk_delete_custom_discounts_from_cart",
997
997
  config: {
998
998
  title: "Bulk Delete Custom Discounts From Cart",
999
- description: "Use this endpoint to bulk delete custom discounts from cart.",
999
+ description: "Deletes the custom discounts on a cart in one request. To delete a single custom discount, delete it by ID on the cart or the cart item.",
1000
1000
  inputSchema: bulkDeleteCustomDiscountsFromCartInput,
1001
1001
  annotations: {
1002
1002
  readOnlyHint: false,
@@ -1033,7 +1033,7 @@ const bulkAddCustomDiscountsToCartTool = (options) => {
1033
1033
  name: "cart_checkout_order_bulk_add_custom_discounts_to_cart",
1034
1034
  config: {
1035
1035
  title: "Bulk Add Custom Discounts to Cart",
1036
- description: "The default value for custom discounts on both the cart and cart items is set to 5 if this parameter is not configured in the store. To verify the custom discount limit value, call [Get all settings](/docs/api/settings/get-v-2-settings) endpoint.\n\nTo increase the custom discount value, contact [Elastic Path Support team](https://support.elasticpath.com/hc/en-us).\n\nCustom discounts cannot be combined with Elastic Path promotions. If the cart already contains Elastic Path promotions, remove them before adding custom discounts.",
1036
+ description: "Adds several custom discounts to a cart in one request. Custom discounts cannot be combined with Elastic Path promotions in the same cart. Unless the store sets another limit, the cart and each cart item can hold at most 5 custom discounts.",
1037
1037
  inputSchema: bulkAddCustomDiscountsToCartInput,
1038
1038
  annotations: {
1039
1039
  readOnlyHint: false,
@@ -1069,7 +1069,7 @@ const deleteCustomDiscountFromCartTool = (options) => {
1069
1069
  name: "cart_checkout_order_delete_custom_discount_from_cart",
1070
1070
  config: {
1071
1071
  title: "Delete Custom Discount From Cart",
1072
- description: "Use this endpoint to delete custom discount from cart.",
1072
+ description: "Deletes one custom discount that applies to the whole cart, by custom discount ID. For a discount on a single cart item, delete the cart item's discount instead.",
1073
1073
  inputSchema: deleteCustomDiscountFromCartInput,
1074
1074
  annotations: {
1075
1075
  readOnlyHint: false,
@@ -1106,7 +1106,7 @@ const updateCustomDiscountForCartTool = (options) => {
1106
1106
  name: "cart_checkout_order_update_custom_discount_for_cart",
1107
1107
  config: {
1108
1108
  title: "Update Custom Discount For Cart",
1109
- description: "Use this endpoint to update a custom discount in your cart.",
1109
+ description: "Updates one custom discount that applies to the whole cart, by custom discount ID. For a discount on a single cart item, update the cart item's discount instead.",
1110
1110
  inputSchema: updateCustomDiscountForCartInput,
1111
1111
  annotations: {
1112
1112
  readOnlyHint: false,
@@ -1143,7 +1143,7 @@ const addCustomDiscountToCartItemTool = (options) => {
1143
1143
  name: "cart_checkout_order_add_custom_discount_to_cart_item",
1144
1144
  config: {
1145
1145
  title: "Add Custom Discount To Cart Item",
1146
- description: "Use this endpoint to add a custom discount to cart item. Custom discounts cannot be combined with Elastic Path promotions. If the cart already contains Elastic Path promotions, remove them before adding custom discounts.",
1146
+ description: "Adds a custom discount to one cart item. Custom discounts cannot be combined with Elastic Path promotions, so remove any promotions from the cart first. To add several discounts at once, add them to the cart in bulk.",
1147
1147
  inputSchema: addCustomDiscountToCartItemInput,
1148
1148
  annotations: {
1149
1149
  readOnlyHint: false,
@@ -1179,7 +1179,7 @@ const deleteCustomDiscountFromCartItemTool = (options) => {
1179
1179
  name: "cart_checkout_order_delete_custom_discount_from_cart_item",
1180
1180
  config: {
1181
1181
  title: "Delete Custom Discount From Cart Item",
1182
- description: "Use this endpoint to delete custom discount from cart item.",
1182
+ description: "Deletes one custom discount from a cart item, by custom discount ID. For a discount that applies to the whole cart, delete the cart's discount instead.",
1183
1183
  inputSchema: deleteCustomDiscountFromCartItemInput,
1184
1184
  annotations: {
1185
1185
  readOnlyHint: false,
@@ -1216,7 +1216,7 @@ const updateCustomDiscountForCartItemTool = (options) => {
1216
1216
  name: "cart_checkout_order_update_custom_discount_for_cart_item",
1217
1217
  config: {
1218
1218
  title: "Update Custom Discount For Cart Item",
1219
- description: "Use this endpoint to update a custom discount in your cart item.",
1219
+ description: "Updates one custom discount on a cart item, by custom discount ID. For a discount that applies to the whole cart, update the cart's discount instead.",
1220
1220
  inputSchema: updateCustomDiscountForCartItemInput,
1221
1221
  annotations: {
1222
1222
  readOnlyHint: false,
@@ -1252,7 +1252,7 @@ const getShippingGroupsTool = (options) => {
1252
1252
  name: "cart_checkout_order_get_shipping_groups",
1253
1253
  config: {
1254
1254
  title: "Retrieve all shipping groups for a cart",
1255
- description: "Retrieve all shipping groups for a cart",
1255
+ description: "Lists the shipping groups on a cart. This is for carts before checkout; an order's shipping groups are read from the order.",
1256
1256
  inputSchema: getShippingGroupsInput,
1257
1257
  annotations: {
1258
1258
  readOnlyHint: true,
@@ -1289,7 +1289,7 @@ const createShippingGroupTool = (options) => {
1289
1289
  name: "cart_checkout_order_create_shipping_group",
1290
1290
  config: {
1291
1291
  title: "Create a new shipping group for a cart",
1292
- description: "Create a new shipping group for a cart",
1292
+ description: "Creates a shipping group on a cart, which cart items can then be assigned to. This is for carts before checkout; an order has its own shipping groups.",
1293
1293
  inputSchema: createShippingGroupInput,
1294
1294
  annotations: {
1295
1295
  readOnlyHint: false,
@@ -1325,7 +1325,7 @@ const deleteCartShippingGroupTool = (options) => {
1325
1325
  name: "cart_checkout_order_delete_cart_shipping_group",
1326
1326
  config: {
1327
1327
  title: "Delete Cart Shipping Group",
1328
- description: "Deletes a shipping group from a cart. You cannot delete a shipping group that is attached to cart items.\nYou must first remove the shipping group from all cart items before deleting the shipping group.",
1328
+ description: "Deletes a shipping group from a cart. It fails while any cart item is attached to the group, so remove the group from those items first. This is for carts only, not orders.",
1329
1329
  inputSchema: deleteCartShippingGroupInput,
1330
1330
  annotations: {
1331
1331
  readOnlyHint: false,
@@ -1361,7 +1361,7 @@ const getShippingGroupByIdTool = (options) => {
1361
1361
  name: "cart_checkout_order_get_shipping_group_by_id",
1362
1362
  config: {
1363
1363
  title: "Retrieve a specific shipping group for a cart",
1364
- description: "Retrieve a specific shipping group for a cart",
1364
+ description: "Gets one shipping group on a cart by its ID. This is for carts before checkout; an order's shipping groups are read from the order.",
1365
1365
  inputSchema: getShippingGroupByIdInput,
1366
1366
  annotations: {
1367
1367
  readOnlyHint: true,
@@ -1398,7 +1398,7 @@ const updateShippingGroupTool = (options) => {
1398
1398
  name: "cart_checkout_order_update_shipping_group",
1399
1399
  config: {
1400
1400
  title: "Update a shipping group for a cart",
1401
- description: "Update a specific shipping group for a cart",
1401
+ description: "Updates one shipping group on a cart. This is for carts before checkout; after checkout, update the shipping group on the order.",
1402
1402
  inputSchema: updateShippingGroupInput,
1403
1403
  annotations: {
1404
1404
  readOnlyHint: false,
@@ -1435,7 +1435,7 @@ const createCartPaymentIntentTool = (options) => {
1435
1435
  name: "cart_checkout_order_create_cart_payment_intent",
1436
1436
  config: {
1437
1437
  title: "Create Stripe Payment Intent for a Cart",
1438
- description: "The Cart Payment Intent feature enables the creation of a Stripe Payment Intent specifically tied to a shopping cart and its subsequent order. This allows Payment Intent users to track payment details from the cart stage and seamlessly maintain consistency in payment information throughout the order stage. Using these features, you can create Payment Intents for their carts, update Payment Intents with final cart details, and synchronize Payment Intents from Stripe to Commerce.\n\n:::note\n\n- Typically, in Commerce, inventory is allocated at the time of payment initiation after an order is created. However, in the case of Cart Payment Intent, information about the payment is received only upon synchronizing the order from Stripe to Commerce. This may happen after the payment is completed. Therefore, there might be a delay between the payment made and allocation, increasing the chance of paying for items that are not in stock.\n- There are certain fields you can choose to set up when [creating a payment intent](https://stripe.com/docs/api/payment_intents/create). However, if you decide to update a payment intent, the available options may not be the same as those allowed while creating a payment intent. See [updating a payment intent](https://stripe.com/docs/api/payment_intents/update).\n\n:::\n\nThe following steps outline the workflow associated with the Payment Intent:\n\n1. [Add items to cart](/docs/api/carts/manage-carts#add-custom-item-to-cart).\n1. [Create a Payment Intent for the cart](/docs/api/carts/create-cart-payment-intent). The Payment Intent is created in Stripe, reflecting the cart and transaction details, including currency, amounts, payment type, and any optional Stripe details. The Payment Intent ID is generated and linked to the cart.\n1. [Update a Payment Intent](/docs/carts-orders/update-cart-payment-intent). This step is optional but becomes necessary when there are changes in the cart details at the time of payment. It ensures the Payment Intent accurately reflects the current cart details when processing the payments on the front end.\n1. [Checkout the cart](/docs/api/carts/checkout). An unpaid order is created, and the Payment Intent ID is linked to the order.\n1. [Confirm the order](/docs/carts-orders/confirm-an-order). This is important because after checkout, it is essential to confirm the Payment Intent and synchronize it with Commerce. This results in a corresponding transaction and change in order statuses in Commerce. Additionally, the Payment Intent ID is removed from the order once it is linked via the transaction.\n\n### Best Practices\n\nWe recommend you follow these practices to maintain consistency and accuracy when using Cart Payment Intent.\n\n- After checkout, we recommend clearing the shopping cart. You can achieve this using a [Delete a cart](/docs/api/carts/delete-a-cart) endpoint or [Update a cart](/docs/api/carts/update-a-cart) to remove the Payment Intent ID. This helps to avoid potential issues where subsequent checkouts for the same cart might unintentionally use the previous Stripe Payment Intent ID.\n- If it is not reasonable to clear the cart immediately after checkout due to several subsequent, duplicate checkouts to the same cart, ensure that you only synchronize the Payment Intent when finalizing the order. Each order confirmation is unaware of the others, and syncing Payment Intent IDs for each confirmation can lead to duplicate transactions in Commerce. In other words, if you synchronize Payment Intents for earlier versions of a repeated checkout, you'll end up with multiple orders from the same cart, each having transactions linked to the same Payment Intent.\n- To pay the entire amount at once, use the [Update Cart Payment Intent](/docs/carts-orders/update-cart-payment-intent) endpoint to update the Stripe Payment Intent with the final cart details when preparing to take the payment. Doing so, ensures that the Payment Intent accurately reflects the current cart details when processing payments on the front end. We do not recommend calling the [Update Cart Payment Intent](/docs/carts-orders/update-cart-payment-intent) for each individual change in the cart, as this can lead to more requests and may slow down the front-end performance.",
1438
+ description: "Creates a Stripe Payment Intent for a cart, linked to the cart and, at checkout, to the order. Use it before checkout when paying through Stripe Payment Intents; after checkout, confirm the order to sync the payment into a transaction. To change an existing intent, update it instead.",
1439
1439
  inputSchema: createCartPaymentIntentInput,
1440
1440
  annotations: {
1441
1441
  readOnlyHint: false,
@@ -1472,7 +1472,7 @@ const updateCartPaymentIntentTool = (options) => {
1472
1472
  name: "cart_checkout_order_update_cart_payment_intent",
1473
1473
  config: {
1474
1474
  title: "Update a Payment Intent on a Cart",
1475
- description: "Updates the payment information for a specific payment intent on a cart.",
1475
+ description: "Updates the Stripe Payment Intent on a cart so it matches the final cart details. Call it once when ready to take payment, not after every cart change.",
1476
1476
  inputSchema: updateCartPaymentIntentInput,
1477
1477
  annotations: {
1478
1478
  readOnlyHint: false,
@@ -1509,8 +1509,8 @@ const checkoutApiTool = (options) => {
1509
1509
  return {
1510
1510
  name: "cart_checkout_order_checkout_api",
1511
1511
  config: {
1512
- title: "Checkout API",
1513
- description: 'When a Cart is ready for checkout, you can convert the cart to an order. The cart remains and can be modified and checked out again if required.\n\nA cart can be checked out with a customer ID, customer object, or with an account by authenticating with the `Client Credentials Token`.\n\nAfter a successful checkout, a response that contains the order is returned. If the cart is linked to a shipping group, the shipping group is also associated with the order after checkout.\n\nYou can checkout using one of the following methods:\n- **Customer ID**: You can checkout a cart with an existing customer ID.\n- **Guest Checkout** (Checkout with Customer Object): You can checkout a cart with an associated customer name and email.\n- **Checkout with Account**: The shopper authenticates with the `Client Credentials` Token.\n- **Checkout with Account Management Authentication Token**: The shopper authenticates with the `Implicit Token` and the `EP-Account-Management-Authentication-Token`.\n\n:::note\n\n- The cart currency is set when the first item is added to the cart.\n- The product being added to the cart requires a price in the same currency as the other items in the cart. The API returns a 400 error if a price is not defined in the correct currency.\n- To ensure that a free gift is automatically applied to an order, set the promotion to automatic. The checkout process will not be successful if free gift items are out of stock. See [Errors](#errors) section.\n\n:::\n\n:::caution\n\n- By default, carts are automatically deleted 7 days after the last update. You can change this setting by [updating cart settings](/docs/api/carts/put-v-2-settings-cart).\n- Your inventory is modified during checkout and payment of an order. For more information about the changes in the inventory, see the [Inventory](/docs/api/pxm/inventory/inventories-introduction) section.\n\n:::\n\n You can pass `order_number` and `external_ref` in the checkout endpoint or when [updating an order](/docs/api/carts/update-an-order). The `order_number` is an optional, user-managed field that is used as an alternative to `order_id`. When processing transactions through Authorize.net, the `order_number` is sent instead of the `order_id`, and it will appear in the invoice number section. If no `order_number` is provided, the `order_id` is sent to Authorize.net on payment by default. There are no duplication restrictions on the `order_number` value.\n\n### Next Steps\n\nAfter a cart has been converted to an Order using either of the previous methods, you most likely want to capture payment for order. See [Paying for an Order](/docs/api/carts/payments).\n\n### Errors\n\nThe following error response is returned during checkout when an eligible item is added to the cart, and the free gift is out of stock.\n\n```json\n{\n "errors": [\n {\n "status": 400,\n "title": "Insufficient stock",\n "detail": "There is not enough stock to add gift2 to your cart",\n "meta": {\n "id": "f2b68648-9621-45a3-aed6-1b526b0f5beb",\n "sku": "gift2"\n }\n }\n ]\n}\n```',
1512
+ title: "Check Out a Cart",
1513
+ description: "Converts a cart to an unpaid order and returns the order. Check out with a customer ID, a guest customer's name and email, or an account; billing and shipping addresses are optional. The cart remains and can be checked out again. Pay for the order afterwards.",
1514
1514
  inputSchema: checkoutApiInput,
1515
1515
  annotations: {
1516
1516
  readOnlyHint: false,
@@ -1547,7 +1547,7 @@ const getCustomerOrdersTool = (options) => {
1547
1547
  name: "cart_checkout_order_get_customer_orders",
1548
1548
  config: {
1549
1549
  title: "Get all Orders",
1550
- description: "This endpoint returns all orders with custom flow fields. The pagination offset is set to fetch a maximum of 10,000 orders. If the store has 10,000 orders, and you fetch the orders without using filters, an error is returned. Use a filter to view orders when the order is beyond the 10,000 mark.\n\n:::note\n\n- Pass the `X-Moltin-Customer-Token` header to limit orders to a specific customer. See [Customer Tokens](/docs/customer-management/customer-management-api/customer-tokens).\n- Pass the `EP-Account-Management-Authentication-Token` header to limit orders to a specific account. See [Account Management Token](/docs/api/accounts/post-v-2-account-members-tokens).\n- You can use pagination with this resource. For more information, see [pagination](/guides/Getting-Started/pagination).\n\n:::\n\n### Filtering\n\nThe following operators and attributes are available for filtering orders.\n\n| Attribute | Type | Operator | Example |\n| :--- | :--- | :--- | :--- |\n| `status` | `string` | `eq` | `eq(status,complete)` |\n| `payment` | `string` | `eq` | `eq(payment,paid)` |\n| `shipping` | `string` | `eq` | `eq(shipping,unfulfilled)` |\n| `name` (`customer.name`) | `string` | `eq` / `like` | `like(name,Brad*)` |\n| `email` (`customer.email`) | `string` | `eq` / `like` | `like(email,*@elasticpath.com)` |\n| `customer_id` | `string` | `eq` / `like` | `eq(customer_id, e5a0d684-a4af-4919-a348-f66b0b4955e0)` |\n| `account_id` | `string` | `eq` / `like` | `eq(account_id,3d7200c9-a9bc-4085-9822-63e80fd94a09)` |\n| `account_member_id` | `string` | `eq` / `like` | `eq(account_member_id,2a8a3a92-2ccd-4b2b-a7af-52d3896eaecb)` |\n| `contact.name` | `string` | `eq` / `like` | `eq(name,John Doe)` |\n| `contact.email` | `string` | `eq` / `like` | `eq(email,John Doe)` |\n| `shipping_postcode` | `string` | `eq` / `like` | `like(shipping_postcode,117*)` |\n| `billing_postcode` | `string` | `eq` / `like` | `like(billing_postcode,117*)` |\n| `with_tax` | `integer` | `gt`/`ge`/`lt`/`le` | `ge(with_tax,10000)` |\n| `without_tax` | `integer` | `gt`/`ge`/`lt`/`le` | `ge(without_tax,10000)` |\n| `currency` | `string` | `eq` | `eq(currency,USD)` |\n| `product_id` | `string` | `eq` | `eq(product_id,6837058c-ae42-46db-b3c6-7f01e0c34b40)` |\n| `product_sku` | `string` | `eq` | `eq(product_sku,deck-shoe-001)` |\n| `created_at` | `date` | `eq` / `gt` / `ge`/ `le` / `lt` | `gt(created_at,YYYY-MM-DD)` |\n| `updated_at` | `date` | `eq` / `gt` / `ge`/ `le`/ `lt` | `lt(updated_at,YYYY-MM-DD)` |\n| `external_ref` | `string` | `eq` / `like` | `like(external_ref, 16be*)` |\n| `order_number` | `string` | `eq` / `like` | `like(order_number, 123*)` |\n### Includes\nYou can include related resources with the order response by using the `include` query parameter.\n| Name | Optional | Type | Description |\n|:-----|:---------|:-----|:------------|\n| `include` | Optional | `string` | Comma-delimited string of entities that can be included. The information included are `items`, `tax_items`, `custom_discounts`, or `promotions`. |",
1550
+ description: "Lists orders, with optional filters. Paging reaches at most 10,000 orders, so filter to reach orders beyond that. A customer or account token header limits the results to that customer's or account's orders.",
1551
1551
  inputSchema: getCustomerOrdersInput,
1552
1552
  annotations: {
1553
1553
  readOnlyHint: true,
@@ -1584,7 +1584,7 @@ const getAnOrderTool = (options) => {
1584
1584
  name: "cart_checkout_order_get_an_order",
1585
1585
  config: {
1586
1586
  title: "Get an Order",
1587
- description: "Use this endpoint to retrieve a specific order.\n\n### Includes\n\nYou can include related resources with the order response by using the `include` query parameter.\n\n| Name | Required | Type | Description |\n|:----------|:---------|:---------|:------------|\n| `include` | Optional | `string` | Comma-delimited string of entities that can be included. The included options are `items`, `tax_items`, `custom_discounts`, or `promotions`. |",
1587
+ description: "Gets one order by ID, optionally including its items, tax items, custom discounts or promotions. To list only the order's items, get the order items.",
1588
1588
  inputSchema: getAnOrderInput,
1589
1589
  annotations: {
1590
1590
  readOnlyHint: true,
@@ -1621,7 +1621,7 @@ const updateAnOrderTool = (options) => {
1621
1621
  name: "cart_checkout_order_update_an_order",
1622
1622
  config: {
1623
1623
  title: "Update an Order",
1624
- description: "You can only update custom data, `shipping`, `shipping_address`, and status of orders. All other settings in the order object are immutable.\n\n This endpoint allows you to:\n\n- **Update an order number and external reference**: You can update an existing order that does not have an `order_number` and `external_ref`, modify the `order_number` and `external_ref` values, or remove them by passing an empty value in the `order_number` and `external_ref` fields.\n- **Cancel an order**: You can cancel an order only if it has not been fulfilled.\n- **Fulfill an order**: You can fulfill a paid order only.\n\n:::caution\n\nYou can update `shipping`, `shipping_address`, and status of an order only if the order is not fulfilled. You can use the refund API to refund an order only if the payment status is `paid`. Canceling an order does not automatically refund a payment. You must refund the orders manually.\n\n:::\n\n:::note\n\n- This request is only accessible to client credentials token users with Seller Admin role.\n- Non client credentials token users cannot access this endpoint. See [Permissions](/docs/authentication/tokens/permissions).\n- The `order_number` will appear as the invoice number in Authorize.net transactions.\n\n:::",
1624
+ description: "Updates an order's custom data, shipping, shipping address, status, order number or external reference; everything else on an order is immutable. It can cancel an order that is not fulfilled, or fulfill a paid one. Canceling does not refund.",
1625
1625
  inputSchema: updateAnOrderInput,
1626
1626
  annotations: {
1627
1627
  readOnlyHint: false,
@@ -1658,7 +1658,7 @@ const getOrderItemsTool = (options) => {
1658
1658
  name: "cart_checkout_order_get_order_items",
1659
1659
  config: {
1660
1660
  title: "Get Order Items",
1661
- description: "Use this endpoint to retrieve order items.\n\n### Includes\n\nYou can include related resources with the order items response by using the `include` query parameter.\n\n| Name | Required | Type | Description |\n|:----------|:---------|:---------|:------------|\n| `include` | Optional | `string` | Comma-delimited string of entities that can be included. The included options are `tax_items`, `custom_discounts`, or `promotions`. |",
1661
+ description: "Lists the items of one order, optionally including their tax items, custom discounts or promotions. Use it for an order's items; a cart's items are read from the cart.",
1662
1662
  inputSchema: getOrderItemsInput,
1663
1663
  annotations: {
1664
1664
  readOnlyHint: true,
@@ -1694,7 +1694,7 @@ const anonymizeOrdersTool = (options) => {
1694
1694
  name: "cart_checkout_order_anonymize_orders",
1695
1695
  config: {
1696
1696
  title: "Anonymize Orders",
1697
- description: "You can anonymize an order when it is fulfilled, canceled, or fully refunded.\n\nWhen anonymization is successful, Personal Identifiable Information such as customer details, `shipping_address`, and `billing_address` are replaced with *.",
1697
+ description: "Anonymizes orders that are fulfilled, canceled or fully refunded, replacing the customer details and the shipping and billing addresses with *. Orders in other states cannot be anonymized.",
1698
1698
  inputSchema: anonymizeOrdersInput,
1699
1699
  annotations: {
1700
1700
  readOnlyHint: false,
@@ -1730,7 +1730,7 @@ const confirmOrderTool = (options) => {
1730
1730
  name: "cart_checkout_order_confirm_order",
1731
1731
  config: {
1732
1732
  title: "Confirm Order",
1733
- description: "Use this endpoint to confirm an order. Confirming an order finalizes it and makes it ready for processing.",
1733
+ description: "Confirms an order, finalizing it and making it ready for processing. For an order paid through a cart's Stripe Payment Intent, confirming after checkout syncs the intent into a transaction and updates the order's statuses.",
1734
1734
  inputSchema: confirmOrderInput,
1735
1735
  annotations: {
1736
1736
  readOnlyHint: false,
@@ -1766,8 +1766,8 @@ const paymentSetupTool = (options) => {
1766
1766
  return {
1767
1767
  name: "cart_checkout_order_payment_setup",
1768
1768
  config: {
1769
- title: "Payments",
1770
- description: "Depending on the payment gateway, you may have access to different transaction types such as capturing funds immediately or authorizing them for later. For more information, see [Payments](/docs/api/carts/payments).\n\nThe following types of payment methods are available depending on the payment gateway:\n\n- `purchase`: This is the simplest method. The gateway attempts to charge the customer immediately.\n- `authorize`: This method authorizes a payment so that funds can be captured later, for example, when an item is dispatched or restocked.\n- `purchase_setup`: This method prepares the system for a purchase by verifying payment details without actually charging the customer. For example, a customer adds items to their cart and proceeds to checkout. Before finalizing the purchase, the system runs `purchase_setup` to confirm all payment details, but no funds are transferred until the customer confirms the order.\n- `authorize_setup`: This method prepares the system for an authorization-only transaction. This process holds the necessary funds but does not transfer them, ensuring that the customer has sufficient balance for the transaction. It sets up the conditions for a future capture of the authorized funds. For example, a customer places a pre-order for a product that will ship in two weeks. The merchant uses `authorize_setup` to prepare for the payment authorization. This holds the customer's funds to ensure they can cover the purchase but waits to capture the payment until the product ships. This ensures that payment is secured but not collected prematurely.\n\n:::note\n\nSplit payments can be performed using any methods for any gateway.\n\n- You can partially pay funds using `purchase` method. The gateway attempts to charge the customer immediately, and the payment status for an order will show `partially_paid`\n- You can partially pay for an order using `authorize` method where the order will be marked as `partially_authorized`. The transaction must be completed for the order status to be `partially_authorized`.\n- A `purchase_setup` method allows verification of payment details for partial payments without transferring funds until the customer confirms the full order.\n- An `authorize_setup` method can be used to hold a partial amount of the total funds, ensuring the customer has enough balance for a future capture.\nUntil a payment is made neither `purchase_setup` nor `authorize_setup` affects the payment statuses, and the order remains unpaid. For more information about order and payment statuses for split payments, see [Split payments](/docs/api/payments/payment-gateways-introduction#split-payments).\n\n:::",
1769
+ title: "Pay for an Order",
1770
+ description: "Starts a payment on an order through a payment gateway. The transaction type depends on the gateway: purchase charges now, authorize holds funds for a later capture, and purchase_setup or authorize_setup only verify the payment method. Split payments are supported.",
1771
1771
  inputSchema: paymentSetupInput,
1772
1772
  annotations: {
1773
1773
  readOnlyHint: false,
@@ -1803,8 +1803,8 @@ const confirmPaymentTool = (options) => {
1803
1803
  return {
1804
1804
  name: "cart_checkout_order_confirm_payment",
1805
1805
  config: {
1806
- title: "Confirm Payment",
1807
- description: "Confirm Payment serves as a mechanism to synchronize transaction information from the third-party payment provider back to our system. This ensures that Composable Commerce accurately reflects the values from the payment provider.\n\n### Handling 3D Secure Validations for Stripe Payments\n\nFor Stripe Payments requiring 3D Secure validation, the transaction response will include the `client_parameters` object, which provides credentials to support validation of these payment requests on the payment provider's side. We recommend using the Stripe's client libraries to manage these 3D Secure validations. Once the validation succeeds, proceed with a confirmation request to sync the validated transaction into Composable Commerce and continue with the payment process.",
1806
+ title: "Confirm a Transaction",
1807
+ description: "Confirms a transaction on an order by syncing its details from the third-party payment provider, so Elastic Path reflects the provider's values. For Stripe 3D Secure, call it after the shopper's client-side authentication succeeds.",
1808
1808
  inputSchema: confirmPaymentInput,
1809
1809
  annotations: {
1810
1810
  readOnlyHint: false,
@@ -1841,7 +1841,7 @@ const captureATransactionTool = (options) => {
1841
1841
  name: "cart_checkout_order_capture_a_transaction",
1842
1842
  config: {
1843
1843
  title: "Capture a Transaction",
1844
- description: "Use this endpoint to capture a previously authorized payment. In this step, you can also pass in a custom reference, such as the payment reference from your chosen gateway.",
1844
+ description: "Captures a payment that was previously authorized on an order transaction. Optionally pass a custom reference, such as the gateway's payment reference. Use it after an authorize payment.",
1845
1845
  inputSchema: captureATransactionInput,
1846
1846
  annotations: {
1847
1847
  readOnlyHint: false,
@@ -1878,7 +1878,7 @@ const refundATransactionTool = (options) => {
1878
1878
  name: "cart_checkout_order_refund_a_transaction",
1879
1879
  config: {
1880
1880
  title: "Refund a Transaction",
1881
- description: "There are two ways to refund; through your payment gateway and mark it refunded in Commerce Manager, or directly through Commerce Manager or API.\n\n* Mark as Refunded: You can manually mark a transaction as refunded. Before you can mark the order as refunded, you need to handle the actual refund on your side with your payment provider. Mark as Refunded is a full refund made to the transaction.\n* Refund through Composable Commerce: You can process a full or partial refund to a supported payment provider directly from Commerce Manager or API by providing the refund amount. When you start the refund process, the request is directly sent to the payment gateway.\n\n:::caution\n\nIf you use manual gateway for partial or full refund, you need to handle the actual refund on your side with your payment provider.\n\n:::",
1881
+ description: "Refunds an order transaction. Either mark it refunded after refunding through your own payment provider, which is a full refund, or send a full or partial refund amount to a supported gateway.",
1882
1882
  inputSchema: refundATransactionInput,
1883
1883
  annotations: {
1884
1884
  readOnlyHint: false,
@@ -1914,7 +1914,7 @@ const getOrderTransactionsTool = (options) => {
1914
1914
  name: "cart_checkout_order_get_order_transactions",
1915
1915
  config: {
1916
1916
  title: "Get Order Transactions",
1917
- description: "Get order transactions",
1917
+ description: "Lists all payment transactions on one order. Use it to find a transaction ID before confirming, capturing, refunding or canceling it.",
1918
1918
  inputSchema: getOrderTransactionsInput,
1919
1919
  annotations: {
1920
1920
  readOnlyHint: true,
@@ -1950,7 +1950,7 @@ const getATransactionTool = (options) => {
1950
1950
  name: "cart_checkout_order_get_a_transaction",
1951
1951
  config: {
1952
1952
  title: "Get a Transaction",
1953
- description: "Retrieves a transaction",
1953
+ description: "Gets one transaction on an order by its transaction ID. Use it to check a single transaction's status.",
1954
1954
  inputSchema: getATransactionInput,
1955
1955
  annotations: {
1956
1956
  readOnlyHint: true,
@@ -1987,7 +1987,7 @@ const cancelATransactionTool = (options) => {
1987
1987
  name: "cart_checkout_order_cancel_a_transaction",
1988
1988
  config: {
1989
1989
  title: "Cancel a Transaction",
1990
- description: "Use this endpoint to cancel or void a pending or authorized transaction. The transaction can be canceled or voided when it is in `pending` and `completed` statuses.\n\n:::caution\n\nThis endpoint works only for Stripe and PayPal and does not work for manual gateway.\n\n:::",
1990
+ description: "Cancels or voids a pending or authorized transaction on an order. Works only with the Stripe and PayPal gateways, not the manual gateway. To return funds already taken, refund the transaction instead.",
1991
1991
  inputSchema: cancelATransactionInput,
1992
1992
  annotations: {
1993
1993
  readOnlyHint: false,
@@ -2023,7 +2023,7 @@ const getOrderShippingGroupsTool = (options) => {
2023
2023
  name: "cart_checkout_order_get_order_shipping_groups",
2024
2024
  config: {
2025
2025
  title: "Retrieve all shipping groups for an order",
2026
- description: "Retrieve all shipping groups for an order",
2026
+ description: "Lists the shipping groups on an order. This is for orders after checkout; a cart's shipping groups are read from the cart.",
2027
2027
  inputSchema: getOrderShippingGroupsInput,
2028
2028
  annotations: {
2029
2029
  readOnlyHint: true,
@@ -2060,7 +2060,7 @@ const createOrderShippingGroupTool = (options) => {
2060
2060
  name: "cart_checkout_order_create_order_shipping_group",
2061
2061
  config: {
2062
2062
  title: "Create a shipping group for an order",
2063
- description: "Create a new shipping group for an order",
2063
+ description: "Creates a shipping group on an order. This is for orders after checkout; before checkout, create the shipping group on the cart.",
2064
2064
  inputSchema: createOrderShippingGroupInput,
2065
2065
  annotations: {
2066
2066
  readOnlyHint: false,
@@ -2097,7 +2097,7 @@ const getShippingGroupsByIdTool = (options) => {
2097
2097
  name: "cart_checkout_order_get_shipping_groups_by_id",
2098
2098
  config: {
2099
2099
  title: "Retrieve a specific shipping group for an order",
2100
- description: "Retrieve a specific shipping group for an order",
2100
+ description: "Gets one shipping group on an order by its ID. This is for orders after checkout; a cart's shipping groups are read from the cart.",
2101
2101
  inputSchema: getShippingGroupsByIdInput,
2102
2102
  annotations: {
2103
2103
  readOnlyHint: true,
@@ -2134,7 +2134,7 @@ const putShippingGroupByIdTool = (options) => {
2134
2134
  name: "cart_checkout_order_put_shipping_group_by_id",
2135
2135
  config: {
2136
2136
  title: "Update a shipping group for an order",
2137
- description: "Update a shipping group for an order",
2137
+ description: "Updates one shipping group on an order. This is for orders after checkout; before checkout, update the shipping group on the cart.",
2138
2138
  inputSchema: putShippingGroupByIdInput,
2139
2139
  annotations: {
2140
2140
  readOnlyHint: false,
@@ -2168,7 +2168,7 @@ const getV2SettingsCartTool = (options) => {
2168
2168
  name: "cart_checkout_order_get_v2_settings_cart",
2169
2169
  config: {
2170
2170
  title: "Get Cart Settings",
2171
- description: "Retrieves cart settings.",
2171
+ description: "Gets the store's cart settings, such as cart expiry, custom discounts, deferred inventory checks and show_all_carts. Read them before changing a setting.",
2172
2172
  inputSchema: getV2SettingsCartInput,
2173
2173
  annotations: {
2174
2174
  readOnlyHint: true,
@@ -2204,7 +2204,7 @@ const putV2SettingsCartTool = (options) => {
2204
2204
  name: "cart_checkout_order_put_v2_settings_cart",
2205
2205
  config: {
2206
2206
  title: "Update Cart Settings",
2207
- description: "You can modify the cart expiry settings to set it to any number of days up to 365. Any existing carts default to the expiry of 7 days. To update cart settings in Commerce Manager, see [Updating Cart setting](/docs/commerce-manager/settings/general-settings#updating-cart-settings).\n\nWith update cart settings endpoint, you can:\n\n- Enable or disable custom discounts by setting the `custom_discounts_enabled` field to `true`. This allows you to activate your custom discounts from external services. By default, this setting is determined by the cart settings configured for the store.\n- Enable or disable the use of rule promotions within the cart. You can apply this setting either at the store level using the update cart setting endpoint or individually to a specific cart using the [update a cart](/docs/api/carts/update-a-cart) endpoint.\n- Enable or disable deferred inventory checks by setting `defer_inventory_check` to `true`. When set, stock levels are not verified for products in a cart until checkout.\n- Control whether admins can see all carts or only shopper-associated carts by setting `show_all_carts` to `true` or `false`.\n- Enable or disable location-based item separation by setting `separate_items_by_location` to `true`. When enabled, cart items with the same SKU but different locations are kept as separate line items instead of being merged.\n\n:::note\n\nCustom discounts and rule promotions can both be enabled for a store at the same time, for example, while transitioning from one promotion system to the other. However, an individual cart can only contain one type of discount at a time. A cart that contains custom discounts rejects Elastic Path promotions, and a cart that contains Elastic Path promotions rejects custom discounts, until the existing discounts are removed.\n\n:::",
2207
+ description: "Updates the store's cart settings: cart expiry in days (up to 365), custom discounts, rule promotions, deferred inventory checks, show_all_carts and separating items by location. The settings are the defaults for every cart in the store; one cart's custom discount and inventory check settings can be changed on that cart instead.",
2208
2208
  inputSchema: putV2SettingsCartInput,
2209
2209
  annotations: {
2210
2210
  readOnlyHint: false,
@@ -2240,7 +2240,7 @@ const getV2SettingsCartStoreIdTool = (options) => {
2240
2240
  name: "cart_checkout_order_get_v2_settings_cart_store_id",
2241
2241
  config: {
2242
2242
  title: "Get Cart Settings by Store ID",
2243
- description: "Retrieves cart settings for the specified store.",
2243
+ description: "Gets the cart settings of the store with the given store ID, such as cart expiry, custom discounts, deferred inventory checks and show_all_carts. Read them before changing a setting.",
2244
2244
  inputSchema: getV2SettingsCartStoreIdInput,
2245
2245
  annotations: {
2246
2246
  readOnlyHint: true,
@@ -2277,7 +2277,7 @@ const putV2SettingsCartStoreIdTool = (options) => {
2277
2277
  name: "cart_checkout_order_put_v2_settings_cart_store_id",
2278
2278
  config: {
2279
2279
  title: "Update Cart Settings by Store ID",
2280
- description: "You can modify the cart expiry settings to set it to any number of days up to 365. Any existing carts default to the expiry of 7 days. To update cart settings in Commerce Manager, see [Updating Cart setting](/docs/commerce-manager/settings/general-settings#updating-cart-settings).\n\nWith update cart settings endpoint, you can:\n\n- Enable or disable custom discounts by setting the `custom_discounts_enabled` field to `true`. This allows you to activate your custom discounts from external services. By default, this setting is determined by the cart settings configured for the store.\n- Enable or disable the use of rule promotions within the cart. You can apply this setting either at the store level using the update cart setting endpoint or individually to a specific cart using the [update a cart](/docs/api/carts/update-a-cart) endpoint.\n- Enable or disable deferred inventory checks by setting `defer_inventory_check` to `true`. When set, stock levels are not verified for products in a cart until checkout.\n- Control whether admins can see all carts or only shopper-associated carts by setting `show_all_carts` to `true` or `false`.\n- Enable or disable location-based item separation by setting `separate_items_by_location` to `true`. When enabled, cart items with the same SKU but different locations are kept as separate line items instead of being merged.\n\n:::note\n\nCustom discounts and rule promotions can both be enabled for a store at the same time, for example, while transitioning from one promotion system to the other. However, an individual cart can only contain one type of discount at a time. A cart that contains custom discounts rejects Elastic Path promotions, and a cart that contains Elastic Path promotions rejects custom discounts, until the existing discounts are removed.\n\n:::",
2280
+ description: "Updates the cart settings of the store with the given store ID: cart expiry in days (up to 365), custom discounts, rule promotions, deferred inventory checks, show_all_carts and separating items by location. The settings are the defaults for every cart in that store; one cart's custom discount and inventory check settings can be changed on that cart instead.",
2281
2281
  inputSchema: putV2SettingsCartStoreIdInput,
2282
2282
  annotations: {
2283
2283
  readOnlyHint: false,