---
name: "inventory_save_items"
area: "inventory"
title: "Add or change items"
price: "$0.005 per item saved"
method: "POST"
url: "https://api.conecto.chat/v1/tools/inventory_save_items"
mcp_server: "https://api.conecto.chat/mcp/inventory"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/inventory/inventory_save_items"
---

# Add or change items (`inventory_save_items`)

Adds stock items or changes them by SKU: name, unit, barcode, cost, price and reorder point.

Add stock items or change them, matched by SKU: name, unit (pcs, kg, m...), barcode, cost (the unit cost used when stock comes in without one), selling price, reorder point (inventory.low_stock is sent when the stock falls to it), a new SKU, archived (only with none in stock). Stock itself changes only by moves (inventory_move) or counts (inventory_stocktake).

Price: $0.005 per item saved. A call that fails costs nothing.

## Use it when

A new product is stocked, or an item's cost, price or reorder point changes.

- For stock coming in or going out, use [inventory_move](https://conecto.chat/tools/inventory/inventory_move.md).

## Say this to your agent

> Add the stainless work table to our stock list: SKU TABLE-SS-160, it costs us 610 euros, sells for 1,490, and warn me when we're down to 2.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `items` | array of objects | yes | 1 to 100 items. |  |  |
| `items[].sku` | string | yes, in each item of `items` | The item's SKU. 1 to 64 characters. |  |  |
| `items[].name` | string | no | Up to 200 characters. |  |  |
| `items[].description` | string | no | Up to 1,000 characters. |  |  |
| `items[].unit` | string | no | Up to 20 characters. |  |  |
| `items[].barcode` | string | no | Up to 64 characters. |  |  |
| `items[].cost` | number or string | no | Up to 24 characters. |  |  |
| `items[].price` | number or string or null | no | Up to 24 characters. |  |  |
| `items[].reorder_point` | number or string or null | no | Up to 24 characters. |  |  |
| `items[].new_sku` | string | no | Up to 64 characters. |  |  |
| `items[].archived` | boolean | no |  |  |  |

## Example

Written for Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff.

MCP: call `inventory_save_items` on the MCP server `https://api.conecto.chat/mcp/inventory` with these arguments:

```json
{
  "items": [
    {
      "sku": "TABLE-SS-160",
      "name": "Work table, stainless steel, 160 cm",
      "unit": "pcs",
      "cost": "610.00",
      "price": "1490.00",
      "reorder_point": 2
    }
  ]
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/inventory_save_items \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items": [{"sku": "TABLE-SS-160", "name": "Work table, stainless steel, 160 cm", "unit": "pcs", "cost": "610.00", "price": "1490.00", "reorder_point": 2}]}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "inventory_save_items",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.005",
  "balance_usd": "$19.75",
  "result": {
    "items": [
      {
        "sku": "TABLE-SS-160",
        "name": "Work table, stainless steel, 160 cm",
        "unit": "pcs",
        "barcode": null,
        "description": null,
        "quantity": "0",
        "unit_cost": "610",
        "value": "0.00",
        "currency": "EUR",
        "price": "1490",
        "reorder_point": "2",
        "low": true,
        "archived": false,
        "locations": {},
        "created": true
      }
    ]
  }
}
```

`result`: items: each saved item with its SKU, name, unit, barcode, description, stock, unit cost, value, currency, price, reorder point, low, archived, stock per location, and created.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `invalid_input` | 400 | A quantity, cost or date is not valid. | Send numbers like 140.00 (a dot for decimals) and dates that have passed, like 2026-10-14. |
| `invalid_input` | 400 | A SKU is missing, or a new item has no name. | Give every new item a SKU and a name. |
| `has_stock` | 409 | An item to archive still has stock. | Ship, adjust or count it to 0 first. |
| `sku_taken` | 409 | The new SKU is used already. | Pick another SKU. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [inventory_list_items](https://conecto.chat/tools/inventory/inventory_list_items.md): Items with their stock in total and per location, the moving-average cost and the value. Free up to 1,000,000 reads a month.
- [inventory_move](https://conecto.chat/tools/inventory/inventory_move.md): Changes stock, all moves or none: receive, ship, transfer between locations, or adjust. $0.005 per move.
- [inventory_stocktake](https://conecto.chat/tools/inventory/inventory_stocktake.md): Records a count of one location; each difference from the books becomes a count move. $0.002 per line counted.
- [inventory_history](https://conecto.chat/tools/inventory/inventory_history.md): Stock moves, newest first, of one item, at one location, of one kind, or in a period. Free up to 1,000,000 reads a month.
- [inventory_locations](https://conecto.chat/tools/inventory/inventory_locations.md): Every location with how many items it holds and their value. Free up to 1,000,000 reads a month.
- [inventory_save_location](https://conecto.chat/tools/inventory/inventory_save_location.md): Adds a location (a warehouse, a shop, a van), or renames, describes or archives one. $0.001 a call.
- [inventory_report](https://conecto.chat/tools/inventory/inventory_report.md): Valuation (what was held on a day and its value), movement (per item in a period, with the cost of goods shipped) or low stock. Free up to 1,000,000 reads a month.
- [inventory_import](https://conecto.chat/tools/inventory/inventory_import.md): Creates or changes items from a CSV in the file store, with optional quantities per location; all rows or none. $0.001 per row imported.
- [inventory_export](https://conecto.chat/tools/inventory/inventory_export.md): A CSV of the items (per location, with quantities and value) or of the moves in a period, with a download link. $0.001 a call.
