{"openapi":"3.1.0","info":{"title":"Lightspeed Retail X-Series (BYOK) API","version":"0.1.0","description":"Lightspeed Retail X-Series (BYOK) lets an AI assistant read your own Lightspeed Retail X-Series data through the Lightspeed Retail X-Series API with a key you supply (personal token). Read-only: 11 tools (list_products, list_sales, list_customers, list_outlets, list_suppliers, list_brands, list_registers, list_payment_types, list_taxes, list_product_categories, list_inventory_levels). The BYOK...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-lightspeed-retail-x.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-lightspeed-retail-x/docs"},"termsOfService":"https://connectorbay.com/byok-lightspeed-retail-x/terms"},"servers":[{"url":"https://byok-lightspeed-retail-x.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-lightspeed-retail-x/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_products":{"post":{"operationId":"list_products","summary":"List products of the store with name, SKU, handle, prices, supplier, brand and variant info. Needs a token with products","description":"List products of the store with name, SKU, handle, prices, supplier, brand and variant info. Needs a token with products:read. Use for \"List the active products in my Lightspeed Retail store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"},"sku":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Load one product by SKU (other filters are ignored when given).","title":"Sku"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Load the products of the family with this exact name (other filters are ignored when given).","title":"Name"},"include_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"False to leave out image fields.","title":"Include Images"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted records.","title":"Deleted"}},"required":["domain_prefix"],"title":"list_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_sales":{"post":{"operationId":"list_sales","summary":"List sales (parked, pending, voided or closed) with invoice number, date, state, customer ID and totals. Needs a token w","description":"List sales (parked, pending, voided or closed) with invoice number, date, state, customer ID and totals. Needs a token with sales:read. Use for \"Show recent sales in my Lightspeed Retail store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"}},"required":["domain_prefix"],"title":"list_salesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_customers":{"post":{"operationId":"list_customers","summary":"List customers with name, company, customer code, group, balances and loyalty balance (contact details are left out). Ne","description":"List customers with name, company, customer code, group, balances and loyalty balance (contact details are left out). Needs customers:read. Use for \"How many customers does my Lightspeed Retail store have, and who has a loyalty balance\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted records.","title":"Deleted"}},"required":["domain_prefix"],"title":"list_customersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_outlets":{"post":{"operationId":"list_outlets","summary":"List the store's outlets (locations) with name, currency, time zone and whether prices show with tax. Needs outlets:read","description":"List the store's outlets (locations) with name, currency, time zone and whether prices show with tax. Needs outlets:read. Use for \"Which outlets does my Lightspeed Retail account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted records.","title":"Deleted"}},"required":["domain_prefix"],"title":"list_outletsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_suppliers":{"post":{"operationId":"list_suppliers","summary":"List suppliers with name, description and default markup. Needs suppliers:read. Use for \"Who are my suppliers in Lightsp","description":"List suppliers with name, description and default markup. Needs suppliers:read. Use for \"Who are my suppliers in Lightspeed Retail\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted records.","title":"Deleted"}},"required":["domain_prefix"],"title":"list_suppliersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_brands":{"post":{"operationId":"list_brands","summary":"List product brands with name and description. Needs products:read. Use for \"List the product brands in my Lightspeed Re","description":"List product brands with name and description. Needs products:read. Use for \"List the product brands in my Lightspeed Retail store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted records.","title":"Deleted"}},"required":["domain_prefix"],"title":"list_brandsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_registers":{"post":{"operationId":"list_registers","summary":"List cash registers with name, outlet, whether the register is open and when it opened or closed. Needs registers:read. ","description":"List cash registers with name, outlet, whether the register is open and when it opened or closed. Needs registers:read. Use for \"Which registers are open in my Lightspeed Retail store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted records.","title":"Deleted"}},"required":["domain_prefix"],"title":"list_registersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_payment_types":{"post":{"operationId":"list_payment_types","summary":"List payment types with name, whether they are disabled and the outlets they apply to. Needs payments:read. Use for \"Whi","description":"List payment types with name, whether they are disabled and the outlets they apply to. Needs payments:read. Use for \"Which payment types are set up in my Lightspeed Retail store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"},"currency":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only payment types for this ISO 4217 currency code, for example USD.","title":"Currency"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted records.","title":"Deleted"}},"required":["domain_prefix"],"title":"list_payment_typesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_taxes":{"post":{"operationId":"list_taxes","summary":"List taxes with display name, default flag and rates. Needs taxes:read. Use for \"What taxes are configured in my Lightsp","description":"List taxes with display name, default flag and rates. Needs taxes:read. Use for \"What taxes are configured in my Lightspeed Retail store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Version cursor: pass version.max from the previous answer to get the next page; leave empty for the first page.","title":"After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (up to 1000).","title":"Page Size"}},"required":["domain_prefix"],"title":"list_taxesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_categories":{"post":{"operationId":"list_product_categories","summary":"List the product category tree: ID, name, parent and root category. Cursor-paged by category ID. Needs products:read. Us","description":"List the product category tree: ID, name, parent and root category. Cursor-paged by category ID. Needs products:read. Use for \"Show my product categories in Lightspeed Retail\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"parent":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"A category ID to list only its categories, or 'none' for root categories only.","title":"Parent"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of categories to return (default 1000).","title":"Page Size"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Category ID from page_info.last_seen of the previous answer to get the next page.","title":"After"}},"required":["domain_prefix"],"title":"list_product_categoriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_inventory_levels":{"post":{"operationId":"list_inventory_levels","summary":"List current stock per product and outlet: quantity on hand, average cost and reorder settings. Needs inventory:read. Us","description":"List current stock per product and outlet: quantity on hand, average cost and reorder settings. Needs inventory:read. Use for \"What is the stock level of each product in my Lightspeed Retail store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_prefix":{"description":"Your Lightspeed Retail (X-Series) domain prefix: the part before .retail.lightspeed.app in your store address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain Prefix","type":"string"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records to return (1 to 1000).","title":"Size"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip.","title":"Offset"},"include_inactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include inactive products.","title":"Include Inactive"}},"required":["domain_prefix"],"title":"list_inventory_levelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}