Resort Cottages Ontario — Search Cottages
Purpose
Return resort-cottage rental information from resortcottagesontario.ca for a given date range. Today the domain advertises a single property — Mildred's Lakefront Resort Cottage at Bellmere Winds Golf Resort on Rice Lake in the Kawarthas, Ontario — so "search" reduces to "return the cottage's static metadata plus an availability verdict for the requested dates." The skill is written so it generalises if more listings are added later. Read-only — never click Confirm Reservation and never submit mphb_is_direct_booking=1.
When to Use
- A traveller asks "are there any resort cottages available in Ontario the weekend of <date>?" and you need to verify Mildred's specifically.
- An agent needs static cottage metadata (sleeps, bedrooms, amenities, address, base rate) without paying for a full browser session.
- A planning agent comparing waterfront rentals near Toronto in the Kawarthas / Rice Lake area.
- A brand-disambiguation step — confirm the user means Resort Cottages Ontario (this site, plural) and not resortcottages.ca (a separate real-estate business).
Workflow
Hybrid path: an authoritative LLM-friendly text dump (/llms.txt) covers all static metadata in one cheap fetch, and the on-site MotoPress Hotel Booking (MPHB) form on /book/ is the only public way to check date-specific availability. The internal WordPress REST endpoints at /wp-json/mphb/v1/* are admin-locked ({"code":"mphb_rest_cannot_view", "data":{"status":401}} for accommodation_types, bookings/availability, etc.), and the public AJAX endpoint at /wp-admin/admin-ajax.php requires a per-page-load nonce — so there is no usable cookieless API for availability. Use the steps below in order; skip step 3 entirely if the caller only needs static metadata.
-
Static property metadata — single GET, no JS, no session. Fetch
https://resortcottagesontario.ca/llms.txt(≈2.3 KB plain text). Parse the markdown-style sections to extract: property name, address, bedrooms / sleeps / sqft, base nightly rate, resort amenities, check-in / check-out times, phone, email, brand-disambiguation notes, and the canonical URLs for About / FAQ / Book pages. Always treat thellms.txtbase rate as the lower bound — it can lag the actual rate on/book/(see Gotchas). -
Decide which booking era applies. The site splits the calendar between two backends, gated by year:
- 2026 (current season): "Mildred's 2026 availability is managed through Great Blue Cottage Rentals (GBCR). Direct online booking coming in 2027." For 2026 dates, hand off to GBCR — see step 3a.
- 2027 and later: Direct on-site booking via the MPHB plugin form. Use step 3b.
- The form on
/book/is labelled "Check Mildred's Lakefront Resort Cottage 2027 Availability" and its hidden attributedata-first_available_check_in_date="2026-10-12"is the earliest selectable check-in (the tail of 2026 has spilled into the MPHB form because the property opened the calendar early — confirmed by typing15/10/2026into the check-in field: it accepts).
3a. 2026 dates — GBCR deeplink path (browser optional). On the /book/ page the "Check 2026 Availability →" anchor (text on the page; href is the one shown below) is a fully-formed deeplink to the GBCR property summary page. The reference href as of 2026-05-19 is:
https://greatbluecottagerentals.com/summary/?setselection=1
&search_region=The+Kawarthas
&search_resort=BELLMERE
&resort_id=102
&post_id=15393
&grade=PNTDR075
&search_check_date_in=Aug+12%2C+2026 ← change to target check-in (format: "MMM+D%2C+YYYY")
&no_of_nights=5 ← change to nights between dates
&guests=1&search_no_of_adults=1&search_no_of_children=0&search_no_of_pets=0
&price=1850.00 ← sample only; GBCR recalculates on landing
&unit_pet_friendly=on&unit_sunroom=on&unit_waterfront=on&unit_near_pool=on&unit_near_beach=on
The resort_id=102, grade=PNTDR075, and post_id=15393 IDs are the stable identifiers for Mildred's on the GBCR backend — do not change them. The skill stops here for 2026 queries: emit the constructed URL and tell the caller that the actual availability/pricing lookup happens on greatbluecottagerentals.com, which is a separate domain and out of scope for this skill (a sibling skill greatbluecottagerentals.com/<task> should drive that side).
3b. 2027+ dates — MPHB form on /book/ (browser required). Open a bare Browserbase session (browse cloud sessions create --keep-alive — no --verified, no --proxies; site has no anti-bot beyond Cloudflare bot-management headers). Navigate to https://resortcottagesontario.ca/book/, then:
-
browse snapshotand locatetextbox: Check-in Date *andtextbox: Check-out Date *. -
browse click <check-in-ref>;browse type "DD/MM/YYYY"(note: site is configureddateFormat: "dd/mm/yyyy", not USmm/dd);browse press Escapeto dismiss the kbwood datepicker. -
Same for check-out.
-
browse click <Check Availability button-ref>(label text:CHECK AVAILABILITY). The form refreshes in place — no page navigation. -
browse wait timeout 2000, thenbrowse snapshotand read the new status paragraph. Three branches (verified 2026-05-19):- Available:
"Mildred's Lakefront 3 Bedroom Resort Cottage is available for selected dates."followed by abutton: Confirm Reservation. STOP — do not click Confirm Reservation. - Unavailable / dates not bookable:
"Nothing found. Please try again with different search parameters."(verified by submitting06/10/2027 → 08/10/2027, dates not surfaced aslink:cells in the datepicker). - Invalid dates (e.g. check-out ≤ check-in, or below min-stay): inline error per
MPHB.translations—"Check-in date is not valid.","Check-out date is not valid.","Less than min days stay","More than max days stay","Later than max date for current check-in date". Capture verbatim.
- Available:
-
The form does NOT print a date-specific subtotal, only the property-card price (
Prices start at: $375 per night (+taxes and fees)). Nightly subtotal must be computed client-side asnights * 375or left null and flaggedpricing_source: "property_card_starting_rate". -
Release:
browse cloud sessions update <sid> --status REQUEST_RELEASE. -
Compose the response matching the Expected Output schema. Include the GBCR handoff URL when the query year is 2026, the MPHB on-site verdict when the year is 2027+, and the union of metadata from
/llms.txt+ the/book/property card.
Site-Specific Gotchas
- Single-property site. Despite the plural brand "Resort Cottages Ontario", as of 2026-05-19 the domain markets exactly one property (Mildred's Lakefront Resort Cottage). Future iterations may add more — re-verify by counting
article.mphb-room-typecards on/book/. - Two booking backends, gated by year. 2026 dates → GBCR (external,
greatbluecottagerentals.com); 2027+ → MPHB on-site form. The earliest MPHB check-in isdata-first_available_check_in_date="2026-10-12"— late-2026 dates after the GBCR season-close also work on the MPHB form. Always check the year first and route appropriately. - Date format is
dd/mm/yyyy, not USmm/dd/yyyy. Set perMPHB._data.settings.dateFormat: "dd/mm/yyyy"(the<abbr title="Formatted as dd/mm/yyyy">*</abbr>next to each label is the on-page hint). Internal transfer format isyyyy-mm-dd(dateTransferFormat), used in the hiddenmphb_check_in_date/mphb_check_out_dateinputs. - kbwood datepicker only shows
link:cells for check-in–eligible days. Days rendered as plaincell:(no nestedlink:ref) are blocked by booking rules (already booked, not a valid check-in day, below min-stay, etc.). You can still type any date into the textbox — but if the date is rule-blocked, the form returns "Nothing found" after submission. To pre-validate, count linked cells in the rendered calendar before typing. - Form refreshes in place — same URL, no navigation event.
browse get urlwill still return/book/after clickingCHECK AVAILABILITY. Branch on the snapshot's status paragraph, not on URL changes. The non-deterministic ref IDs (e.g.[1-575],[1-578]after submission) mean you must re-snapshot, not cache. /llms.txtprice is stale. The text says"Starting from CAD $254/night"but the rendered/book/property card shows"$375 per night (+taxes and fees)"as of 2026-05-19. Always prefer the on-page card price over/llms.txt; treatllms.txtrate as a lower-bound historical hint only.- WP REST is admin-only.
https://resortcottagesontario.ca/wp-json/mphb/v1/accommodation_typesand…/bookings/availabilityboth return{"code":"mphb_rest_cannot_view","data":{"status":401}}for unauthenticated callers. Don't waste time probing — the only public surface is the browser form. (The/wp-json/mphb/v1index itself is readable and lists routes, but every collection requiresview/editscope.) admin-ajax.phpactions need a per-page nonce.MPHB._data.nonces.mphb_get_room_type_availability_datais regenerated per page render and won't survive a cookieless POST from outside a warm session. If you do want to skip the form click, you can scrape the nonce from the rendered HTML and POSTaction=mphb_get_room_type_availability_data&nonce=<x>&room_type_id=195with the page's cookie jar — but the form-click path is simpler and equally cheap.- Confirm Reservation is the booking trigger. Clicking the
Confirm Reservationbutton initiates a real booking flow (form action:https://resortcottagesontario.ca/booking-confirmation/, hiddenmphb_is_direct_booking=1). The skill must stop one click earlier. - GBCR sample URL contains a sample
price=1850.00andsearch_check_date_in=Aug+12%2C+2026. Those are placeholder values from the static href on/book/; GBCR recalculates price server-side on landing. Overridesearch_check_date_inandno_of_nightswith the caller's values; you can leavepricealone or drop it. - Brand disambiguation. Per
/llms.txt: "Resort Cottages Ontario" (plural) is the brand/domain name; "resort cottage ontario" (singular) is the search category this property belongs to. This property is not affiliated with resortcottages.ca (a separate real-estate business). If a query is ambiguous, prefer this site only when the user clearly wants a rental (not real-estate listings). - No anti-bot beyond Cloudflare bot-management cookies. Bare Browserbase session works first try;
--verifiedand--proxiesare unnecessary and add cost. The site sets__cf_bmand_cfuvidcookies but does not challenge automated clients on/book/. - Timezone is America/Toronto (EDT/EST). All "today" comparisons in the form (
MPHB._data.today) use server-local time, not UTC. A 2026-05-19 09:00Z run still saw"today": "2026-05-18"because Toronto was still the 18th. - Form id
booking-form-195andmphb_room_type_id=195are stable per-property IDs. Don't reuse them across other MPHB installs; they are local WordPress post IDs.
Expected Output
The skill emits one of three branches depending on the requested date range. JSON shapes (verified 2026-05-19):
// Branch A — 2027+ dates, MPHB on-site form returned an availability verdict
{
"success": true,
"site": "resortcottagesontario.ca",
"query": { "check_in": "2027-10-15", "check_out": "2027-10-18", "nights": 3, "guests": 2 },
"listings": [
{
"name": "Mildred's Lakefront Resort Cottage",
"resort": "Bellmere Winds Golf Resort",
"region": "Kawarthas",
"lake": "Rice Lake",
"address": "1235 Villiers Line - Site 75, The Point Drive, Keene, ON K0L 2G0",
"bedrooms": 3,
"sleeps": 6,
"size_sqft": 600,
"view": "Waterfront",
"amenities": ["air-conditioning", "free wi-fi", "pet-friendly", "Smart TV"],
"category": "resort cottage",
"starting_nightly_rate_cad": 375,
"currency": "CAD",
"pricing_source": "property_card_starting_rate",
"subtotal_cad_estimate": 1125,
"first_available_check_in_date": "2026-10-12",
"availability": {
"status": "available",
"message": "Mildred's Lakefront 3 Bedroom Resort Cottage is available for selected dates.",
"next_step": "Confirm Reservation (NOT clicked by this read-only skill)"
},
"booking_url": "https://resortcottagesontario.ca/book/",
"phone": "+1 (647) 287-9978",
"email": "mildredslakefront@resortcottagesontario.ca"
}
]
}
// Branch B — 2027+ dates, but dates blocked by booking rules
{
"success": true,
"site": "resortcottagesontario.ca",
"query": { "check_in": "2027-10-06", "check_out": "2027-10-08", "nights": 2, "guests": 2 },
"listings": [
{
"name": "Mildred's Lakefront Resort Cottage",
"availability": {
"status": "unavailable",
"message": "Nothing found. Please try again with different search parameters.",
"reason_hint": "Dates fall outside check-in eligibility or below min-stay; non-linked datepicker cells indicate blocked days."
},
"booking_url": "https://resortcottagesontario.ca/book/"
}
]
}
// Branch C — 2026 dates, on-site form does not apply; hand off to GBCR
{
"success": true,
"site": "resortcottagesontario.ca",
"query": { "check_in": "2026-08-12", "check_out": "2026-08-17", "nights": 5, "guests": 2 },
"listings": [
{
"name": "Mildred's Lakefront Resort Cottage",
"resort": "Bellmere Winds Golf Resort",
"starting_nightly_rate_cad": 375,
"currency": "CAD",
"availability": {
"status": "delegated",
"delegate_backend": "greatbluecottagerentals.com",
"delegate_url": "https://greatbluecottagerentals.com/summary/?setselection=1&search_region=The+Kawarthas&search_resort=BELLMERE&resort_id=102&post_id=15393&grade=PNTDR075&search_check_date_in=Aug+12%2C+2026&no_of_nights=5&guests=2&search_no_of_adults=2&search_no_of_children=0&search_no_of_pets=0&unit_pet_friendly=on&unit_sunroom=on&unit_waterfront=on&unit_near_pool=on&unit_near_beach=on",
"message": "Mildred's 2026 availability is managed through Great Blue Cottage Rentals (GBCR). Use the delegate_url to complete the date-specific lookup on greatbluecottagerentals.com — that domain is a separate skill scope."
},
"booking_url": "https://resortcottagesontario.ca/book/"
}
]
}
// Branch D — failure (network, page changed, etc.)
{
"success": false,
"error_reasoning": "Verbatim message or short description of what blocked the skill.",
"site": "resortcottagesontario.ca"
}