{"openapi":"3.1.0","info":{"title":"Shoptet (BYOK) API","version":"0.1.0","description":"Shoptet (BYOK) lets an AI assistant read your own Shoptet data through the Shoptet API with a key you supply (private API token). Read-only: 12 tools (get_eshop_info, list_products, list_product_changes, list_categories, list_brands, list_order_changes, list_order_statuses, list_stocks, list_stock_supplies, list_shipping_methods, list_payment_methods, list_availabilities). The BYOK key travels...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-shoptet.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-shoptet/docs"},"termsOfService":"https://connectorbay.com/byok-shoptet/terms"},"servers":[{"url":"https://byok-shoptet.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-shoptet/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_eshop_info":{"post":{"operationId":"get_eshop_info","summary":"Basic facts about the e-shop: ID, name, address, title, VAT-payer flag, language, time zone, default price list and acti","description":"Basic facts about the e-shop: ID, name, address, title, VAT-payer flag, language, time zone, default price list and active modules. Use for \"Which Shoptet e-shop is this token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_eshop_infoArguments","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 GUID, name, type, visibility, brand, supplier, default category, main image, rating and creation and ","description":"List products with GUID, name, type, visibility, brand, supplier, default category, main image, rating and creation and change times. Filter by category, brand, visibility, type or dates. Use for \"Which products were created in the last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category_guid":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only products added to this category (GUID from list_categories).","title":"Category Guid"},"brand_code":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only products of this brand (code from list_brands).","title":"Brand Code"},"visibility":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Product visibility: visible, hidden, blocked, show-registered, block-unregistered, cash-desk-only or detail-only.","title":"Visibility"},"type":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Product type: product, bazar, service or product-set.","title":"Type"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only products created at or after this ISO 8601 date and time.","title":"Created From"},"created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only products created at or before this ISO 8601 date and time.","title":"Created To"},"changed_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only products changed at or after this ISO 8601 date and time.","title":"Changed From"},"product_codes":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Up to 50 product codes, comma-separated; other filters are then ignored.","title":"Product Codes"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 1000, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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_product_changes":{"post":{"operationId":"list_product_changes","summary":"List products created, edited or deleted since a given time, with GUID, change time and change type. Use for \"Which prod","description":"List products created, edited or deleted since a given time, with GUID, change time and change type. Use for \"Which products changed since yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"description":"Show changes from this date and time on, ISO 8601 with time zone, for example 2026-10-01T00:00:00+02:00.","maxLength":40,"title":"Since","type":"string"},"change_type":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only edited or only deleted records: edit or delete.","title":"Change Type"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"Items per page (1 to 1000, default 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["since"],"title":"list_product_changesArguments","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 GUID, name, parent, visibility, URL and product ordering. Use for \"Show my category tree\".","description":"List product categories with GUID, name, parent, visibility, URL and product ordering. Use for \"Show my category tree\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":500,"description":"Items per page (1 to 1000, default 500).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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 (manufacturers) with GUID, name, website and visibility in menus. Use for \"Which brands do I sell\".","description":"List brands (manufacturers) with GUID, name, website and visibility in menus. Use for \"Which brands do I sell\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":500,"description":"Items per page (1 to 1000, default 500).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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_order_changes":{"post":{"operationId":"list_order_changes","summary":"List order codes created, edited or deleted since a given time, with change time and change type (no customer data). Use","description":"List order codes created, edited or deleted since a given time, with change time and change type (no customer data). Use for \"Which orders changed since this morning\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"description":"Show changes from this date and time on, ISO 8601 with time zone, for example 2026-10-01T00:00:00+02:00.","maxLength":40,"title":"Since","type":"string"},"change_type":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only edited or only deleted records: edit or delete.","title":"Change Type"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"Items per page (1 to 1000, default 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["since"],"title":"list_order_changesArguments","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_order_statuses":{"post":{"operationId":"list_order_statuses","summary":"List the e-shop's order statuses with ID, name, color and whether the status marks an order as paid. Use for \"What order","description":"List the e-shop's order statuses with ID, name, color and whether the status marks an order as paid. Use for \"What order statuses exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_order_statusesArguments","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_stocks":{"post":{"operationId":"list_stocks","summary":"List the e-shop's stocks (warehouses) with ID, title and whether each is a pickup point. Use for \"What stocks do I have\"","description":"List the e-shop's stocks (warehouses) with ID, title and whether each is a pickup point. Use for \"What stocks do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_stocksArguments","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_stock_supplies":{"post":{"operationId":"list_stock_supplies","summary":"List product quantities in a stock: product GUID and code, amount in stock, claimed amount, location and last change tim","description":"List product quantities in a stock: product GUID and code, amount in stock, claimed amount, location and last change time. Use for \"How many units of each product are in stock 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"stock_id":{"description":"Stock ID from list_stocks.","minimum":1,"title":"Stock Id","type":"integer"},"code":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the product with this code.","title":"Code"},"product_guid":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only the product with this GUID.","title":"Product Guid"},"only_with_claim":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only products that have a claimed amount.","title":"Only With Claim"},"changed_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only supplies changed since this ISO 8601 time (at most 30 days back).","title":"Changed From"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"Items per page (1 to 1000, default 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["stock_id"],"title":"list_stock_suppliesArguments","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_shipping_methods":{"post":{"operationId":"list_shipping_methods","summary":"List shipping methods with GUID, name, carrier, tracking URL and visibility. Use for \"Which shipping methods are set up\"","description":"List shipping methods with GUID, name, carrier, tracking URL and visibility. Use for \"Which shipping methods are set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sales_channel_guid":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only methods of this sales channel (GUID).","title":"Sales Channel Guid"}},"title":"list_shipping_methodsArguments","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_methods":{"post":{"operationId":"list_payment_methods","summary":"List payment methods with GUID, name, type and visibility. Use for \"Which payment methods are set up\".","description":"List payment methods with GUID, name, type and visibility. Use for \"Which payment methods are set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sales_channel_guid":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only methods of this sales channel (GUID).","title":"Sales Channel Guid"}},"title":"list_payment_methodsArguments","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_availabilities":{"post":{"operationId":"list_availabilities","summary":"List product availability labels (in stock, sold out, delivery times) with ID, name and delivery hours. Use for \"What av","description":"List product availability labels (in stock, sold out, delivery times) with ID, name and delivery hours. Use for \"What availability labels do my products use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_availabilitiesArguments","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}}}}