mcp

Search & book Lakpura Sri Lanka tours, transfers, stays & activities as an AI agent.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,642Tokens (tool definitions)
~1.9 KBTypical response size
Moderate attention impact (1.28% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "url": "https://app.lakpura.com/api/mcp"
    }
  }
}

Remote endpoints

https://app.lakpura.com/api/mcpstreamable-http
https://mcp.lakpura.comstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_stays(query, limit)

Search Lakpura accommodation (hotels, villas, lodges) by name or city. Returns matching stays with their public page URL, city, country and star rating. Use get_service with the returned slug for room details and price.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Hotel/villa name or city (e.g. \"Galle\", \"Cinnamon\", \"Ella tree house\")."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24,
      "description": "Max results (default 12)."
    }
  },
  "required": [
    "query"
  ]
}
🟢search_tours(query, kind, page, per_page)

Search Lakpura tours, day-trips and experiences by keyword. Returns each match with a slug, title, rating and its public page URL. Call get_service with a slug to see bookable options and price, then start_booking to book. Optional kind filter: "multi_day" (multi-day tours) or "single_day".

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Keyword(s) to match against the tour title (e.g. \"whale watching\", \"sigiriya\", \"safari\"). Omit to browse top-rated."
    },
    "kind": {
      "type": "string",
      "enum": [
        "all",
        "multi_day",
        "single_day"
      ],
      "description": "Filter by tour length. Default \"all\"."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default 1)."
    },
    "per_page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 48,
      "description": "Results per page (default 20)."
    }
  }
}
🟢search_products(query, max_price_usd, page, per_page)

Search physical products Lakpura sells and ships worldwide — Sri Lankan handicrafts, wooden masks, tea, spices, homeware, gifts. Returns each match with its Lakpura reference, title, USD price and public product page URL. Use this for anything the caller wants to BUY and have delivered. Also RENTALS in Sri Lanka — baby travel cots, wheelchairs, scooters, motorbikes, bicycles, tuk tuks (try short nouns: "cot", "wheelchair", "scooter"). Use search_tours or search_stays for travel instead.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Keyword(s) describing the product, e.g. \"raksha mask\", \"ceylon tea\", \"batik\", \"wooden elephant\". Required."
    },
    "max_price_usd": {
      "type": "number",
      "description": "Optional upper price limit in US dollars."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default 1)."
    },
    "per_page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "description": "Results to return (default 8). Keep small — these are read aloud."
    }
  },
  "required": [
    "query"
  ]
}
🟢get_service(slug)

Get full details of one tour/experience by slug: title, description, bookable options (each with a price and option_id) and whether it can be booked via start_booking. Pass an option_id from here to start_booking.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The service slug from search_tours (the last path segment of /products/{slug})."
    }
  },
  "required": [
    "slug"
  ]
}
🟢quote_transfer(from, to, passengers, bags)

Price a private transfer (car/van with driver) from one place in Sri Lanka to another. Pass the pickup and drop-off exactly as the traveller named them - a town ("Kandy"), an airport ("Colombo airport", "Bandaranaike") or a station. For a hotel, pass the TOWN it is in. Returns the resolved route and fares per vehicle that fits the party. If a place is ambiguous or unknown, it returns status "unresolved" with candidates - ask the traveller, do not guess. Use this for any transfer price, never a transfer page found by search_tours.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Pickup: town, airport or station, e.g. \"Colombo airport\"."
    },
    "to": {
      "type": "string",
      "description": "Drop-off: town, airport or station, e.g. \"Kandy\"."
    },
    "passengers": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Number of travellers (default 2)."
    },
    "bags": {
      "type": "integer",
      "minimum": 0,
      "maximum": 60,
      "description": "Suitcases / check-in bags, if the traveller said (omit if unknown)."
    }
  },
  "required": [
    "from",
    "to"
  ]
}
🟡start_booking(product_type, slug, option_id, selected_date, selected_start_time, ...)

Create a booking and get a secure Stripe checkout URL for the customer to pay. For product_type="tour": pass slug (from search_tours/get_service), selected_date (YYYY-MM-DD), pax, an optional option_id, and lead contact details. For product_type="transfer": pass from, to, optional vehicle/category/pickup_at, pax, and lead details. The price is calculated server-side and returned with the checkout_url. Payment confirms the booking.

Input Schema

{
  "type": "object",
  "properties": {
    "product_type": {
      "type": "string",
      "enum": [
        "tour",
        "transfer"
      ],
      "description": "What is being booked."
    },
    "slug": {
      "type": "string",
      "description": "tour: service slug from search_tours/get_service."
    },
    "option_id": {
      "type": "string",
      "description": "tour: chosen option_id from get_service (optional — omit for the \"from\" price)."
    },
    "selected_date": {
      "type": "string",
      "description": "tour: travel date, YYYY-MM-DD (today or later)."
    },
    "selected_start_time": {
      "type": "string",
      "description": "tour: optional start time, e.g. \"09:00\"."
    },
    "pickup_text": {
      "type": "string",
      "description": "tour: optional pickup location / hotel."
    },
    "from": {
      "type": "string",
      "description": "transfer: pickup location (airport / city / hotel)."
    },
    "to": {
      "type": "string",
      "description": "transfer: drop-off location."
    },
    "vehicle": {
      "type": "string",
      "description": "transfer: vehicle class (default \"Standard Car\")."
    },
    "category": {
      "type": "string",
      "description": "transfer: e.g. \"Arrival Transfers\", \"Departure Transfers\" (default Arrival)."
    },
    "pickup_at": {
      "type": "string",
      "description": "transfer: pickup datetime (free text or ISO)."
    },
    "airline": {
      "type": "string",
      "description": "transfer: optional airline (airport transfers)."
    },
    "flight_number": {
      "type": "string",
      "description": "transfer: optional flight number."
    },
    "notes": {
      "type": "string",
      "description": "transfer: optional notes."
    },
    "pax": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of guests/passengers (default 1)."
    },
    "lead_first_name": {
      "type": "string",
      "description": "Customer first name."
    },
    "lead_surname": {
      "type": "string",
      "description": "Customer surname."
    },
    "lead_email": {
      "type": "string",
      "description": "Customer email (booking confirmation is sent here)."
    },
    "lead_phone": {
      "type": "string",
      "description": "Customer phone (optional, E.164 preferred)."
    }
  },
  "required": [
    "product_type",
    "lead_first_name",
    "lead_surname",
    "lead_email"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools