Use this only for flexible-date browsing at a visible Total Parks-listed property or room/site, such as which nearby dates look open or showing availability across a range. Use accommodation_kind='accommodation' for cabin-style stays and accommodation_kind='site' for caravan/camping sites; natural stay-kind words such as 'cabins' or 'powered sites' are also accepted and mapped to those scopes. Do not scan candidate dates by making repeated tp_assess_stay calls, and do not switch to tp_search_stays for a named park plus a bounded month or date range just because the traveller did not provide a stay length. Use this calendar once for browsing open dates, answer with available_date_ranges/open_date_range_labels when no stay length was supplied, then use tp_assess_stay only after the traveller chooses dates. Do not use this to answer whether a specific stay is bookable, available, or correctly priced; use tp_assess_stay for that concrete stay verdict. Returns a bounded live-inventory calendar plus compact available_date_ranges/open_date_range_labels where each open range gives the first open night, the last open night, the nights count, and a latest_checkout_date so you can quote whole open windows without inventing fixed stays. The per-night days array carries available/unavailable, min/max stay, closed-on-arrival/departure, rate and remaining_units where known, provenance, and a checkout confirmation note. Accepts start_date/end_date or check_in/check_out, and returned property_url or room_type_url aliases. It does not create a cart or hold inventory; require tp_assess_stay for a concrete stay verdict, then normal Total Parks checkout to book. Keep the next step on Total Parks URLs rather than park contact.