{"openapi":"3.1.0","info":{"title":"Inflow Inventory (BYOK) API","version":"0.1.0","description":"Inflow Inventory (BYOK) lets an AI assistant read your own Inflow Inventory data through the Inflow Inventory API with a key you supply (inFlow API key). Read-only: 12 tools (list_products, get_product, get_product_inventory_summary, list_customers, list_vendors, list_sales_orders, get_sales_order, list_purchase_orders, list_locations, list_stock_transfers, list_manufacturing_orders,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-inflow.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-inflow/docs"},"termsOfService":"https://connectorbay.com/byok-inflow/terms"},"servers":[{"url":"https://byok-inflow.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-inflow/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_products":{"post":{"operationId":"list_products","summary":"List products with SKU, type, active flag and total quantity on hand; filter by name, barcode, category or text search. ","description":"List products with SKU, type, active flag and total quantity on hand; filter by name, barcode, category or text search. Use for \"Which products matching 'shirt' do I have in stock\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search.","title":"Search"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Product name to match.","title":"Name"},"barcode":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Barcode to match.","title":"Barcode"},"category_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only products of this category ID.","title":"Category Id"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only active records, false for only deactivated ones.","title":"Is Active"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"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_product":{"post":{"operationId":"get_product","summary":"Get one product by ID with SKU, description, type, tracking flags and quantity on hand. Add include to also fetch prices","description":"Get one product by ID with SKU, description, type, tracking flags and quantity on hand. Add include to also fetch prices, categories or inventory lines. Use for \"What are the details of product 6a1f... including its stock by location\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"product_id":{"description":"Product ID (a UUID) from list_products.","maxLength":200,"title":"Product Id","type":"string"},"include":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated related records to add to each result (nested with a dot), for example 'inventoryLines.location,defaultPrice,category'.","title":"Include"}},"required":["company_id","product_id"],"title":"get_productArguments","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_product_inventory_summary":{"post":{"operationId":"get_product_inventory_summary","summary":"Get the stock position of one product: on hand, available, reserved, on order and in transit, optionally for one locatio","description":"Get the stock position of one product: on hand, available, reserved, on order and in transit, optionally for one location. Use for \"How many units of this product are available versus reserved\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"product_id":{"description":"Product ID (a UUID) from list_products.","maxLength":200,"title":"Product Id","type":"string"},"location_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only this location ID; omit for all locations.","title":"Location Id"}},"required":["company_id","product_id"],"title":"get_product_inventory_summaryArguments","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_customers":{"post":{"operationId":"list_customers","summary":"List customers with contact name, email, phone and active flag; filter by name, email, city, country or text search. Use","description":"List customers with contact name, email, phone and active flag; filter by name, email, city, country or text search. Use for \"Which customers are based in Toronto\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search.","title":"Search"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Customer name to match.","title":"Name"},"email":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Email address to match.","title":"Email"},"city":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"City to match.","title":"City"},"country":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Country to match.","title":"Country"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only active records, false for only deactivated ones.","title":"Is Active"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"title":"list_customersArguments","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_vendors":{"post":{"operationId":"list_vendors","summary":"List vendors (suppliers) with contact details, lead time and active flag; filter by name, email, city, country or text s","description":"List vendors (suppliers) with contact details, lead time and active flag; filter by name, email, city, country or text search. Use for \"Which vendors have a lead time over two weeks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search.","title":"Search"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Vendor name to match.","title":"Name"},"email":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Email address to match.","title":"Email"},"city":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"City to match.","title":"City"},"country":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Country to match.","title":"Country"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only active records, false for only deactivated ones.","title":"Is Active"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"title":"list_vendorsArguments","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_sales_orders":{"post":{"operationId":"list_sales_orders","summary":"List sales orders and quotes with totals, balance, payment and inventory status; filter by order number, customer, PO nu","description":"List sales orders and quotes with totals, balance, payment and inventory status; filter by order number, customer, PO number or location. Use for \"Which sales orders for this customer still have an unpaid balance\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"order_number":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Order number to match, for example 'SO-000123'.","title":"Order Number"},"customer_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders of this customer ID.","title":"Customer Id"},"po_number":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Customer PO number to match.","title":"Po Number"},"location_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders for this location ID.","title":"Location Id"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"include":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated related records to add to each result (nested with a dot), for example 'customer,lines'.","title":"Include"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"title":"list_sales_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_sales_order":{"post":{"operationId":"get_sales_order","summary":"Get one sales order with totals and statuses; add include=lines to see its line items. Use for \"What items are on sales ","description":"Get one sales order with totals and statuses; add include=lines to see its line items. Use for \"What items are on sales order SO-000123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"sales_order_id":{"description":"Sales order ID (a UUID) from list_sales_orders.","maxLength":200,"title":"Sales Order Id","type":"string"},"include":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated related records to add to each result (nested with a dot), for example 'lines.product,customer'.","title":"Include"}},"required":["company_id","sales_order_id"],"title":"get_sales_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_purchase_orders":{"post":{"operationId":"list_purchase_orders","summary":"List purchase orders with vendor, totals, balance, payment and inventory status; filter by order number, vendor or locat","description":"List purchase orders with vendor, totals, balance, payment and inventory status; filter by order number, vendor or location. Use for \"Which purchase orders from this vendor are still waiting to be received\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"order_number":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Order number to match, for example 'PO-000045'.","title":"Order Number"},"vendor_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders of this vendor ID.","title":"Vendor Id"},"vendor_order_number":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Vendor's own order number to match.","title":"Vendor Order Number"},"location_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders for this location ID.","title":"Location Id"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"include":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated related records to add to each result (nested with a dot), for example 'vendor,lines'.","title":"Include"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"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/list_locations":{"post":{"operationId":"list_locations","summary":"List warehouse and store locations with name, address and default flag. Use for \"What stock locations does my inFlow acc","description":"List warehouse and store locations with name, address and default flag. Use for \"What stock locations does my inFlow account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"title":"list_locationsArguments","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_transfers":{"post":{"operationId":"list_stock_transfers","summary":"List stock transfers between locations with status, dates and the from and to location IDs. Use for \"Which stock transfe","description":"List stock transfers between locations with status, dates and the from and to location IDs. Use for \"Which stock transfers are still in transit between warehouses\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"transfer_number":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Transfer number to match.","title":"Transfer Number"},"from_location_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only transfers from this location ID.","title":"From Location Id"},"to_location_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only transfers to this location ID.","title":"To Location Id"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"include":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated related records to add to each result (nested with a dot), for example 'lines.product'.","title":"Include"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"title":"list_stock_transfersArguments","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_manufacturing_orders":{"post":{"operationId":"list_manufacturing_orders","summary":"List manufacturing orders with status, dates, location and the primary finished product. Use for \"Which manufacturing or","description":"List manufacturing orders with status, dates, location and the primary finished product. Use for \"Which manufacturing orders are due this week and not yet completed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"order_number":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Manufacturing order number to match.","title":"Order Number"},"location_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders for this location ID.","title":"Location Id"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"include":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated related records to add to each result (nested with a dot), for example 'lines.product'.","title":"Include"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"title":"list_manufacturing_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_stock_adjustments":{"post":{"operationId":"list_stock_adjustments","summary":"List stock adjustments with number, date, reason, location and remarks. Use for \"What stock adjustments were made last m","description":"List stock adjustments with number, date, reason, location and remarks. Use for \"What stock adjustments were made last month and why\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Your inFlow company ID (a UUID), shown next to the API key on the inFlow integrations page.","maxLength":200,"title":"Company Id","type":"string"},"adjustment_number":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Adjustment number to match.","title":"Adjustment Number"},"location_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only adjustments at this location ID.","title":"Location Id"},"adjustment_reason":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only adjustments with this adjustment reason ID.","title":"Adjustment Reason"},"last_modified":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only records changed in a date range, as JSON text like {\"fromDate\":\"2026-01-01\",\"toDate\":\"2026-01-31\"}.","title":"Last Modified"},"include":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated related records to add to each result (nested with a dot), for example 'lines.product,adjustmentReason'.","title":"Include"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the property to sort by, for example 'name' or 'orderDate'.","title":"Sort"},"sort_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to sort in descending order.","title":"Sort Desc"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Count"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the ID of the last record of the previous page (returns records sorted after it).","title":"After"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records to skip, for paging.","title":"Skip"}},"required":["company_id"],"title":"list_stock_adjustmentsArguments","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}}}}