SkuVault MCP by usefulapi

MCP server for SkuVault — products, inventory, sales, purchase orders and stock adjustments.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
90%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'skuvault_get_inventory_by_location' name length outside 3-30 rangein skuvault_get_inventory_by_location
  • LOWTool 'skuvault_get_available_quantities' name length outside 3-30 rangein skuvault_get_available_quantities
  • LOWTool 'skuvault_get_warehouse_quantities' name length outside 3-30 rangein skuvault_get_warehouse_quantities

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,115Tokens (tool definitions)
~2.6 KBTypical response size
Significant attention impact (5.56% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "skuvault": {
      "url": "https://skuvault.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://skuvault.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (22)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢skuvault_list_warehouses(page)

List the regular warehouses (Id and Code). The numeric Id is what the stock tools and skuvault_list_transactions need. SkuVault throttles this call to 1 per minute. POST /inventory/getWarehouses.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_locations(skip, limit)

List the locations in enabled warehouses with warehouse, location code, parent location/container and total quantity. Heavy throttling (5/min). POST /inventory/getLocations.

Input Schema

{
  "type": "object",
  "properties": {
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_products(skus, codes, modified_after, modified_before, page, ...)

List products (not kits) with description, cost, prices, brand, supplier, classification, reorder point and quantities (on hand, available, pending, picked, incoming...). Filter by SKU or code, or by modification time. Alternate SKUs come back as separate rows (IsAlternateSKU) unless you filter. Heavy throttling (5/min). POST /products/getProducts.

Input Schema

{
  "type": "object",
  "properties": {
    "skus": {
      "description": "Only these SKUs.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "codes": {
      "description": "Only these product codes.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "modified_after": {
      "description": "Only products modified at or after this time.",
      "type": "string"
    },
    "modified_before": {
      "description": "Only products modified before this time.",
      "type": "string"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-10000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 10000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_get_product(sku, code)

One product (not a kit) by SKU or by code: details plus all quantities (on hand, available, pending, picked, incoming, in stock). Give exactly one of sku or code. Light throttling (20/min). POST /products/getProduct.

Input Schema

{
  "type": "object",
  "properties": {
    "sku": {
      "description": "Product SKU.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "code": {
      "description": "Product code.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_kits(skus, modified_after, modified_before, include_available_quantity, include_cost, ...)

List kits with their component lines, optional available quantity and cost. Needs a modified-time window (defaults to all time). The page size is not documented: keep following `next` until a page comes back empty. Heavy throttling (5/min). POST /products/getKits.

Input Schema

{
  "type": "object",
  "properties": {
    "skus": {
      "description": "Only these kit SKUs.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "modified_after": {
      "description": "Only kits modified at or after this time (default: all time).",
      "type": "string"
    },
    "modified_before": {
      "description": "Only kits modified before this time (default: now).",
      "type": "string"
    },
    "include_available_quantity": {
      "description": "Also compute the available quantity of each kit (default false: it is 0).",
      "type": "boolean"
    },
    "include_cost": {
      "description": "Also return the kit cost (default false).",
      "type": "boolean"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_brands(page, skip, limit)

List the brands created in SkuVault (Name, IsEnabled), 1,000 per page. Heavy throttling (5/min). POST /products/getBrands.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_suppliers(page, skip, limit)

List the suppliers in the account (Name, IsEnabled), 10,000 per page. Heavy throttling (5/min). POST /products/getSuppliers.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_classifications(page, skip, limit)

List product classifications and their named attributes, 1,000 per page. Heavy throttling (5/min). POST /products/getClassifications.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_get_inventory_by_location(skus, codes, page, page_size, skip, ...)

Where each product is stored: per SKU (or code) the locations with warehouse code, quantity and whether the location is a reserve location. Filter by SKUs or by codes (not both). Heavy throttling (5/min). POST /inventory/getInventoryByLocation.

Input Schema

{
  "type": "object",
  "properties": {
    "skus": {
      "description": "Only these SKUs.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "codes": {
      "description": "Only these product codes (the reply is then keyed by code).",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-10000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 10000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_get_available_quantities(modified_after, modified_before, expand_alternate_skus, page, page_size, ...)

Sellable (available) quantity per SKU across all warehouses, with last-modified time. Use modified_after to see only what changed. Heavy throttling (5/min). POST /inventory/getAvailableQuantities.

Input Schema

{
  "type": "object",
  "properties": {
    "modified_after": {
      "description": "Only quantities modified at or after this time.",
      "type": "string"
    },
    "modified_before": {
      "description": "Only quantities modified before this time.",
      "type": "string"
    },
    "expand_alternate_skus": {
      "description": "List alternate SKUs inside their primary row instead of as separate rows.",
      "type": "boolean"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-5000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 5000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_get_item_quantities(codes, modified_after, modified_before, page, page_size, ...)

Product quantities per SKU: total on hand, available, held, pending and picked. Filter by product codes or modification time. Heavy throttling (5/min). POST /inventory/getItemQuantities.

Input Schema

{
  "type": "object",
  "properties": {
    "codes": {
      "description": "Only these product codes.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "modified_after": {
      "description": "Only inventory modified at or after this time.",
      "type": "string"
    },
    "modified_before": {
      "description": "Only inventory modified before this time.",
      "type": "string"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-10000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 10000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_get_warehouse_quantities(warehouse_id, modified_after, modified_before, page, page_size, ...)

SKUs and quantities held in one warehouse. Get the warehouse id from skuvault_list_warehouses. Heavy throttling (5/min). POST /inventory/getWarehouseItemQuantities.

Input Schema

{
  "type": "object",
  "properties": {
    "warehouse_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "SkuVault warehouse id (an integer; see skuvault_list_warehouses)."
    },
    "modified_after": {
      "description": "Only quantities modified at or after this time.",
      "type": "string"
    },
    "modified_before": {
      "description": "Only quantities modified before this time.",
      "type": "string"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-10000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 10000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "required": [
    "warehouse_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_transactions(from, to, user_email, warehouse_id, type, ...)

Inventory transaction history (adds, removes, picks, creates) with user, SKU, quantity before/after, location, reason, note and the sale it belongs to. The date range may span at most 7 days. Filter by user email, warehouse id, type, reasons or sale id. Heavy throttling (5/min). POST /inventory/getTransactions.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Start of the range."
    },
    "to": {
      "description": "End of the range (default now). At most 7 days after `from`.",
      "type": "string"
    },
    "user_email": {
      "description": "Only this user's transactions (case-sensitive email).",
      "type": "string",
      "minLength": 3,
      "maxLength": 254
    },
    "warehouse_id": {
      "description": "Only this warehouse (the Id from skuvault_list_warehouses).",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "type": {
      "description": "Transaction type (default All).",
      "type": "string",
      "enum": [
        "All",
        "Add",
        "Remove",
        "Pick",
        "Create"
      ]
    },
    "reasons": {
      "description": "Only these transaction reasons.",
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "exclude_reasons": {
      "description": "Leave out these transaction reasons.",
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "sale_id": {
      "description": "Only transactions against this sale id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-10000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 10000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "required": [
    "from"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_sales(status, order_ids, skip, limit)

List sales (orders) that are ReadyToShip (default) or Pending, or look up specific sales by order id (then status is ignored): items, kits, shipping and contact info, totals. Not paged by the vendor. Heavy throttling (5/min). POST /sales/getSales.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Sale status (default ReadyToShip).",
      "type": "string",
      "enum": [
        "ReadyToShip",
        "Pending"
      ]
    },
    "order_ids": {
      "description": "Specific order ids; overrides status.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_sales_by_date(from, to, date_field, page, page_size, ...)

Sales within a date range, by sale date or by last-modified date: items, kits, fulfillment/processed quantities, shipping, contact info and totals. The date range may span at most 7 days. The most common way to pull orders. Heavy throttling (5/min). POST /sales/getSalesByDate.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Start of the interval (inclusive)."
    },
    "to": {
      "type": "string",
      "description": "End of the interval (inclusive); at most 7 days after `from`."
    },
    "date_field": {
      "description": "Filter on the sale date (Sale) or on the last-modified date (Modified).",
      "type": "string",
      "enum": [
        "Sale",
        "Modified"
      ]
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-10000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 10000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "required": [
    "from",
    "to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_sold_items(from, to, include_transfer_sales, break_down_kits, page, ...)

Items sold in a date range: date, SKU, quantity and total price per line, optionally breaking kits into components and including transfer sales. The date range may span at most 14 days. Heavy throttling (5/min). POST /sales/getSoldItems.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Start date/time (UTC)."
    },
    "to": {
      "type": "string",
      "description": "End date/time (UTC); at most 14 days after `from`."
    },
    "include_transfer_sales": {
      "description": "Include transfer sales (SkuVault default true).",
      "type": "boolean"
    },
    "break_down_kits": {
      "description": "Show kit components instead of the kit (SkuVault default true).",
      "type": "boolean"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "required": [
    "from",
    "to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_purchase_orders(status, po_numbers, modified_after, modified_before, include_products, ...)

List purchase orders with supplier, dates, status, payment status, costs and line items (SKU, quantity, received quantity). By default completed POs are left out: set status Completed to see them. Specific PO numbers override the date and status filters. 10,000 per page. Heavy throttling (5/min). POST /purchaseorders/getPOs.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "PO status (default: everything except Completed).",
      "type": "string",
      "enum": [
        "NoneReceived",
        "PartiallyReceived",
        "Completed",
        "Cancelled"
      ]
    },
    "po_numbers": {
      "description": "Only these PO numbers; ignores dates and status.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "modified_after": {
      "description": "Only POs modified at or after this time.",
      "type": "string"
    },
    "modified_before": {
      "description": "Only POs modified before this time.",
      "type": "string"
    },
    "include_products": {
      "description": "Also return incoming product details in a separate array.",
      "type": "boolean"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_po_receives(warehouse_codes, po_numbers, received_after, received_before, page, ...)

Purchase-order receiving history: what was received (SKU, quantity, location, user, dates) followed by quantity corrections. Filter by warehouse codes, PO numbers or received time. Heavy throttling (5/min). POST /purchaseorders/getReceivesHistory.

Input Schema

{
  "type": "object",
  "properties": {
    "warehouse_codes": {
      "description": "Only receives into these warehouse codes.",
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "po_numbers": {
      "description": "Only receives for these PO numbers.",
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "received_after": {
      "description": "Only receives after this time.",
      "type": "string"
    },
    "received_before": {
      "description": "Only receives before this time.",
      "type": "string"
    },
    "page": {
      "description": "Vendor page number, starting at 0 (default 0). Pass `next.page` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Vendor page size, 1000-10000 (default 1000).",
      "type": "integer",
      "minimum": 1000,
      "maximum": 10000
    },
    "skip": {
      "description": "Items to skip inside the vendor page (default 0). Pass `next.skip` from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "How many items to return from the vendor page, 1-500 (default 50). SkuVault pages hold 1,000-10,000 rows, so a window is shown.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢skuvault_list_integrations

List the enabled sales-channel accounts (Amazon, ChannelAdvisor, Shopify...): Id, LongId, Name and Type. Severe throttling (1/min). POST /integration/getIntegrations.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡skuvault_add_stock(sku, code, warehouse_id, location_code, quantity, ...)

WRITE: add quantity of a product to a warehouse location (a transaction in SkuVault's history; every call adds again, so do not retry blindly). The transaction reason must already exist in SkuVault. Serialized or lotted products need serial numbers / a scanned lot code. Moderate throttling (10/min). POST /inventory/addItem.

Input Schema

{
  "type": "object",
  "properties": {
    "sku": {
      "description": "Product SKU (give sku or code).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "code": {
      "description": "Product code (give sku or code).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "warehouse_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "SkuVault warehouse id (an integer; see skuvault_list_warehouses)."
    },
    "location_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Location the quantity is added to."
    },
    "quantity": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000000000,
      "description": "Quantity to add (a positive whole number)."
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Transaction reason; must already exist in SkuVault."
    },
    "note": {
      "description": "Transaction note.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "lot_code": {
      "description": "Lot number (ScannedCode); required when adding to a lotted product.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "serial_numbers": {
      "description": "Serial numbers, as many as the quantity; only for serialized products.",
      "minItems": 1,
      "maxItems": 10000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    }
  },
  "required": [
    "warehouse_id",
    "location_code",
    "quantity",
    "reason"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴skuvault_remove_stock(sku, code, warehouse_id, location_code, quantity, ...)

WRITE: remove quantity of a product from a warehouse location (a transaction in SkuVault's history; every call removes again, so do not retry blindly). The transaction reason must already exist in SkuVault. Serialized products need serial numbers. Moderate throttling (10/min). POST /inventory/removeItem.

Input Schema

{
  "type": "object",
  "properties": {
    "sku": {
      "description": "Product SKU (give sku or code).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "code": {
      "description": "Product code (give sku or code).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "warehouse_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "SkuVault warehouse id (an integer; see skuvault_list_warehouses)."
    },
    "location_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Location the quantity is removed from."
    },
    "quantity": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000000000,
      "description": "Quantity to remove (a positive whole number)."
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Transaction reason; must already exist in SkuVault."
    },
    "serial_numbers": {
      "description": "Serial numbers, as many as the quantity; only for serialized products.",
      "minItems": 1,
      "maxItems": 10000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    }
  },
  "required": [
    "warehouse_id",
    "location_code",
    "quantity",
    "reason"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴skuvault_set_stock_quantity(sku, code, warehouse_id, location_code, quantity)

WRITE: set the exact quantity of a product at one warehouse location, overwriting what is there (running it again with the same values changes nothing more). Use skuvault_get_inventory_by_location first to see the current quantity. Moderate throttling (10/min). POST /inventory/setItemQuantity.

Input Schema

{
  "type": "object",
  "properties": {
    "sku": {
      "description": "Product SKU (give sku or code).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "code": {
      "description": "Product code (give sku or code).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "warehouse_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "SkuVault warehouse id (an integer; see skuvault_list_warehouses)."
    },
    "location_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Location whose quantity is set."
    },
    "quantity": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000000,
      "description": "The new quantity at that location (0 or more)."
    }
  },
  "required": [
    "warehouse_id",
    "location_code",
    "quantity"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded22 tools