Lightspeed X-Series MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LIGHTSPEED_TOKEN | Yes | Your Lightspeed personal token from Setup → Personal tokens. | |
| LIGHTSPEED_API_VERSION | No | X-Series date-based API version. Each version is supported for about a year, so bump it yearly. | 2026-10 |
| LIGHTSPEED_DOMAIN_PREFIX | Yes | The domain prefix of your Lightspeed Retail store, e.g. `mystore` for `mystore.retail.lightspeed.app`. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_retailerA | Retailer account details: name, currency, time zone, settings. Call this first if you need the currency or local time zone. |
| list_outletsA | All outlets (stores/warehouses) with id, name, address and time zone. |
| list_registersB | All registers (tills) with their outlet and open/closed state. |
| list_usersA | Staff users (id, name, account type, outlets). Use ids with get_user_sale_totals or search_sales(user_id=...). |
| list_payment_typesB | Payment types configured (cash, card, gift card, store credit, ...). |
| list_taxesC | Sales taxes configured, with rates. |
| list_referenceA | List a reference collection. kind is one of: brands, suppliers, tags, product_categories, product_types, variant_attributes, customer_groups, price_books, outlet_taxes, button_layouts. |
| search_productsA | Find products by name, variant name, SKU or barcode (case-insensitive; every word must match). Returns product_id, name, variant, SKU and retail prices. Follow with get_inventory(product_id) for stock or get_product for full detail. |
| get_productB | One product with its family, brand, category, supplier, tags and variant attributes. Pass product_id, or sku to look it up by SKU. |
| get_product_familyA | The variant family a product belongs to (every colour/size of one item): family details, brand/category/tag names and one compact line per variant (id, variant name, SKU, retail price, active). full=True returns the raw API object (can be very large). |
| list_productsA | Raw product collection page (version cursor). Pass the previous response's
version.max as |
| get_inventoryA | Stock on hand per outlet for one product (variant), with reorder point/amount and average cost. include_variants=True covers its whole family (every colour and size; can be hundreds of rows). outlet filters by outlet name (substring). hide_zero drops rows with nothing on hand. |
| list_inventory_levelsA | Inventory levels across the catalog, optionally filtered by outlets and products (on hand, available, allocated, on order where provided). Page with offset/size (size max 10000). Use for 'what's in stock at outlet X' or low-stock reviews. |
| list_stock_adjustmentsC | Stock adjustments (manual corrections, damages, ...), version-cursor paged. |
| list_consignmentsA | Stock orders/transfers/returns/stocktakes. type: SUPPLIER, OUTLET (transfer), RETURN or STOCKTAKE. status e.g. OPEN, SENT, DISPATCHED, RECEIVED, CANCELLED, STOCKTAKE_IN_PROGRESS. Version-cursor paged. |
| get_consignmentB | One consignment with its totals and (by default) its product lines. |
| list_purchase_ordersC | Purchase orders (version-cursor paged). |
| get_purchase_orderB | One purchase order with its line items and deliveries. |
| search_salesA | Find sales. date_from/date_to are local store dates YYYY-MM-DD, inclusive (default: today). states: closed, pending (on account / layby), parked, voided (default: all). Compact rows by default; set compact=False for full line items, or call get_sale(id). |
| get_saleB | One sale in full: line items, payments, taxes, customer, totals. |
| sales_summaryA | Revenue totals for a local date range (YYYY-MM-DD, inclusive; default today).
group_by: outlet, day, user, product, or none. Counts closed sales by default
(pass states to change). Returns sales count, totals excl/incl tax, tax, units
(product grouping) and average sale value. Returns are included as negatives.
Capped at 20,000 sales per call: narrow the range if |
| get_user_sale_totalsC | A staff user's sales totals (as reported by Lightspeed). |
| get_register_payments_summaryC | Payment totals by payment type for a register's current/last session. |
| list_quotesC | Quotes (sales:read), cursor paged with |
| list_fulfillmentsB | Fulfillments (pickups/deliveries/shipping) with state, optionally by outlet or sale. |
| search_customersC | Find customers by email, name, company, phone or customer code. |
| get_customerA | One customer (contact details, group, loyalty balance, year-to-date spend) with addresses and, by default, store credit balance. |
| get_customer_group_customersC | Customers in a customer group (version-cursor paged). |
| get_store_credit_reportA | Store credit report across all customers. |
| find_gift_cardB | A gift card by number, with balance, status and transactions. |
| list_gift_cardsC | Gift cards, optionally by status (e.g. ACTIVE, VOIDED). |
| list_promotionsC | Promotions. scope: current_upcoming (default), past or all. name matches part of the promotion name; outlet_ids keeps those linked to the given outlets. |
| get_promotionA | One promotion with its rules, promo codes and applicable products (counts plus the first product_limit of each product list). |
| get_price_book_productsA | Prices in a price book (tax-exclusive): name, product_id, price, tax, markup. Filter by product_ids or query (name substring); capped at limit. |
| api_getA | Read any other X-Series endpoint with GET, e.g. /shifts, /services, /serialnumbers, /auditlog_events, /customer_taxes, /product_images/{id}. path is relative to /api/ and must start with '/'. params are query parameters (lists repeat the key). Reference: https://x-series-api.lightspeedhq.com/llms.txt |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 35 tools
Most tools target a distinct resource/action, but api_get is a catch-all GET that overlaps with every specific read tool. Product and inventory tools (search_products, list_products, get_product, get_inventory, list_inventory_levels) also require careful selection, though descriptions help.
The set is mostly consistent snake_case verb_noun naming (list_*, get_*, search_*). Minor deviations like api_get, sales_summary, and find_gift_card keep it from being perfectly uniform.
35 tools is heavy for an MCP surface, even for a broad retail API. Many read/list/get variants could be consolidated or handled through fewer well-scoped tools plus the generic api_get.
Read coverage is broad across products, inventory, sales, customers, gift cards, and promotions, but the entire write/update/delete side is absent because every tool is a GET-style read. This is a notable gap for full lifecycle coverage.