find_next_available_appointments
Find the next available bookable appointment starts across matching local service businesses. Use this ONLY when the user explicitly asks for availability, booking, the soonest appointment, or a specific appointment time. Examples: 'book me a dentist', 'who has availability tomorrow?', 'find the soonest groomer appointment', 'get me a dermatologist next Wednesday'. Do NOT use this for generic discovery requests like 'find me a dentist in Paris' or 'show me pet groomers near me'; use search_businesses for discovery. The CALLER (you, the agent) extracts the structured search fields the same way as search_businesses, and passes the service or activity wording in serviceQuery. The response only includes businesses with direct booking support, a matching service, and at least one slot whose bookingStartPolicy and remainingCapacity allow booking. An empty result does NOT mean no matching businesses exist; it only means no directly bookable matching slots were indexed. If this returns no results, call search_businesses before responding to the user.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | Latitude of the search location. Pass when the client has a map viewport or GPS position. | |
| radiusKm | No | Search radius in kilometers, default 10. | |
| longitude | No | Longitude of the search location. Pass alongside latitude. | |
| startDate | Yes | First local date to search from (YYYY-MM-DD). Use today's date when the user asks for the next available option. | |
| countryCode | No | ISO-3166 alpha-2 country code (e.g. 'GR', 'US', 'GB'). Set when deducible. | |
| resultLimit | No | Maximum number of available appointment matches to return. Defaults to 5 and is clamped between 1 and 20. | |
| serviceMode | No | Hard filter on how the business delivers service. One of: 'in_person', 'remote', 'service_area', 'nationwide'. | |
| subCategory | Yes | Exact ProfessionalProfileSubCategory enum value derived from the user's request (e.g. 'EventPlanner', 'Dentist', 'Therapist'). Required. | |
| daysToSearch | No | Number of calendar days to scan starting at startDate. Defaults to 14 and is clamped between 1 and 31. | |
| locationText | No | Place name as the user said it. Pass null only for remote or nationwide service searches. | |
| serviceQuery | Yes | Service or activity wording from the user, e.g. 'boat trip', 'therapy session', 'haircut'. | |
| attributeFilters | No | Hard filter on vertical-specific attributes as a JSON object. Keys and values come from get_refinement_options. |