{"openapi":"3.1.0","info":{"title":"ChannelEngine (BYOK) API","version":"0.1.0","description":"ChannelEngine (BYOK) lets an AI assistant read your own ChannelEngine data through the ChannelEngine API with a key you supply (ChannelEngine API key). Read-only: 8 tools (get_settings, list_products, get_stock, list_orders, list_new_orders, list_returns, list_cancellations, list_shipments). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-channelengine.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-channelengine/docs"},"termsOfService":"https://connectorbay.com/byok-channelengine/terms"},"servers":[{"url":"https://byok-channelengine.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-channelengine/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_settings":{"post":{"operationId":"get_settings","summary":"Show the ChannelEngine account: name, company name, currency, default culture and VAT settings per country. Use for \"Whi","description":"Show the ChannelEngine account: name, company name, currency, default culture and VAT settings per country. Use for \"Which ChannelEngine account am I connected to and what are its VAT settings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"}},"required":["tenant"],"title":"get_settingsArguments","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 name, brand, EAN, merchant product number, stock, price, MSRP, VAT type, category trail and active fl","description":"List products with name, brand, EAN, merchant product number, stock, price, MSRP, VAT type, category trail and active flag. Search by name, number, EAN or brand. Use for \"Which products do we have in ChannelEngine and what is their stock\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search by name, merchant product number, EAN or brand.","title":"Search"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"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/get_stock":{"post":{"operationId":"get_stock","summary":"Get stock levels per product for a ChannelEngine stock location, with last-update time. Use for \"How much stock does loc","description":"Get stock levels per product for a ChannelEngine stock location, with last-update time. Use for \"How much stock does location 1 hold for each SKU\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"stock_location_ids":{"description":"ChannelEngine id of the stock location.","minimum":1,"title":"Stock Location Ids","type":"integer"},"skus":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Optional single product SKU (merchant product number) to look up.","title":"Skus"},"page_index":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based page index.","title":"Page Index"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Items per page (default 100).","title":"Page Size"}},"required":["tenant","stock_location_ids"],"title":"get_stockArguments","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 channel, status, dates, totals, currency and payment method. Customer name, address, email and phone ar","description":"List orders with channel, status, dates, totals, currency and payment method. Customer name, address, email and phone are not returned. Filter by status, channel and dates. Use for \"How many orders came in from each marketplace this week and what are they worth\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"statuses":{"anyOf":[{"enum":["NEW","IN_PROGRESS","SHIPPED","IN_BACKORDER","MANCO","CANCELED","IN_COMBI","CLOSED","RETURNED","REQUIRES_CORRECTION","AWAITING_PAYMENT"],"type":"string"},{"type":"null"}],"default":null,"description":"Order status filter.","title":"Statuses"},"channel_ids":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Filter on one ChannelEngine channel id.","title":"Channel Ids"},"from_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders dated on or after this ISO 8601 date-time.","title":"From Date"},"to_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders dated before this ISO 8601 date-time.","title":"To Date"},"from_updated_at_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders updated on or after this ISO 8601 date-time.","title":"From Updated At Date"},"is_acknowledged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only acknowledged orders, false for unacknowledged ones.","title":"Is Acknowledged"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"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/list_new_orders":{"post":{"operationId":"list_new_orders","summary":"List new orders that have not been acknowledged yet, with channel, status, totals and currency. Customer details are not","description":"List new orders that have not been acknowledged yet, with channel, status, totals and currency. Customer details are not returned. Use for \"Which new orders are waiting to be acknowledged in ChannelEngine\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"stock_location_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only orders for this stock location id.","title":"Stock Location Id"}},"required":["tenant"],"title":"list_new_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_returns":{"post":{"operationId":"list_returns","summary":"List returns with channel, status, reason, refund amounts and return date (customer comments are not returned). Use for ","description":"List returns with channel, status, reason, refund amounts and return date (customer comments are not returned). Use for \"Which returns were filed recently and why\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"statuses":{"anyOf":[{"enum":["IN_PROGRESS","RECEIVED","CANCELLED"],"type":"string"},{"type":"null"}],"default":null,"description":"Return status filter.","title":"Statuses"},"reasons":{"anyOf":[{"enum":["PRODUCT_DEFECT","PRODUCT_UNSATISFACTORY","WRONG_PRODUCT","TOO_MANY_PRODUCTS","REFUSED","REFUSED_DAMAGED","WRONG_ADDRESS","NOT_COLLECTED","WRONG_SIZE","OTHER"],"type":"string"},{"type":"null"}],"default":null,"description":"Return reason filter.","title":"Reasons"},"creator_type":{"anyOf":[{"enum":["ONLY_FROM_MERCHANT","ONLY_FROM_CHANNEL","MIXED"],"type":"string"},{"type":"null"}],"default":null,"description":"Who created the return.","title":"Creator Type"},"channel_ids":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Filter on one ChannelEngine channel id.","title":"Channel Ids"},"from_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only returns created on or after this ISO 8601 date-time.","title":"From Date"},"to_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only returns created before this ISO 8601 date-time.","title":"To Date"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_returnsArguments","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_cancellations":{"post":{"operationId":"list_cancellations","summary":"List order cancellations (out-of-stock or manco) with order numbers, reason, reason code and created time. Use for \"Whic","description":"List order cancellations (out-of-stock or manco) with order numbers, reason, reason code and created time. Use for \"Which orders were cancelled and for what reason\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"created_since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only cancellations created on or after this ISO 8601 date-time.","title":"Created Since"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_cancellationsArguments","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 shipping method, ship-from country, shipment date and linked order numbers (no addresses). Use for \"","description":"List shipments with shipping method, ship-from country, shipment date and linked order numbers (no addresses). Use for \"Which shipping methods did we use for recent shipments\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your ChannelEngine account subdomain, the first part of <tenant>.channelengine.net.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"method":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Filter on shipping method.","title":"Method"},"from_shipment_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only shipments on or after this ISO 8601 date-time.","title":"From Shipment Date"},"to_shipment_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only shipments before this ISO 8601 date-time.","title":"To Shipment Date"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"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}}}}