Read Lightspeed R-Series items, stock, sales, customers and POs; create customers and set stock.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a new customer, optionally with a primary email and one phone number (stored in the customer's Contact). Give at least a first name, last name or company. Returns the new customer with its customerID. POST /Account/{accountID}/Customer.json.
Primary email address.
Phone number.
Job title.
Company name.
Last name.
First name.
Phone type (default Mobile).
customerTypeID to assign.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create a new customer, optionally with a primary email and one phone number (stored in the customer's Contact). Give at least a first name, last name or company. Returns the new customer with its customerID. POST /Account/{accountID}/Customer.json.
| Argument | Type | Description |
|---|---|---|
| string | Primary email address. | |
| phone | string | Phone number. |
| title | string | Job title. |
| company | string | Company name. |
| last_name | string | Last name. |
| first_name | string | First name. |
| phone_type | string | Phone type (default Mobile). |
| customer_type_id | string | customerTypeID to assign. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Primary email address."
},
"phone": {
"type": "string",
"maxLength": 50,
"description": "Phone number."
},
"title": {
"type": "string",
"maxLength": 100,
"description": "Job title."
},
"company": {
"type": "string",
"maxLength": 200,
"description": "Company name."
},
"last_name": {
"type": "string",
"maxLength": 100,
"description": "Last name."
},
"first_name": {
"type": "string",
"maxLength": 100,
"description": "First name."
},
"phone_type": {
"enum": [
"Home",
"Work",
"Mobile",
"Pager",
"Fax"
],
"type": "string",
"description": "Phone type (default Mobile)."
},
"customer_type_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "customerTypeID to assign."
}
}
}The connected Lightspeed Retail (R-Series) account: id, name, status, employee count/limit, default and purchasing currencies. Good first call. GET /Account/{accountID}.json.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One customer by customerID with Contact (emails, phones, addresses), customer type and notes. GET /Account/{accountID}/Customer/{customerID}.json.
| Argument | Type | Description |
|---|---|---|
| relations | array | Related records to include (each adds a little to the request's rate-limit cost). Default: Contact, CustomerType, Note. Allowed: Contact, CustomerType, Discount, Note, TaxCategory, CreditAccount, Tags, CustomFieldValues, CustomFieldValues.value. |
| customer_id* | string | The customerID (from lightspeedrseries_list_customers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"relations": {
"type": "array",
"items": {
"enum": [
"Contact",
"CustomerType",
"Discount",
"Note",
"TaxCategory",
"CreditAccount",
"Tags",
"CustomFieldValues",
"CustomFieldValues.value"
],
"type": "string"
},
"maxItems": 9,
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: Contact, CustomerType, Note. Allowed: Contact, CustomerType, Discount, Note, TaxCategory, CreditAccount, Tags, CustomFieldValues, CustomFieldValues.value."
},
"customer_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The customerID (from lightspeedrseries_list_customers)."
}
}
}One item by itemID with its prices, per-shop stock (ItemShops), category and other related records. GET /Account/{accountID}/Item/{itemID}.json.
| Argument | Type | Description |
|---|---|---|
| item_id* | string | The itemID (from lightspeedrseries_list_items). |
| relations | array | Related records to include (each adds a little to the request's rate-limit cost). Default: ItemShops, Category, Manufacturer, ItemVendorNums, Note. Allowed: Category, TaxClass, ItemAttributes, ItemAttributes.ItemAttributeSet, Manufacturer, Note, Images, ItemShops, ItemVendorNums, ItemComponents, ItemECommerce, TagRelations, TagRelations.Tag, CustomFieldValues, CustomFieldValues.value, ItemPrices. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"item_id"
],
"properties": {
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The itemID (from lightspeedrseries_list_items)."
},
"relations": {
"type": "array",
"items": {
"enum": [
"Category",
"TaxClass",
"ItemAttributes",
"ItemAttributes.ItemAttributeSet",
"Manufacturer",
"Note",
"Images",
"ItemShops",
"ItemVendorNums",
"ItemComponents",
"ItemECommerce",
"TagRelations",
"TagRelations.Tag",
"CustomFieldValues",
"CustomFieldValues.value",
"ItemPrices"
],
"type": "string"
},
"maxItems": 16,
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: ItemShops, Category, Manufacturer, ItemVendorNums, Note. Allowed: Category, TaxClass, ItemAttributes, ItemAttributes.ItemAttributeSet, Manufacturer, Note, Images, ItemShops, ItemVendorNums, ItemComponents, ItemECommerce, TagRelations, TagRelations.Tag, CustomFieldValues, CustomFieldValues.value, ItemPrices."
}
}
}One purchase order by orderID with its lines (OrderLines: itemID, quantity, numReceived, price), vendor and shop. GET /Account/{accountID}/Order/{orderID}.json.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The orderID (from lightspeedrseries_list_purchase_orders). |
| relations | array | Related records to include (each adds a little to the request's rate-limit cost). Default: OrderLines, Vendor, Shop, Note. Allowed: OrderLines, Note, Vendor, Shop, CustomFieldValues, CustomFieldValues.value. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The orderID (from lightspeedrseries_list_purchase_orders)."
},
"relations": {
"type": "array",
"items": {
"enum": [
"OrderLines",
"Note",
"Vendor",
"Shop",
"CustomFieldValues",
"CustomFieldValues.value"
],
"type": "string"
},
"maxItems": 6,
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: OrderLines, Vendor, Shop, Note. Allowed: OrderLines, Note, Vendor, Shop, CustomFieldValues, CustomFieldValues.value."
}
}
}One sale by saleID with its line items (SaleLines with Item), payments (SalePayments with PaymentType) and customer. GET /Account/{accountID}/Sale/{saleID}.json.
| Argument | Type | Description |
|---|---|---|
| sale_id* | string | The saleID (from lightspeedrseries_list_sales). |
| relations | array | Related records to include (each adds a little to the request's rate-limit cost). Default: SaleLines, SaleLines.Item, SalePayments, SalePayments.PaymentType, Customer. Allowed: SaleLines, SaleLines.Discount, SaleLines.TaxClass, SaleLines.Note, SaleLines.Item, SaleLines.InventorySales, SaleNotes, SalePayments, SalePayments.PaymentType, SalePayments.CCCharge, SalePayments.SaleAccounts, SalePayments.Signatures, ShipTo, ShipTo.Contact, Customer, Customer.Contact, Discount, TaxCategory, TaxCategory.TaxCategoryClasses, Quote. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sale_id"
],
"properties": {
"sale_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The saleID (from lightspeedrseries_list_sales)."
},
"relations": {
"type": "array",
"items": {
"enum": [
"SaleLines",
"SaleLines.Discount",
"SaleLines.TaxClass",
"SaleLines.Note",
"SaleLines.Item",
"SaleLines.InventorySales",
"SaleNotes",
"SalePayments",
"SalePayments.PaymentType",
"SalePayments.CCCharge",
"SalePayments.SaleAccounts",
"SalePayments.Signatures",
"ShipTo",
"ShipTo.Contact",
"Customer",
"Customer.Contact",
"Discount",
"TaxCategory",
"TaxCategory.TaxCategoryClasses",
"Quote"
],
"type": "string"
},
"maxItems": 20,
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: SaleLines, SaleLines.Item, SalePayments, SalePayments.PaymentType, Customer. Allowed: SaleLines, SaleLines.Discount, SaleLines.TaxClass, SaleLines.Note, SaleLines.Item, SaleLines.InventorySales, SaleNotes, SalePayments, SalePayments.PaymentType, SalePayments.CCCharge, SalePayments.SaleAccounts, SalePayments.Signatures, ShipTo, ShipTo.Contact, Customer, Customer.Contact, Discount, TaxCategory, TaxCategory.TaxCategoryClasses, Quote."
}
}
}Item categories (hierarchical): categoryID, name, fullPathName, parentID, nodeDepth. GET /Account/{accountID}/Category.json.
| Argument | Type | Description |
|---|---|---|
| name | string | Name contains this text. |
| sort | string | Sort field; prefix "-" for descending. Allowed: categoryID, timeStamp, leftNode, rightNode. |
| limit | integer | Records per page (1-100, default 100). |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| parent_id | string | Only direct children of this categoryID (0 = top level). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Name contains this text."
},
"sort": {
"enum": [
"categoryID",
"-categoryID",
"timeStamp",
"-timeStamp",
"leftNode",
"-leftNode",
"rightNode",
"-rightNode"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: categoryID, timeStamp, leftNode, rightNode."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"parent_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only direct children of this categoryID (0 = top level)."
}
}
}Search customers by name, company or email: customerID, firstName, lastName, company, customerTypeID, createTime. Email search loads the Contact relation (emails, phones, addresses). Paginate with next_url. GET /Account/{accountID}/Customer.json.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort field; prefix "-" for descending. Allowed: customerID, timeStamp, firstName, lastName. |
| string | Email contains this text (searches Contact.email). | |
| limit | integer | Records per page (1-100, default 100). |
| company | string | Company contains this text. |
| archived | string | false (default) = active records only, true = active and archived, only = archived only. |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| last_name | string | Last name contains this text. |
| first_name | string | First name contains this text. |
Employees: employeeID, firstName, lastName, lockOut, archived, employeeRoleID, limitToShopID. Use employeeID to filter sales. GET /Account/{accountID}/Employee.json.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort field; prefix "-" for descending. Allowed: employeeID, timeStamp. |
| limit | integer | Records per page (1-100, default 100). |
| archived | string | false (default) = active records only, true = active and archived, only = archived only. |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| include_contact | boolean | Include the Contact relation. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"employeeID",
"-employeeID",
"timeStamp",
"-timeStamp"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: employeeID, timeStamp."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"archived": {
"enum": [
"false",
"true",
"only"
],
"type": "string",
"description": "false (default) = active records only, true = active and archived, only = archived only."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"include_contact": {
"type": "boolean",
"description": "Include the Contact relation."
}
}
}Stock levels per item per shop (ItemShop records): qoh (quantity on hand), sellable, backorder, reorderPoint, reorderLevel, costs and values. shopID 0 is the all-shops summary. Paginate with next_url. GET /Account/{accountID}/ItemShop.json.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort field; prefix "-" for descending. Allowed: itemShopID, timeStamp. |
| limit | integer | Records per page (1-100, default 100). |
| item_id | string | Only this item (itemID). |
| max_qoh | integer | Quantity on hand <= this (e.g. 0 for out of stock). |
| min_qoh | integer | Quantity on hand >= this. |
| shop_id | string | Only this shop (shopID; 0 = the all-shops summary records). |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| modified_since | string | Only records changed at or after this time (timeStamp). |
Search the product catalog. Each item has itemID, description, SKUs (systemSku, customSku, upc, ean, manufacturerSku), defaultCost, categoryID and its Prices (price levels). Set include_stock to add per-shop quantities (ItemShops; shopID 0 = all shops). Paginate with next_url. GET /Account/{accountID}/Item.json.
| Argument | Type | Description |
|---|---|---|
| ean | string | Exact EAN. |
| upc | string | Exact UPC. |
| sort | string | Sort field; prefix "-" for descending. Allowed: itemID, timeStamp, description. |
| limit | integer | Records per page (1-100, default 100). |
| min_qoh | integer | Only items with at least one shop record whose quantity on hand is >= this (loads ItemShops). |
| archived | string | false (default) = active records only, true = active and archived, only = archived only. |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| item_code | string |
Purchase orders to vendors: orderID, vendorID, shopID, orderedDate, arrivalDate, receivedDate, complete, totalQuantity, shipCost. GET /Account/{accountID}/Order.json.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort field; prefix "-" for descending. Allowed: orderID, timeStamp. |
| limit | integer | Records per page (1-100, default 100). |
| shop_id | string | Only orders for this shop (shopID). |
| archived | string | false (default) = active records only, true = active and archived, only = archived only. |
| complete | boolean | true = completed orders only, false = open orders only. |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| vendor_id | string | Only orders to this vendor (vendorID). |
| include_lines | boolean | Include the OrderLines relation. |
Sales history: saleID, completed/voided flags, completeTime, totals (calcSubtotal, calcTax1/2, total, balance), customerID, employeeID, shopID, registerID. Filter by a date range on completeTime (default) or timeStamp, shop, customer, employee. Set include_lines for SaleLines (items sold). Paginate with next_url. GET /Account/{accountID}/Sale.json.
| Argument | Type | Description |
|---|---|---|
| to | string | End (inclusive), same format. |
| from | string | Start (inclusive), e.g. 2026-10-01 or 2026-10-01T00:00:00-04:00. Times are UTC unless an offset is given. |
| sort | string | Sort field; prefix "-" for descending. Allowed: saleID, timeStamp, completeTime, updatetime. |
| limit | integer | Records per page (1-100, default 100). |
| voided | boolean | true = voided only, false = exclude voided. |
| shop_id | string | Only sales in this shop (shopID). |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| completed |
List the account's shops (store locations): shopID, name, time zone, archived flag. Use shopID to filter sales, inventory and purchase orders. GET /Account/{accountID}/Shop.json.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort field; prefix "-" for descending. Allowed: shopID. |
| limit | integer | Records per page (1-100, default 100). |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| include_contact | boolean | Also load each shop's Contact (address, phone). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"shopID",
"-shopID"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: shopID."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"include_contact": {
"type": "boolean",
"description": "Also load each shop's Contact (address, phone)."
}
}
}Suppliers: vendorID, name, accountNumber, archived. GET /Account/{accountID}/Vendor.json.
| Argument | Type | Description |
|---|---|---|
| name | string | Name contains this text. |
| sort | string | Sort field; prefix "-" for descending. Allowed: vendorID, timeStamp, name. |
| limit | integer | Records per page (1-100, default 100). |
| archived | string | false (default) = active records only, true = active and archived, only = archived only. |
| next_url | string | To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set. |
| include_contact | boolean | Include the Contact relation. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Name contains this text."
},
"sort": {
"enum": [
"vendorID",
"-vendorID",
"timeStamp",
"-timeStamp",
"name",
"-name"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: vendorID, timeStamp, name."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"archived": {
"enum": [
"false",
"true",
"only"
],
"type": "string",
"description": "false (default) = active records only, true = active and archived, only = archived only."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"include_contact": {
"type": "boolean",
"description": "Include the Contact relation."
}
}
}Change fields of an existing item: description, default cost, SKUs, category. Only the fields you pass are changed. Prices and stock are not changed here (use lightspeedrseries_update_stock for quantities). PUT /Account/{accountID}/Item/{itemID}.json.
| Argument | Type | Description |
|---|---|---|
| ean | string | New EAN (11-14 digits). |
| upc | string | New UPC (11-14 digits). |
| item_id* | string | The itemID to update. |
| custom_sku | string | New custom SKU. |
| category_id | string | New categoryID (0 = no category). |
| description | string | New description (shown on receipts and labels). |
| default_cost | number | New default (reorder) cost. |
| manufacturer_sku | string | New manufacturer SKU. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"item_id"
],
"properties": {
"ean": {
"type": "string",
"pattern": "^\\d{11,14}$",
"description": "New EAN (11-14 digits)."
},
"upc": {
"type": "string",
"pattern": "^\\d{11,14}$",
"description": "New UPC (11-14 digits)."
},
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The itemID to update."
},
"custom_sku": {
"type": "string",
"maxLength": 100,
"description": "New custom SKU."
},
"category_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "New categoryID (0 = no category)."
},
"description": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "New description (shown on receipts and labels)."
},
"default_cost": {
"type": "number",
"minimum": 0,
"description": "New default (reorder) cost."
},
"manufacturer_sku": {
"type": "string",
"maxLength": 100,
"description": "New manufacturer SKU."
}
}
}CHANGES STOCK COUNTS: sets (does not add to) the quantity on hand of one item in one shop to `qoh`, by updating the item's ItemShop record. Use for correcting a few items; for many items use an inventory count in Lightspeed. Identify the shop by shop_id, or by item_shop_id from lightspeedrseries_get_item's ItemShops. Not for shopID 0 (the all-shops summary). PUT /Account/{accountID}/Item/{itemID}.json with ItemShops.
| Argument | Type | Description |
|---|---|---|
| qoh* | integer | The new quantity on hand. |
| item_id* | string | The itemID. |
| shop_id | string | The shopID whose stock to set (from lightspeedrseries_list_shops). |
| item_shop_id | string | Or the itemShopID of that item/shop record (from lightspeedrseries_get_item ItemShops). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"item_id",
"qoh"
],
"properties": {
"qoh": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "The new quantity on hand."
},
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The itemID."
},
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The shopID whose stock to set (from lightspeedrseries_list_shops)."
},
"item_shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Or the itemShopID of that item/shop record (from lightspeedrseries_get_item ItemShops)."
}
}
}| include_contact | boolean | Include the Contact relation (emails, phones, addresses). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"customerID",
"-customerID",
"timeStamp",
"-timeStamp",
"firstName",
"-firstName",
"lastName",
"-lastName"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: customerID, timeStamp, firstName, lastName."
},
"email": {
"type": "string",
"maxLength": 254,
"description": "Email contains this text (searches Contact.email)."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"company": {
"type": "string",
"maxLength": 200,
"description": "Company contains this text."
},
"archived": {
"enum": [
"false",
"true",
"only"
],
"type": "string",
"description": "false (default) = active records only, true = active and archived, only = archived only."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"last_name": {
"type": "string",
"maxLength": 100,
"description": "Last name contains this text."
},
"first_name": {
"type": "string",
"maxLength": 100,
"description": "First name contains this text."
},
"include_contact": {
"type": "boolean",
"description": "Include the Contact relation (emails, phones, addresses)."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"itemShopID",
"-itemShopID",
"timeStamp",
"-timeStamp"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: itemShopID, timeStamp."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only this item (itemID)."
},
"max_qoh": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Quantity on hand <= this (e.g. 0 for out of stock)."
},
"min_qoh": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Quantity on hand >= this."
},
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only this shop (shopID; 0 = the all-shops summary records)."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"modified_since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "Only records changed at or after this time (timeStamp)."
}
}
}| Exact match on itemID, UPC or EAN. |
| vendor_id | string | Only items whose default vendor is this vendorID. |
| custom_sku | string | Exact custom SKU. |
| system_sku | string | Exact Lightspeed system SKU (the barcode on labels). |
| category_id | string | Only items in this category (categoryID). |
| description | string | Description contains this text (like search). |
| include_stock | boolean | Include per-shop stock (ItemShops relation). |
| modified_since | string | Only items modified at or after this time (item timeStamp, UTC unless an offset is given). |
| include_category | boolean | Include the Category record. |
| manufacturer_sku | string | Exact manufacturer SKU. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ean": {
"type": "string",
"pattern": "^\\d+$",
"description": "Exact EAN."
},
"upc": {
"type": "string",
"pattern": "^\\d+$",
"description": "Exact UPC."
},
"sort": {
"enum": [
"itemID",
"-itemID",
"timeStamp",
"-timeStamp",
"description",
"-description"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: itemID, timeStamp, description."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"min_qoh": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only items with at least one shop record whose quantity on hand is >= this (loads ItemShops)."
},
"archived": {
"enum": [
"false",
"true",
"only"
],
"type": "string",
"description": "false (default) = active records only, true = active and archived, only = archived only."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"item_code": {
"type": "string",
"pattern": "^\\d+$",
"description": "Exact match on itemID, UPC or EAN."
},
"vendor_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only items whose default vendor is this vendorID."
},
"custom_sku": {
"type": "string",
"maxLength": 100,
"description": "Exact custom SKU."
},
"system_sku": {
"type": "string",
"pattern": "^\\d+$",
"description": "Exact Lightspeed system SKU (the barcode on labels)."
},
"category_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only items in this category (categoryID)."
},
"description": {
"type": "string",
"maxLength": 200,
"description": "Description contains this text (like search)."
},
"include_stock": {
"type": "boolean",
"description": "Include per-shop stock (ItemShops relation)."
},
"modified_since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "Only items modified at or after this time (item timeStamp, UTC unless an offset is given)."
},
"include_category": {
"type": "boolean",
"description": "Include the Category record."
},
"manufacturer_sku": {
"type": "string",
"maxLength": 100,
"description": "Exact manufacturer SKU."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"orderID",
"-orderID",
"timeStamp",
"-timeStamp"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: orderID, timeStamp."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only orders for this shop (shopID)."
},
"archived": {
"enum": [
"false",
"true",
"only"
],
"type": "string",
"description": "false (default) = active records only, true = active and archived, only = archived only."
},
"complete": {
"type": "boolean",
"description": "true = completed orders only, false = open orders only."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"vendor_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only orders to this vendor (vendorID)."
},
"include_lines": {
"type": "boolean",
"description": "Include the OrderLines relation."
}
}
}| boolean |
| true = completed sales only, false = open/unfinished only. |
| date_field | string | Which date from/to apply to (default completeTime). |
| customer_id | string | Only sales for this customer (customerID). |
| employee_id | string | Only sales processed by this employee (employeeID). |
| include_lines | boolean | Include the SaleLines relation (line items). |
| include_payments | boolean | Include the SalePayments relation. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "End (inclusive), same format."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "Start (inclusive), e.g. 2026-10-01 or 2026-10-01T00:00:00-04:00. Times are UTC unless an offset is given."
},
"sort": {
"enum": [
"saleID",
"-saleID",
"timeStamp",
"-timeStamp",
"completeTime",
"-completeTime",
"updatetime",
"-updatetime"
],
"type": "string",
"description": "Sort field; prefix \"-\" for descending. Allowed: saleID, timeStamp, completeTime, updatetime."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100, default 100)."
},
"voided": {
"type": "boolean",
"description": "true = voided only, false = exclude voided."
},
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only sales in this shop (shopID)."
},
"next_url": {
"type": "string",
"maxLength": 4000,
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set."
},
"completed": {
"type": "boolean",
"description": "true = completed sales only, false = open/unfinished only."
},
"date_field": {
"enum": [
"completeTime",
"timeStamp",
"createTime"
],
"type": "string",
"description": "Which date from/to apply to (default completeTime)."
},
"customer_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only sales for this customer (customerID)."
},
"employee_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only sales processed by this employee (employeeID)."
},
"include_lines": {
"type": "boolean",
"description": "Include the SaleLines relation (line items)."
},
"include_payments": {
"type": "boolean",
"description": "Include the SalePayments relation."
}
}
}