# SkuVault MCP

> SkuVault connects your AI agent directly to your warehouse management system. Manage inventory, create products, track specific lots, and generate purchase orders all through chat commands. It handles everything from bulk stock additions (`add_item_bulk`) to complex shipment logging, giving you real-time control without opening another tab.

## Overview
- **Category:** order-management
- **Price:** Free
- **Tags:** inventory-tracking, warehouse-management, skuvault, product-catalog, purchase-orders

## Description

Look, forget jumping through a dozen screens just to move some stock or place an order. This server hooks your AI agent right into SkuVault's backend. You manage everything—from building out your whole product line to logging shipments leaving the dock—just by talking to it. It gives you real-time control without ever making you open another tab.

**Stock Movement and Inventory Control**

You can update inventory levels instantly. Use `add_item` to tack on a specified count of goods to any single warehouse location. If you're dealing with big counts or several different item types, use `add_item_bulk` to record them all at once. When stuff leaves the building, run `add_shipments` to log those records for goods that shipped out. To check what you got on hand, your agent can retrieve the total stock count for any SKU across every location using `get_available_quantities`. You can also figure out how much of a specific product is sitting at remote or external sites by checking with `get_external_warehouse_quantities`, and you can get a list of all those connected external warehouse spots using `get_external_warehouses`.

**Product Catalog Setup and Management**

Setting up your product structure is simple. You can define new brand names using `create_brands`. Need to register a vendor? Use `create_suppliers`. To build out the master catalog, you've got `create_product` for single items or `create_products` if you're dropping in a whole list of definitions. When you need to bundle things together—like making a starter kit—you use `create_kit` to define and build those bundles using multiple individual SKUs. You can also generate purchase orders by running `create_po`, which submits restocking requests straight to your vendors.

**Tracking Lots, Holds, and Specific Batches**

If you're dealing with sensitive goods or specific batches, this is huge. Use `create_lot` to set up a new, trackable batch of products. To audit that stuff later, you can run `get_lots` to get a status report on every existing product lot in the system. You can pin down the exact count for a specific lot number inside one defined warehouse using `get_lot_inventory_by_location`. If you need to stop inventory from moving—maybe it's waiting on quality checks—you use `create_holds` to place those temporary stops. The server also pulls in information about items currently coming into the facility or expected soon through `get_incoming_items`, and you can check what product classification types exist for your reports using `get_classifications`.

**Workflow Operations**

This system handles the nitty-gritty logistics, too. You can get an estimate of how long it'll take to process a specific order with `get_handling_time`. For reporting purposes, you can also fetch all existing product classification types using `get_classifications`.

## Tools

### add_item_bulk
Adds multiple different item types and quantities to the inventory at once.

### add_item
Updates inventory by adding a specified quantity of items to one warehouse location.

### add_shipments
Creates records for goods that have left the warehouse and shipped out.

### create_brands
Establishes new brand names within your product catalog structure.

### create_holds
Places temporary holds on inventory, preventing it from being sold or shipped until cleared.

### create_kit
Defines and builds new product bundles using multiple individual SKUs.

### create_lot
Establishes a new, tracked batch (or lot) of specific products.

### create_po
Generates and submits purchase orders to vendors for restocking inventory.

### create_product
Adds a single, new product definition into your master catalog.

### create_products
Bulk-creates multiple product definitions from a list of data points.

### create_suppliers
Registers new vendors or supply partners in the system records.

### get_available_quantities
Retrieves the total available stock count for a given SKU across all managed locations.

### get_brands
Fetches a list of existing brands used in your catalog.

### get_classifications
Retrieves the established product classification types for reporting purposes.

### get_external_warehouse_quantities
Checks how many units of a specific SKU are held at remote or external warehouse sites.

### get_external_warehouses
Lists and provides details for all connected external warehouse locations.

### get_handling_time
Retrieves the estimated time it takes to process a specific product order.

### get_incoming_items
Shows items currently in transit or expected soon, often linked to open purchase orders.

### get_lot_inventory_by_location
Finds the exact count of a specific lot number within one defined warehouse location.

### get_lots
Retrieves a list and status report for all existing product lots in your system.

## Prompt Examples

**Prompt:** 
```
Add 15 units of SKU 'WIDGET-A' to warehouse 2, location 'LOC-99' with reason 'Restock'.
```

**Response:** 
```
I will call the `add_item` tool with Sku: 'WIDGET-A', WarehouseId: 2, LocationCode: 'LOC-99', Quantity: 15, and Reason: 'Restock' to update the inventory.
```

**Prompt:** 
```
Retrieve lot inventory details for location 'ZONE-B'.
```

**Response:** 
```
I will query the SkuVault API using the `get_lot_inventory_by_location` tool with the location filter set to 'ZONE-B' to fetch the lot details.
```

**Prompt:** 
```
Create a new product with SKU 'SHIRT-XL-RED' named 'Red XL Shirt'.
```

**Response:** 
```
I will use the `create_product` tool to create a new product with SKU 'SHIRT-XL-RED' and name 'Red XL Shirt' in your SkuVault catalog.
```

## Capabilities

### Track Inventory Location
Retrieve current available quantities, checking specific product lots by location (e.g., 'How many units of Lot X are in Zone B?').

### Manage Stock Movement
Add inventory to a single warehouse spot using `add_item`, or process large counts at once with `add_item_bulk`. It also logs finished shipments via `add_shipments`.

### Build Product Catalog
Define your product structure by creating new products, bulk-creating items (`create_products`), and setting up brand or supplier records.

### Control Supply Flow
Initiate purchase orders (`create_po`) when stock is low. You can also build complex product kits and bundles using `create_kit`.

### Audit Lot & Hold Status
Manage specific batches of items by creating lots (`create_lot`), or placing temporary inventory holds (`create_holds`) for quality checks.

## Use Cases

### Responding to a rush order for limited stock
A customer calls, needing 50 units of SKU 'WIDGET-Z'. You don't know if they are available. Instead of checking three different tabs in the WMS, you ask your agent: 'Check `get_available_quantities` and then `get_external_warehouse_quantities` for WIDGET-Z.' The agent gives you a single, comprehensive answer so you can confirm fulfillment immediately.

### Receiving a large shipment from a new vendor
The truck arrives with 20 different items. Instead of logging them into the system one by one, you tell your agent to 'Process this manifest.' The agent runs `add_item_bulk` using the provided data points, updating the inventory counts across all relevant locations in minutes.

### Auditing expired or recalled products
A recall comes for a specific batch. You tell your agent to 'Find all lots matching SKU X and located at Warehouse 3.' The agent runs `get_lot_inventory_by_location` using the precise filters, giving you an immediate list of every affected unit.

### Preparing for a quarterly sale with bundled items
The marketing team wants to sell three different SKUs together as a 'Summer Pack'. You tell your agent, 'Create a product kit called Summer Pack using SKUs A, B, and C.' The agent uses `create_kit` instantly, making the bundle available for sale.

## Benefits

- Fulfills complex audit needs instantly. Instead of running multiple reports to check lot status, you can run `get_lot_inventory_by_location` to pinpoint exact counts for specific batches in a single query.
- Handles massive data entry without friction. Need to update stock across 50 different SKUs? Use `add_item_bulk`. It processes the entire batch in one chat command, bypassing manual UI clicks.
- Builds your catalog faster than ever. You can't wait for a dedicated IT session. Build out product lines and brand structures by calling `create_products` or `create_brands` directly through your agent.
- Manages the entire fulfillment cycle. From running `get_available_quantities` checks to generating final shipments with `add_shipments`, it keeps the flow moving without context switching.
- Controls risk with dedicated tools. Need to quarantine items? Use `create_holds`. You can then track what's awaiting release using `get_lots`.

## How It Works

The bottom line is that your AI client handles the complex API calls so you can manage the entire flow from natural language chat alone.

1. Subscribe to the SkuVault server and provide your necessary Tenant Token and User Token.
2. Your AI client authenticates with SkuVault, making all 20 tools available for use in conversation.
3. You simply state what you need (e.g., 'Add 50 widgets to warehouse 1, location A'). The agent runs the correct tool (`add_item`) and confirms the update.

## Frequently Asked Questions

**How do I check stock levels for a specific batch using get_lot_inventory_by_location?**
You pass the exact location code and lot number to the agent. It runs `get_lot_inventory_by_location` and returns only the count of that specific, tracked batch in that precise spot.

**Should I use add_item or add_item_bulk for receiving goods?**
Use `add_item_bulk`. It's designed to process large manifests of multiple SKUs and quantities at once, which is how most incoming shipments arrive.

**What if I need to create a new product line using the system?**
Start by calling `create_products` with all your items listed in one prompt. If you have complex SKUs that combine multiple parts, use `create_kit` to define the bundle.

**Can I find out which external warehouses I need to check?**
Yes, run `get_external_warehouses`. This tool gives you a list of all connected remote sites so you know where your inventory might be located.

**I need to generate a purchase order; how do I use `create_po`?**
You call `create_po` with the supplier name, item list, and required quantities. This tool generates a formal Purchase Order record in SkuVault for tracking incoming stock.

**If I need to quarantine existing stock, how do I use `create_holds`?**
Use the `create_holds` tool to place specific SKUs or lots on hold. This action immediately flags inventory as unavailable for picking or shipment.

**What should I do if I need to structure new product data using `get_classifications`?**
First, run `get_classifications` to retrieve the current list of acceptable product types. You must reference these returned IDs when calling tools like `create_product` or `create_kits`.

**After goods leave the warehouse, how do I use `add_shipments`?**
Call `add_shipments` with the items and quantities that shipped out. This records the final outbound transaction, accurately reducing your available inventory count.

**How can I add inventory to a specific warehouse location?**
You can use the `add_item` tool. Provide the SKU or Code, the WarehouseId, the LocationCode, the Quantity, and a valid transaction Reason.

**Can I retrieve product lot details filtered by location?**
Yes! Use the `get_lot_inventory_by_location` tool to retrieve lot inventory details filtered by specific locations.

**Is there a way to create multiple products at once?**
Yes, you can use the `create_products` tool to bulk-create products by passing a JSON payload with the product details.