mcp
Search & book Lakpura Sri Lanka tours, transfers, stays & activities as an AI agent.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httphttps://mcp.lakpura.comstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢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, 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; 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."
},
"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"
]
}🟡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
Evidence