Kaski

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.