{"openapi":"3.1.0","info":{"title":"Zenventory (BYOK) API","version":"0.1.0","description":"Zenventory (BYOK) lets an AI assistant read your own Zenventory data through the Zenventory API with a key you supply (Zenventory API key (used as the user name)). Read-only: 9 tools (list_items, get_item, list_inventory, list_item_inventory, list_purchase_orders, get_purchase_order, list_transfer_orders, list_cycle_counts, list_customer_orders). The BYOK key travels with each request, is used...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-zenventory.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-zenventory/docs"},"termsOfService":"https://connectorbay.com/byok-zenventory/terms"},"servers":[{"url":"https://byok-zenventory.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-zenventory/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_items":{"post":{"operationId":"list_items","summary":"List items with SKU, UPC, description, category, client, cost, price, flags (kit, assembly, lot tracked, serialized) and","description":"List items with SKU, UPC, description, category, client, cost, price, flags (kit, assembly, lot tracked, serialized) and dates. Use for \"Which items in Zenventory were modified this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_for":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to find in SKU, UPC or description (exact or partial).","title":"Search For"},"client_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of this client (3PL) ID.","title":"Client Id"},"category":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this item category.","title":"Category"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active items (the default), false for inactive ones.","title":"Active"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Created at or after this time (ISO 8601 date-time).","title":"Created From"},"created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Created at or before this time (ISO 8601 date-time).","title":"Created To"},"modified_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Modified at or after this time (ISO 8601 date-time).","title":"Modified From"},"modified_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Modified at or before this time (ISO 8601 date-time).","title":"Modified To"},"per_page":{"anyOf":[{"maximum":100,"minimum":20,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records per page (20 to 100; 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_itemsArguments","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_item":{"post":{"operationId":"get_item","summary":"Get one item by ID with cost, price, dimensions, safety stock, lead time and user fields. Use for \"Show Zenventory item ","description":"Get one item by ID with cost, price, dimensions, safety stock, lead time and user fields. Use for \"Show Zenventory item 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric item ID.","title":"Id","type":"integer"}},"required":["id"],"title":"get_itemArguments","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":{"post":{"operationId":"list_inventory","summary":"List inventory levels per item: in stock, allocated, sellable, under par and inbound quantities. Use for \"How much stock","description":"List inventory levels per item: in stock, allocated, sellable, under par and inbound quantities. Use for \"How much stock do I have per SKU in Zenventory\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_for":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to find in SKU, UPC or description (exact or partial).","title":"Search For"},"client_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of this client (3PL) ID.","title":"Client Id"},"warehouse_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this warehouse ID.","title":"Warehouse Id"},"location_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this location ID.","title":"Location Id"},"category":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this item category.","title":"Category"},"in_stock":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include only items that are in stock.","title":"In Stock"},"low_stock":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include only items below their reorder level.","title":"Low Stock"},"per_page":{"anyOf":[{"maximum":100,"minimum":20,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records per page (20 to 100; 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_inventoryArguments","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_item_inventory":{"post":{"operationId":"list_item_inventory","summary":"List inventory broken down by lot number and expiration date. Use for \"Which lots in Zenventory expire soon\".","description":"List inventory broken down by lot number and expiration date. Use for \"Which lots in Zenventory expire soon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_for":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to find in SKU, UPC or description (exact or partial).","title":"Search For"},"client_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of this client (3PL) ID.","title":"Client Id"},"warehouse_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this warehouse ID.","title":"Warehouse Id"},"location_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this location ID.","title":"Location Id"},"category":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this item category.","title":"Category"},"lot_number":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include only lot-tracked items.","title":"Lot Number"},"perishable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include only perishable items.","title":"Perishable"},"per_page":{"anyOf":[{"maximum":100,"minimum":20,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records per page (20 to 100; 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_item_inventoryArguments","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_purchase_orders":{"post":{"operationId":"list_purchase_orders","summary":"List purchase orders with supplier, warehouse, status flags, dates and lines. Use for \"Which Zenventory purchase orders ","description":"List purchase orders with supplier, warehouse, status flags, dates and lines. Use for \"Which Zenventory purchase orders are still open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"order_number":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Full or partial order number.","title":"Order Number"},"warehouse_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this warehouse ID.","title":"Warehouse Id"},"supplier_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this supplier ID.","title":"Supplier Id"},"client_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of this client (3PL) ID.","title":"Client Id"},"open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only open purchase orders.","title":"Open"},"completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only completed purchase orders.","title":"Completed"},"draft":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only draft purchase orders.","title":"Draft"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Created at or after this time (ISO 8601 date-time).","title":"Created From"},"created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Created at or before this time (ISO 8601 date-time).","title":"Created To"},"per_page":{"anyOf":[{"maximum":100,"minimum":20,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records per page (20 to 100; 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_purchase_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/get_purchase_order":{"post":{"operationId":"get_purchase_order","summary":"Get one purchase order by ID with its lines (SKU, quantity, unit cost). Use for \"Show Zenventory purchase order 55\".","description":"Get one purchase order by ID with its lines (SKU, quantity, unit cost). Use for \"Show Zenventory purchase order 55\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric purchase order ID.","title":"Id","type":"integer"}},"required":["id"],"title":"get_purchase_orderArguments","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_transfer_orders":{"post":{"operationId":"list_transfer_orders","summary":"List transfer orders between warehouses with status flags, dates and lines. Use for \"What transfers are in progress in Z","description":"List transfer orders between warehouses with status flags, dates and lines. Use for \"What transfers are in progress in Zenventory\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only open transfer orders.","title":"Open"},"completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only completed transfer orders.","title":"Completed"},"draft":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only draft transfer orders.","title":"Draft"},"origin_warehouse_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transfers leaving this warehouse ID.","title":"Origin Warehouse Id"},"destination_warehouse_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transfers going to this warehouse ID.","title":"Destination Warehouse Id"},"per_page":{"anyOf":[{"maximum":100,"minimum":20,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records per page (20 to 100; 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_transfer_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_cycle_counts":{"post":{"operationId":"list_cycle_counts","summary":"List cycle counts with warehouse, progress, accuracy and approval state. Use for \"How accurate were the latest Zenventor","description":"List cycle counts with warehouse, progress, accuracy and approval state. Use for \"How accurate were the latest Zenventory cycle counts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["normal","adjustment"],"type":"string"},{"type":"null"}],"default":null,"description":"Kind of cycle count: normal or adjustment.","title":"Type"},"in_progress":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for counts whose locations are not all counted yet.","title":"In Progress"},"approved":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for counts that are fully counted and approved.","title":"Approved"},"warehouse_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this warehouse ID.","title":"Warehouse Id"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Created at or after this time (ISO 8601 date-time).","title":"Created From"},"created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Created at or before this time (ISO 8601 date-time).","title":"Created To"},"per_page":{"anyOf":[{"maximum":100,"minimum":20,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records per page (20 to 100; 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_cycle_countsArguments","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_customer_orders":{"post":{"operationId":"list_customer_orders","summary":"List customer (sales) orders with number, client, status flags, dates, ship method and lines. Customer names, addresses ","description":"List customer (sales) orders with number, client, status flags, dates, ship method and lines. Customer names, addresses and emails are left out. Use for \"Which Zenventory customer orders are open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only open customer orders.","title":"Open"},"completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only completed customer orders.","title":"Completed"},"draft":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only draft customer orders.","title":"Draft"},"cancelled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only cancelled customer orders.","title":"Cancelled"},"per_page":{"anyOf":[{"maximum":100,"minimum":20,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records per page (20 to 100; 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_customer_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}}}}