{"openapi":"3.1.0","info":{"title":"Infor ERP MCP Tools API","version":"1.0.0","description":"REST API for accessing Infor SyteLine ERP data through MCP tools. Use this API with ChatGPT Custom GPT Actions to query customers, items, orders, and more. Authenticate using the same OAuth flow as the MCP protocol."},"servers":[{"url":"https://syteline-mcp.nobelus.com","description":"Production server"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 Bearer token obtained through the OAuth flow"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"description":"Tool execution result (structure varies by tool)"},"executionTimeMs":{"type":"integer","description":"Time taken to execute the tool in milliseconds","example":245}},"required":["success","data"]},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["UNAUTHORIZED","TOOL_NOT_FOUND","INVALID_REQUEST_BODY","TOOL_EXECUTION_ERROR","INTERNAL_SERVER_ERROR"],"example":"TOOL_EXECUTION_ERROR"},"message":{"type":"string","example":"Required parameter 'customer_name' is missing"},"tool":{"type":"string","description":"Name of the tool that failed (present for tool execution errors)","example":"search_customers"}},"required":["code","message"]},"executionTimeMs":{"type":"integer","description":"Time taken before error occurred in milliseconds","example":123}},"required":["success","error"]}}},"paths":{"/api/tools/search_customers":{"post":{"summary":"Find bill-to customers by partial name to get the canonical customer_id (CustNum). Returns up to 50 matches. If results are truncated, ask the user to provide a more specific name. If results are ambiguous, ask the user to pick the correct one before using it downstream.","description":"Find bill-to customers by partial name to get the canonical customer_id (CustNum). Returns up to 50 matches. If results are truncated, ask the user to provide a more specific name. If results are ambiguous, ask the user to pick the correct one before using it downstream.","operationId":"search_customers","tags":["customers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_name":{"type":"string","description":"Partial customer name (2+ chars). Example: 'northwest', 'acme', 'print'.","example":"northwest"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["customer_name"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_customer_details":{"post":{"summary":"Fetch complete customer details including header information, all ship-to addresses, and recent orders from the last 90 days. [Read-only]","description":"Fetch complete customer details including header information, all ship-to addresses, and recent orders from the last 90 days. [Read-only]","operationId":"get_customer_details","tags":["customers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"string","description":"Customer number (CustNum)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["customer_id"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_customer_purchase_history":{"post":{"summary":"Get recent purchase history for a customer by querying order line items directly. Returns detailed line-item information including items purchased, quantities, prices, and dates. Results are sorted by order date (most recent first). [Read-only]","description":"Get recent purchase history for a customer by querying order line items directly. Returns detailed line-item information including items purchased, quantities, prices, and dates. Results are sorted by order date (most recent first). [Read-only]","operationId":"get_customer_purchase_history","tags":["customers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_number":{"type":"string","description":"Customer number (CustNum)"},"days_back":{"type":"number","description":"Number of days of purchase history to retrieve (default: 90)"},"record_limit":{"type":"number","description":"Maximum number of line items to return (default: 500)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["customer_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_customer_orders":{"post":{"summary":"Fetch customer orders within a specific date range. Excludes estimates. [Read-only]","description":"Fetch customer orders within a specific date range. Excludes estimates. [Read-only]","operationId":"get_customer_orders","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"string","description":"Customer number (CustNum)"},"start_date":{"type":"string","description":"Start date in YYYY-MM-DD format"},"end_date":{"type":"string","description":"End date in YYYY-MM-DD format"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["customer_id","start_date","end_date"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_order_details":{"post":{"summary":"Fetch complete details for a specific order including header information, line items, and notes for both header and lines. [Read-only]","description":"Fetch complete details for a specific order including header information, line items, and notes for both header and lines. [Read-only]","operationId":"get_order_details","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"order_number":{"type":"string","description":"Order number (CoNum)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["order_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_orders":{"post":{"summary":"Search for orders using flexible filters. At least one filter must be provided. Excludes estimates. Returns order headers with basic information. [Read-only]","description":"Search for orders using flexible filters. At least one filter must be provided. Excludes estimates. Returns order headers with basic information. [Read-only]","operationId":"search_orders","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start_date":{"type":"string","description":"Optional start date in YYYY-MM-DD format. Filters orders on or after this date."},"end_date":{"type":"string","description":"Optional end date in YYYY-MM-DD format. Only used if start_date is provided. Filters orders on or before this date."},"customer_number":{"type":"string","description":"Optional customer number (CustNum) to filter by specific customer."},"order_number":{"type":"string","description":"Optional order number (CoNum) to filter by specific order."},"status":{"type":"string","description":"Optional order status filter. Valid values: 'P' (Planned), 'O' (Open), 'C' (Complete), 'H' (History).","enum":["P","O","C","H"]},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_order_lines":{"post":{"summary":"Search for order line items using flexible filters. At least one filter must be provided. Returns detailed line item information including item, quantities, pricing, family code, and status. [Read-only]","description":"Search for order line items using flexible filters. At least one filter must be provided. Returns detailed line item information including item, quantities, pricing, family code, and status. [Read-only]","operationId":"search_order_lines","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start_date":{"type":"string","description":"Optional start date in YYYY-MM-DD format. Filters order lines by order date on or after this date."},"end_date":{"type":"string","description":"Optional end date in YYYY-MM-DD format. Only used if start_date is provided. Filters order lines by order date on or before this date."},"item_number":{"type":"string","description":"Optional item number to filter by specific item."},"family_code":{"type":"string","description":"Optional family code to filter by item family (e.g., 'LFSP', 'LFPML')."},"order_number":{"type":"string","description":"Optional order number (CoNum) to filter by specific order."},"status":{"type":"string","description":"Optional line status filter. Valid values: 'P' (Planned), 'O' (Ordered), 'F' (Filled), 'C' (Complete).","enum":["P","O","F","C"]},"warehouse":{"type":"string","description":"Optional warehouse code (Whse) to filter by specific warehouse."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_invoices":{"post":{"summary":"Search for invoices using flexible filters. At least one filter must be provided. Automatically limits to last 365 days if no date filter is specified. Supports partial/wildcard matching on invoice and customer numbers. Returns invoice headers with basic information.","description":"Search for invoices using flexible filters. At least one filter must be provided. Automatically limits to last 365 days if no date filter is specified. Supports partial/wildcard matching on invoice and customer numbers. Returns invoice headers with basic information.","operationId":"search_invoices","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start_date":{"type":"string","description":"Optional start date in YYYY-MM-DD format. Filters invoices on or after this date. Defaults to 365 days ago if not provided."},"end_date":{"type":"string","description":"Optional end date in YYYY-MM-DD format. Only used if start_date is provided. Filters invoices on or before this date."},"customer_number":{"type":"string","description":"Optional customer number (CustNum) for partial match filtering. Supports wildcard search (e.g., 'AMA' matches 'AMA0001', 'AMA0002')."},"invoice_number":{"type":"string","description":"Optional invoice number (InvNum) for partial match filtering. Supports wildcard search (e.g., '12345' matches 'INV-12345')."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_invoice_lines":{"post":{"summary":"Search invoice line items by date, item, customer, invoice, or order filters. If no non-date filter is provided, both start_date and end_date are required. [Read-only]","description":"Search invoice line items by date, item, customer, invoice, or order filters. If no non-date filter is provided, both start_date and end_date are required. [Read-only]","operationId":"search_invoice_lines","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start_date":{"type":"string","description":"Optional start date in YYYY-MM-DD format. Required with end_date when no item/customer/invoice/order filter is provided."},"end_date":{"type":"string","description":"Optional end date in YYYY-MM-DD format. Required with start_date when no item/customer/invoice/order filter is provided."},"item_number":{"type":"string","description":"Optional item number filter (partial/wildcard match against invoice line item)."},"customer_number":{"type":"string","description":"Optional customer number filter (partial/wildcard match)."},"invoice_number":{"type":"string","description":"Optional invoice number filter (partial/wildcard match)."},"order_number":{"type":"string","description":"Optional order number (CoNum) filter (partial/wildcard match)."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_order_change_logs":{"post":{"summary":"Fetch change log entries for a specific order from SLCoitemLogs. Returns activity history including quantity changes, due date updates, and who made each change. [Read-only]","description":"Fetch change log entries for a specific order from SLCoitemLogs. Returns activity history including quantity changes, due date updates, and who made each change. [Read-only]","operationId":"get_order_change_logs","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"order_number":{"type":"string","description":"Order number (CoNum)"},"co_line":{"type":"number","description":"Optional order line number (CoLine) to filter logs to a specific line."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["order_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_invoice_details":{"post":{"summary":"Fetch line item details for a specific invoice including items, quantities, and pricing. [Read-only]","description":"Fetch line item details for a specific invoice including items, quantities, and pricing. [Read-only]","operationId":"get_invoice_details","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoice_number":{"type":"string","description":"Invoice number (InvNum)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["invoice_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_job_details":{"post":{"summary":"Fetch details for a specific job including item, quantities released and complete, and notes. [Read-only]","description":"Fetch details for a specific job including item, quantities released and complete, and notes. [Read-only]","operationId":"get_job_details","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"job_number":{"type":"string","description":"Job number (Job)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["job_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_invoice_pdf_url":{"post":{"summary":"Return the PDF stream URL for a printed invoice from IDM. [Read-only]","description":"Return the PDF stream URL for a printed invoice from IDM. [Read-only]","operationId":"get_invoice_pdf_url","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoice_number":{"type":"string","description":"Invoice number (InvNum)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["invoice_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_service_orders":{"post":{"summary":"Search service orders using flexible filters. At least one filter must be provided. Returns service order headers with status, description, type, and pricing. [Read-only]","description":"Search service orders using flexible filters. At least one filter must be provided. Returns service order headers with status, description, type, and pricing. [Read-only]","operationId":"search_service_orders","tags":["service_order"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_number":{"type":"string","description":"Optional customer number (CustNum) to filter by specific customer."},"start_date":{"type":"string","description":"Optional start date in YYYY-MM-DD format. Filters service orders on or after this date."},"end_date":{"type":"string","description":"Optional end date in YYYY-MM-DD format. Only used if start_date is provided. Filters service orders before this date."},"service_order_number":{"type":"string","description":"Optional service order number (SroNum) to filter by specific service order."},"status":{"type":"string","description":"Optional status filter. Terminated records are always excluded when this is not provided.","enum":["Estimate","Open","Complete"]},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_service_order_details":{"post":{"summary":"Fetch complete details for a specific service order including header, notes, line items, materials, labor, and miscellaneous charges. Returns separate arrays per IDO: header (FSSROs), lines (FSSROLines), materials (FSSROMatls), labor (FSSROLabors), misc (FSSROMiscs).","description":"Fetch complete details for a specific service order including header, notes, line items, materials, labor, and miscellaneous charges. Returns separate arrays per IDO: header (FSSROs), lines (FSSROLines), materials (FSSROMatls), labor (FSSROLabors), misc (FSSROMiscs).","operationId":"get_service_order_details","tags":["service_order"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"service_order_number":{"type":"string","description":"Service order number (SroNum)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["service_order_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_equipment_details":{"post":{"summary":"Look up serial/equipment records from SLSerials by item number or serial number. At least one of item_number or serial_number is required. Optionally filter by status. Returns item, description, serial number, status, warehouse, location, and lot for each matching record.","description":"Look up serial/equipment records from SLSerials by item number or serial number. At least one of item_number or serial_number is required. Optionally filter by status. Returns item, description, serial number, status, warehouse, location, and lot for each matching record.","operationId":"get_equipment_details","tags":["service_order"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item_number":{"type":"string","description":"Item number (Item). Required if serial_number is not provided."},"serial_number":{"type":"string","description":"Serial number (SerNum). Required if item_number is not provided."},"status":{"type":"string","description":"Optional status filter.","enum":["In Inventory","Out Of Inventory","Reserved Or Hard Allocated","Reserved Pending A Job Adjustment","Reserved Pending Job Receipt","Not Used Or Posted","In Transit","Preassigned"]},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_items":{"post":{"summary":"Search items by item number or description (SLItems). Performs a partial match on either field. [Read-only]","description":"Search items by item number or description (SLItems). Performs a partial match on either field. [Read-only]","operationId":"search_items","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search_term":{"type":"string","description":"Item number or description fragment to search for"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["search_term"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_item_details":{"post":{"summary":"Fetch detailed information for a specific item from SLItems. [Read-only]","description":"Fetch detailed information for a specific item from SLItems. [Read-only]","operationId":"get_item_details","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item_number":{"type":"string","description":"Exact item number to retrieve"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["item_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_item_availability":{"post":{"summary":"Get item availability by warehouse from SLItemWhses. Returns on-hand, allocated, and available quantities. [Read-only]","description":"Get item availability by warehouse from SLItemWhses. Returns on-hand, allocated, and available quantities. [Read-only]","operationId":"get_item_availability","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item_number":{"type":"string","description":"Item number to query"},"warehouse_code":{"type":"string","description":"Optional warehouse code to filter (Whse)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["item_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_customer_item_pricing":{"post":{"summary":"Get customer-specific pricing for an item using PricingSP on SLItemcusts. [Read-only]","description":"Get customer-specific pricing for an item using PricingSP on SLItemcusts. [Read-only]","operationId":"get_customer_item_pricing","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_number":{"type":"string","description":"Customer number (CustNum)"},"item_number":{"type":"string","description":"Item number"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["customer_number","item_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_items_by_spec":{"post":{"summary":"Search items by roll specifications and description keyword. Filters by roll width, roll length, and matches the keyword against item number, description, or extended description. Optional family code filter. [Read-only]","description":"Search items by roll specifications and description keyword. Filters by roll width, roll length, and matches the keyword against item number, description, or extended description. Optional family code filter. [Read-only]","operationId":"search_items_by_spec","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","description":"Required keyword to match against item number, description, or extended description (e.g., film name like 'scuffproof')."},"roll_width":{"type":"number","description":"Required roll width in inches value to match (numeric, exact match)."},"roll_length":{"type":"number","description":"Required roll length in feet value to match (numeric, exact match)."},"family_code":{"type":"string","description":"Optional item family code such as 'LFSP', 'LFPML', etc. filter; when provided, only items in this family are returned."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["description","roll_width","roll_length"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_bulk_item_availability":{"post":{"summary":"Get availability for multiple items at once. Returns on-hand, allocated, and available quantities for each item by warehouse. Each item is processed individually and results include success/error status per item. [Read-only]","description":"Get availability for multiple items at once. Returns on-hand, allocated, and available quantities for each item by warehouse. Each item is processed individually and results include success/error status per item. [Read-only]","operationId":"get_bulk_item_availability","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item_numbers":{"type":"array","items":{"type":"string"},"description":"Array of item numbers to query (e.g., ['ITEM001', 'ITEM002', 'ITEM003'])"},"warehouse_code":{"type":"string","description":"Optional warehouse code to filter (Whse). If omitted, returns all warehouses for each item."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["item_numbers"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_bulk_customer_item_pricing":{"post":{"summary":"Get customer-specific pricing for multiple items at once. Returns pricing information for each item. Each item is processed individually and results include success/error status per item. [Read-only]","description":"Get customer-specific pricing for multiple items at once. Returns pricing information for each item. Each item is processed individually and results include success/error status per item. [Read-only]","operationId":"get_bulk_customer_item_pricing","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_number":{"type":"string","description":"Customer number (CustNum) for pricing lookup"},"item_numbers":{"type":"array","items":{"type":"string"},"description":"Array of item numbers to query (e.g., ['ITEM001', 'ITEM002', 'ITEM003'])"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["customer_number","item_numbers"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_item_availability_with_substitutes":{"post":{"summary":"Find substitute items with similar specifications and get availability for both the base item and substitutes. Searches for items with matching family code, roll width within tolerance, and optional roll length match. Returns availability data for the base item separately from potential substitutes.","description":"Find substitute items with similar specifications and get availability for both the base item and substitutes. Searches for items with matching family code, roll width within tolerance, and optional roll length match. Returns availability data for the base item separately from potential substitutes.","operationId":"get_item_availability_with_substitutes","tags":["items"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item_number":{"type":"string","description":"Base item number to find substitutes for"},"max_width_delta":{"type":"number","description":"Maximum width difference in inches (±). For example, 2 means search for items with width between base width minus 2 and base width plus 2. Default: 2"},"match_length":{"type":"boolean","description":"If true, only return substitutes with exact roll length match. If false, length is not considered in the search. Default: false"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["item_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_idos":{"post":{"summary":"Search for Syteline IDOs by name or description. Returns matching IDO collection names and descriptions that contain any of the provided search terms. [Read-only]","description":"Search for Syteline IDOs by name or description. Returns matching IDO collection names and descriptions that contain any of the provided search terms. [Read-only]","operationId":"search_idos","tags":["system"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search_terms":{"type":"string","description":"Comma-separated list of search terms to find in IDO names or descriptions (e.g., 'Customer,Order,Item'). Uses OR logic - matches any term."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["search_terms"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_ido_properties":{"post":{"summary":"Fetch metadata about a Syteline IDO (Integration Data Object) including available properties, data types, keys, and sub-collections. Useful for discovering what fields are available for querying. [Read-only]","description":"Fetch metadata about a Syteline IDO (Integration Data Object) including available properties, data types, keys, and sub-collections. Useful for discovering what fields are available for querying. [Read-only]","operationId":"get_ido_properties","tags":["system"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ido_name":{"type":"string","description":"Name of the IDO to inspect (e.g., 'SLCustomers', 'SLCos', 'SLCoitems', 'SLItems')"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["ido_name"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/raw_ido_load":{"post":{"summary":"Perform a raw IDO load operation with full control over query parameters. Bypasses pagination and returns raw API response. Use get_ido_properties to confirm available property names before querying. Either record_cap or filter (or both) must be provided to prevent unintentionally large queries.","description":"Perform a raw IDO load operation with full control over query parameters. Bypasses pagination and returns raw API response. Use get_ido_properties to confirm available property names before querying. Either record_cap or filter (or both) must be provided to prevent unintentionally large queries.","operationId":"raw_ido_load","tags":["system"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ido_name":{"type":"string","description":"Name of the IDO to query (e.g., 'SLCustomers', 'SLCos', 'SLCoitems', 'SLItems')"},"properties":{"type":"string","description":"Comma-separated list of property names to retrieve (e.g., 'CustNum,Name,City,State'). Use get_ido_properties to see available fields."},"filter":{"type":"string","description":"Optional filter expression using Syteline query syntax (e.g., \"CustNum='12345' And CustSeq=0\"). Either filter or record_cap must be provided."},"order_by":{"type":"string","description":"Optional comma-separated list of properties to sort by (e.g., 'Name,CustNum')"},"record_cap":{"type":"number","description":"Optional maximum number of records to return (e.g., 100). Either filter or record_cap must be provided. Recommended to use a reasonable limit."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["ido_name","properties"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_current_user":{"post":{"summary":"Get the currently authenticated user's information including username, display name, email, user ID, and a comma-separated list of available sites. [Read-only]","description":"Get the currently authenticated user's information including username, display name, email, user ID, and a comma-separated list of available sites. [Read-only]","operationId":"get_current_user","tags":["system"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_user_context":{"post":{"summary":"Get the current user's recent activity context including orders and customers they have created or modified in the specified time period. Returns orders and customers the user has touched, useful for understanding what the user has been working on recently.","description":"Get the current user's recent activity context including orders and customers they have created or modified in the specified time period. Returns orders and customers the user has touched, useful for understanding what the user has been working on recently.","operationId":"get_user_context","tags":["system"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"days_back":{"type":"number","description":"Number of days of history to retrieve (default: 7, max recommended: 30)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_accrued_purchase_transactions_bulk":{"post":{"summary":"Get accrued purchase transactions from GL (account 22000) within a date range, optionally filtered by PO numbers. Returns reference, PO number, vendor number, account, account unit, amount, and transaction date. Without po_numbers, date range is limited to 92 days.","description":"Get accrued purchase transactions from GL (account 22000) within a date range, optionally filtered by PO numbers. Returns reference, PO number, vendor number, account, account unit, amount, and transaction date. Without po_numbers, date range is limited to 92 days.","operationId":"get_accrued_purchase_transactions_bulk","tags":["finance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date_from":{"type":"string","description":"Start date for transaction search (YYYY-MM-DD format)"},"date_to":{"type":"string","description":"End date for transaction search (YYYY-MM-DD format)"},"po_numbers":{"type":"array","items":{"type":"string"},"description":"Optional array of purchase order numbers to filter transactions. If not provided, all transactions in date range will be returned (limited to 92 days max)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["date_from","date_to"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_vendors":{"post":{"summary":"Search for vendors by partial vendor number or name. Returns vendor number, name, city, and state. [Read-only]","description":"Search for vendors by partial vendor number or name. Returns vendor number, name, city, and state. [Read-only]","operationId":"search_vendors","tags":["purchase_order"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search_term":{"type":"string","description":"Partial vendor number or name to search for (2+ chars). Example: '1234', 'acme', 'supply'","example":"1234"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["search_term"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_vendor_purchase_orders":{"post":{"summary":"Get purchase orders for a specific vendor with optional date filtering. Returns PO number, vendor number, and order date for all purchase orders associated with the vendor. [Read-only]","description":"Get purchase orders for a specific vendor with optional date filtering. Returns PO number, vendor number, and order date for all purchase orders associated with the vendor. [Read-only]","operationId":"get_vendor_purchase_orders","tags":["purchase_order"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vendor_number":{"type":"string","description":"Vendor number to query purchase orders for"},"date_from":{"type":"string","description":"Optional start date for order date filter (YYYY-MM-DD format)"},"date_to":{"type":"string","description":"Optional end date for order date filter (YYYY-MM-DD format)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["vendor_number"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/search_po_lines":{"post":{"summary":"Search purchase order lines by item number, PO number, and/or PO place date range. Returns common PO line fields plus individual cost components (material, freight, duty, brokerage, insurance, local freight) and total unit cost. [Read-only]","description":"Search purchase order lines by item number, PO number, and/or PO place date range. Returns common PO line fields plus individual cost components (material, freight, duty, brokerage, insurance, local freight) and total unit cost. [Read-only]","operationId":"search_po_lines","tags":["purchase_order"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item":{"type":"string","description":"Partial item number to search for (wildcard match). Example: 'WIDGET', '12345'","example":"WIDGET"},"po_number":{"type":"string","description":"Partial PO number to search for (wildcard match). Example: 'PO-1234', '5678'","example":"PO-1234"},"date_from":{"type":"string","description":"Start of PO place date range (YYYY-MM-DD format)"},"date_to":{"type":"string","description":"End of PO place date range (YYYY-MM-DD format)"},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_material_transactions":{"post":{"summary":"Get SLMatltrans transactions filtered by ref/item/lot/type/date. Supports optional lot-collapsing for analysis while preserving transaction context and cost details. [Read-only]","description":"Get SLMatltrans transactions filtered by ref/item/lot/type/date. Supports optional lot-collapsing for analysis while preserving transaction context and cost details. [Read-only]","operationId":"get_material_transactions","tags":["audit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref_num":{"type":"string","description":"Reference number to filter transactions. The meaning depends on RefType: Customer Order (O), Purchase Order (P), Job (J), Service Order (F), RMA (R), Transfer (T), Production Schedule (S), Project (C), JIT Production (K), Work Center (W), or Inventory (I)."},"item":{"type":"string","description":"Item number to filter transactions"},"lot":{"type":"string","description":"Lot number to filter transactions"},"ref_type":{"type":"string","description":"Optional raw RefType code filter (exact match): C=Project, F=Service Order, I=Inventory, J=Job, K=JIT Production, O=Customer Order, P=Purchase Order, R=RMA, S=Production Schedule, T=Transfer, W=Work Center."},"trans_type":{"type":"string","description":"Optional raw TransType code filter (exact match): A=Adjustment, B=CycleCount, C=Split/Merge/Create, D=Scrap, F=Finish, G=Misc Issue, H=Misc Receipt, I=Issue/WIP Change, L=Transfer Loss, M=Stock Move, N=Labor/Next Operation, O=Other Cost, P=Physical Inventory, R=Receipt, S=Ship, T=Transfer Order, W=Withdrawal/Return."},"date_from":{"type":"string","description":"Optional start date for TransDate filter (YYYY-MM-DD). Useful when filtering by item or lot to limit results."},"date_to":{"type":"string","description":"Optional end date for TransDate filter (YYYY-MM-DD)."},"collapse_lots":{"type":"boolean","description":"Optional. When true, aggregates rows that differ only by lot and returns lot as 'multiple lots' when more than one distinct lot is present."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":[]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}},"/api/tools/get_audit_logs":{"post":{"summary":"Get audit log entries from Syteline (AuditLogs IDO). Filters by wildcard match on KeyValue (compound primary key, e.g. order/invoice number). Returns timestamp, user, log/message descriptions, old and new values. [Read-only]","description":"Get audit log entries from Syteline (AuditLogs IDO). Filters by wildcard match on KeyValue (compound primary key, e.g. order/invoice number). Returns timestamp, user, log/message descriptions, old and new values. [Read-only]","operationId":"get_audit_logs","tags":["audit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key_value":{"type":"string","description":"Partial or full KeyValue to search for (wildcard match). The KeyValue is the compound primary key, e.g. 'Q000086423', 'INV000171085', 'ORD-LFSP.3.1500'."},"site":{"type":"string","description":"Optional site identifier: 'NOBELUS' (default) or 'EUROPE'. Will be combined with environment to form full site configuration.","enum":["NOBELUS","EUROPE"]}},"required":["key_value"]}}}},"responses":{"200":{"description":"Successful tool execution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Bad request - invalid parameters or tool execution error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - missing or invalid Bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-openai-isConsequential":false}}},"tags":[{"name":"customers","description":"Operations related to customers"},{"name":"orders","description":"Operations related to orders"},{"name":"service_order","description":"Operations related to service_order"},{"name":"items","description":"Operations related to items"},{"name":"system","description":"Operations related to system"},{"name":"finance","description":"Operations related to finance"},{"name":"purchase_order","description":"Operations related to purchase_order"},{"name":"audit","description":"Operations related to audit"}]}