{"openapi":"3.1.0","info":{"title":"Loyverse Setup (BYOK) API","version":"0.1.0","description":"Loyverse Setup (BYOK) lets an AI assistant read your own Loyverse Setup data through the Loyverse Setup API with a key you supply (Loyverse access token). Read-only: 11 tools (list_taxes, get_tax, list_discounts, get_discount, list_modifiers, get_modifier, list_pos_devices, get_pos_device, list_suppliers, get_store, get_payment_type). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-loyverse-store-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-loyverse-store-config/docs"},"termsOfService":"https://connectorbay.com/byok-loyverse-store-config/terms"},"servers":[{"url":"https://byok-loyverse-store-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-loyverse-store-config/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_taxes":{"post":{"operationId":"list_taxes","summary":"List the tax rates of the Loyverse account with name, rate in percent, whether the tax is added to or included in prices","description":"List the tax rates of the Loyverse account with name, rate in percent, whether the tax is added to or included in prices, and the stores where it applies. Use for \"What tax rates are set up in my Loyverse account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tax_ids":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tax IDs to return only those taxes.","title":"Tax Ids"},"show_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include soft-deleted records.","title":"Show Deleted"},"updated_at_min":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated at or after this UTC time, ISO 8601, for example 2026-01-01T00:00:00.000Z.","title":"Updated At Min"}},"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/get_tax":{"post":{"operationId":"get_tax","summary":"Get one tax rate: name, rate in percent, type and stores. Use for \"Show Loyverse tax t1\".","description":"Get one tax rate: name, rate in percent, type and stores. Use for \"Show Loyverse tax t1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tax_id":{"description":"Loyverse tax ID (from list_taxes).","maxLength":60,"title":"Tax Id","type":"string"}},"required":["tax_id"],"title":"get_taxArguments","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_discounts":{"post":{"operationId":"list_discounts","summary":"List the preset discounts with type, percentage or amount, whether a password is needed to apply them, and the stores wh","description":"List the preset discounts with type, percentage or amount, whether a password is needed to apply them, and the stores where they apply. Use for \"What discounts can staff apply in Loyverse\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"discount_ids":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated discount IDs to return only those.","title":"Discount Ids"},"show_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include soft-deleted records.","title":"Show Deleted"},"updated_at_min":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated at or after this UTC time, ISO 8601, for example 2026-01-01T00:00:00.000Z.","title":"Updated At Min"}},"title":"list_discountsArguments","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/get_discount":{"post":{"operationId":"get_discount","summary":"Get one discount: type, percentage or amount, access restriction and stores. Use for \"Show Loyverse discount d1\".","description":"Get one discount: type, percentage or amount, access restriction and stores. Use for \"Show Loyverse discount d1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"discount_id":{"description":"Loyverse discount ID (from list_discounts).","maxLength":60,"title":"Discount Id","type":"string"}},"required":["discount_id"],"title":"get_discountArguments","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_modifiers":{"post":{"operationId":"list_modifiers","summary":"List modifiers (menu add-ons such as extras or sizes) with their options and option prices. Up to 250 per page; pass the","description":"List modifiers (menu add-ons such as extras or sizes) with their options and option prices. Up to 250 per page; pass the returned cursor for more. Use for \"What modifiers does my Loyverse menu have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"modifier_ids":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated modifier IDs to return only those.","title":"Modifier Ids"},"show_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include soft-deleted records.","title":"Show Deleted"},"updated_at_min":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated at or after this UTC time, ISO 8601, for example 2026-01-01T00:00:00.000Z.","title":"Updated At Min"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 250).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer to fetch the next page; leave empty for the first page.","title":"Cursor"}},"title":"list_modifiersArguments","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/get_modifier":{"post":{"operationId":"get_modifier","summary":"Get one modifier with its options and option prices. Use for \"Show Loyverse modifier m1\".","description":"Get one modifier with its options and option prices. Use for \"Show Loyverse modifier m1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"modifier_id":{"description":"Loyverse modifier ID (from list_modifiers).","maxLength":60,"title":"Modifier Id","type":"string"}},"required":["modifier_id"],"title":"get_modifierArguments","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_pos_devices":{"post":{"operationId":"list_pos_devices","summary":"List the POS devices registered in the account with name, store and whether the device is activated. Use for \"Which POS ","description":"List the POS devices registered in the account with name, store and whether the device is activated. Use for \"Which POS devices are registered in my Loyverse account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"store_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices of this store ID.","title":"Store Id"},"show_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include soft-deleted records.","title":"Show Deleted"}},"title":"list_pos_devicesArguments","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/get_pos_device":{"post":{"operationId":"get_pos_device","summary":"Get one POS device: name, store and activation status. Use for \"Show Loyverse POS device pd1\".","description":"Get one POS device: name, store and activation status. Use for \"Show Loyverse POS device pd1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pos_device_id":{"description":"Loyverse POS device ID (from list_pos_devices).","maxLength":60,"title":"Pos Device Id","type":"string"}},"required":["pos_device_id"],"title":"get_pos_deviceArguments","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 company name, website, city, region and country. Contact person, email, phone and notes are left out","description":"List suppliers with company name, website, city, region and country. Contact person, email, phone and notes are left out. Up to 250 per page. Use for \"Which suppliers does my Loyverse account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"suppliers_ids":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated supplier IDs to return only those.","title":"Suppliers Ids"},"show_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include soft-deleted records.","title":"Show Deleted"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 250).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer to fetch the next page; leave empty for the first page.","title":"Cursor"}},"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/get_store":{"post":{"operationId":"get_store","summary":"Get one store: name, address, phone number and description. Use for \"Show Loyverse store s1\".","description":"Get one store: name, address, phone number and description. Use for \"Show Loyverse store s1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"store_id":{"description":"Loyverse store ID (from the stores list).","maxLength":60,"title":"Store Id","type":"string"}},"required":["store_id"],"title":"get_storeArguments","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/get_payment_type":{"post":{"operationId":"get_payment_type","summary":"Get one payment type: name, kind (cash, card, check and so on) and the stores where it is available. Use for \"Show Loyve","description":"Get one payment type: name, kind (cash, card, check and so on) and the stores where it is available. Use for \"Show Loyverse payment type p1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"payment_type_id":{"description":"Loyverse payment type ID (from list_payment_types).","maxLength":60,"title":"Payment Type Id","type":"string"}},"required":["payment_type_id"],"title":"get_payment_typeArguments","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}}}}