{"openapi":"3.1.0","info":{"title":"Lightspeed Ecom (BYOK) API","version":"0.1.0","description":"Lightspeed Ecom (BYOK) lets an AI assistant read your own Lightspeed Ecom data through the Lightspeed Ecom API with a key you supply (API key). Read-only: 10 tools (get_shop, list_products, count_products, list_variants, list_categories, list_brands, list_orders, count_orders, list_shipments, list_reviews). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-lightspeed-ecom.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-lightspeed-ecom/docs"},"termsOfService":"https://connectorbay.com/byok-lightspeed-ecom/terms"},"servers":[{"url":"https://byok-lightspeed-ecom.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-lightspeed-ecom/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/get_shop":{"post":{"operationId":"get_shop","summary":"Show the web shop's basic information: status, main domain, currency, country and creation date (contact details are not","description":"Show the web shop's basic information: status, main domain, currency, country and creation date (contact details are not returned). Use for \"What are the basic details of my Lightspeed eCom shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"}},"required":["shop_language"],"title":"get_shopArguments","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_products":{"post":{"operationId":"list_products","summary":"List products with title, url, visibility and dates; filter by brand, id range or dates and page through results. Use fo","description":"List products with title, url, visibility and dates; filter by brand, id range or dates and page through results. Use for \"Which products are in my Lightspeed eCom shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"brand":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only products of this brand id.","title":"Brand"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"},"created_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created after this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Min"},"created_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created before this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Max"},"updated_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated after this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Min"},"updated_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated before this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Max"}},"required":["shop_language"],"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/count_products":{"post":{"operationId":"count_products","summary":"Count the products in the shop, optionally created or updated within a time window. Use for \"How many products does my L","description":"Count the products in the shop, optionally created or updated within a time window. Use for \"How many products does my Lightspeed eCom shop have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"},"created_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created after this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Min"},"created_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created before this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Max"},"updated_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated after this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Min"},"updated_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated before this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Max"}},"required":["shop_language"],"title":"count_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_variants":{"post":{"operationId":"list_variants","summary":"List product variants with SKU, EAN, prices, stock level and stock tracking mode. Use for \"Which Lightspeed eCom variant","description":"List product variants with SKU, EAN, prices, stock level and stock tracking mode. Use for \"Which Lightspeed eCom variants are low on stock\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"},"created_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created after this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Min"},"created_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created before this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Max"},"updated_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated after this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Min"},"updated_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated before this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Max"}},"required":["shop_language"],"title":"list_variantsArguments","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_categories":{"post":{"operationId":"list_categories","summary":"List product categories with title, url path, depth, visibility and parent. Use for \"What categories does my Lightspeed ","description":"List product categories with title, url path, depth, visibility and parent. Use for \"What categories does my Lightspeed eCom shop have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"},"updated_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated after this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Min"}},"required":["shop_language"],"title":"list_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_brands":{"post":{"operationId":"list_brands","summary":"List brands with title, url and visibility. Use for \"Which brands are set up in my Lightspeed eCom shop\".","description":"List brands with title, url and visibility. Use for \"Which brands are set up in my Lightspeed eCom shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"}},"required":["shop_language"],"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_orders":{"post":{"operationId":"list_orders","summary":"List orders with number, status, totals, payment and shipment status and dates (customer names, emails and addresses are","description":"List orders with number, status, totals, payment and shipment status and dates (customer names, emails and addresses are not returned). Use for \"What orders came in to my Lightspeed eCom shop this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the order with this order number, for example 'ORD201900001'.","title":"Number"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"},"created_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created after this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Min"},"created_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created before this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Max"},"updated_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated after this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Min"},"updated_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated before this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Max"}},"required":["shop_language"],"title":"list_ordersArguments","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/count_orders":{"post":{"operationId":"count_orders","summary":"Count orders in the shop, optionally within a creation or update time window. Use for \"How many orders did my Lightspeed","description":"Count orders in the shop, optionally within a creation or update time window. Use for \"How many orders did my Lightspeed eCom shop get last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"},"created_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created after this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Min"},"created_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created before this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Max"},"updated_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated after this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Min"},"updated_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated before this time, format YYYY-MM-DD HH:MM:SS.","title":"Updated At Max"}},"required":["shop_language"],"title":"count_ordersArguments","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_shipments":{"post":{"operationId":"list_shipments","summary":"List shipments with number, status (shipped, not_shipped, cancelled) and tracking code. Use for \"Which Lightspeed eCom s","description":"List shipments with number, status (shipped, not_shipped, cancelled) and tracking code. Use for \"Which Lightspeed eCom shipments are not shipped yet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"},"created_at_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created after this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Min"},"created_at_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created before this time, format YYYY-MM-DD HH:MM:SS.","title":"Created At Max"}},"required":["shop_language"],"title":"list_shipmentsArguments","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_reviews":{"post":{"operationId":"list_reviews","summary":"List product reviews with score, text, visibility and date (reviewer names are not returned). Use for \"What do customers","description":"List product reviews with score, text, visibility and date (reviewer names are not returned). Use for \"What do customers say in my Lightspeed eCom product reviews\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_language":{"description":"Two-letter shop language code used in the API path, for example 'en' or 'nl'.","maxLength":5,"title":"Shop Language","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 250).","title":"Limit"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Only records with an id above this value.","title":"Since Id"}},"required":["shop_language"],"title":"list_reviewsArguments","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}}}}