For developers & AI assistants
Villa Kaski MCP server
The Villa Kaski MCP server lets any Model Context Protocol client — Claude, ChatGPT, Cursor and others — read live availability, prices and property facts. It is strictly read-only: the assistant then hands the guest a prefilled villakaski.com booking link, and the inquiry is submitted only there.
Endpoint
Both addresses point to exactly the same server. Use the custom domain in production.
https://villakaski.com/mcp (primary)
https://villakaski.lovable.app/mcp (same server)Transport & authentication
MCP Streamable HTTP. Every request is a POST with the headers Content-Type: application/json and Accept: application/json, text/event-stream. There is no authentication: every tool is read-only and serves public information. Calls are rate limited per client (30/min and 300/hour).
Available tools
Four read-only tools. The server cannot send an inquiry, create a booking or block dates: booking always happens on villakaski.com.
get_propertyread-only- Verified facts: capacity, size, rooms, sauna, distances to the slopes and the airport.
check_availabilityread-only- Arrival, departure and guests (1–8). Returns whether the dates are free right now.
get_quoteread-only- Indicative price. Every night is priced by the season covering that night, so a stay across a season boundary returns a mixed breakdown.
check_stayread-only- Availability, indicative price and the booking link in one call. Returns bookingUrl — villakaski.com/booking with the dates and guest count prefilled.
Connecting a client
Claude Desktop / Cursor / Codex
{
"mcpServers": {
"villa-kaski": {
"type": "http",
"url": "https://villakaski.com/mcp"
}
}
}OpenAI Responses API
{
"model": "gpt-5",
"tools": [
{
"type": "mcp",
"server_label": "villa_kaski",
"server_url": "https://villakaski.com/mcp",
"require_approval": {
"never": {
"tool_names": ["get_property", "check_availability", "get_quote", "check_stay"]
}
}
}
],
"input": "Is Villa Kaski free 14-21 Feb 2027 for 6 people, and what would it cost?"
}Try it from the terminal
curl -sN https://villakaski.com/mcp \
-X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Rules a client must respect
- Dates are half-open: the departure date is the checkout day and is not occupied.
- Always call the live tools instead of guessing or reusing an earlier answer.
- Prices are indicative until Villa Kaski confirms them personally. If a quote returns manual_review_required, do not state a number.
- To book, hand the guest the returned bookingUrl on villakaski.com. No booking or inquiry can be submitted through MCP.
- Maximum 8 guests.
Can the address be villakaski.com/mcp?
Yes — it already is. The custom domain villakaski.com serves the same application as villakaski.lovable.app, so https://villakaski.com/mcp is live and identical. Prefer it in any configuration you share; the lovable.app address keeps working as a fallback.