Yes @Pumpc4t this can be reduced to one tool call.
Call availability once after the date is known, return all available time slots + constraints, and let the LLM reason over that data across the remaining steps. The model can retain and reuse the tool response within the same conversation/session.
I’ve implemented this pattern before happy to help you restructure the flow for faster responses.