MCLL Real Estate
MCLL (mcllrealestate.com) is a premium Thai real-estate firm. This skill lets an agent search and read its published listings — for sale and for rent, across Bangkok, Phuket, and the islands. Everything here is read-only public data; no key or login is needed.
Pick the access method your runtime supports. MCP and REST return listings; Markdown also renders the area, news, and development pages.
1. MCP server (richest — prefer this)
Streamable-HTTP MCP endpoint: https://mcllrealestate.com/api/mcp
Server card: https://mcllrealestate.com/.well-known/mcp/server-card.json
Three tools:
search_listings— find listings. Args:type("sale"|"rent", required),locale(en/fr/th/zh, defaulten), and optionalcity,area,propertyType(human names —"Phuket","Condo"),bedrooms,minPrice,maxPrice(THB),page. Returns{ total, page, results: [{ id, title, url, transactionType, city, area, bedrooms, bathrooms, areaSqm, priceThb, image }] }— each result'surlends in aslugyou pass toget_listing.get_listing— full detail of one listing. Args:type("sale"|"rent"),slug(from a search result),locale. Returns price, size, features, coordinates, and a Markdowndescription.execute— Code Mode. Args:code(JavaScript string). Runs in a Cloudflare sandbox with globalmcll.search(args)andmcll.get(args). No open network, filesystem, secrets, or writes. Usereturnfor the JSON-serializable result; top-levelawaitworks. Best for comparing, ranking, or computing across many listings in one call.
Example execute code:
const { results } = await mcll.search({ type: "sale", city: "Bangkok", page: 1 });
const details = await Promise.all(
results.slice(0, 2).map((r) =>
mcll.get({ type: "sale", slug: r.url.split("/").pop(), locale: "en" }),
),
);
return details.map((d) => ({
title: d.title,
url: d.url,
pricePerSqm: d.priceThb && d.areaSqm ? Math.round(d.priceThb / d.areaSqm) : null,
}));
2. REST API (no MCP client needed)
OpenAPI: https://mcllrealestate.com/api/openapi.json
- Search —
GET /api/listings?type=sale|rent&locale=enplus optional filters. Note these filters take ids (UUIDs), not names:city,area,propertyType,bedrooms,bathrooms,priceMin,priceMax,sizeMin,sizeMax,furnished,features,sort,page. Returns{ total, page, results }, where each result has the same safe public projection as MCP search: absoluteurl, public image URL, price fields, city/area names, and no admin-only fields. (For name-based filtering — "condos in Phuket" — use the MCPsearch_listingstool, which resolves names to ids for you.) - Detail —
GET /api/listings/{type}/{slug}?locale=en→ one listing as JSON, with a Markdowndescription.typeissaleorrent;slugcomes from a listing URL's last path segment.
# Detail of a known listing (slug from its public URL):
curl -s "https://mcllrealestate.com/api/listings/sale/kamala-cliff-villa?locale=en"
# Search (sale listings, page 1):
curl -s "https://mcllrealestate.com/api/listings?type=sale&locale=en"
3. Markdown content negotiation (any page → clean text)
Send Accept: text/markdown to any listing, area, news, or development URL and MCLL
returns a Markdown rendition instead of HTML — far fewer tokens than parsing the page.
The home page returns a site overview. Areas, news, and developments are reachable
only this way — no MCP tool or REST endpoint covers them; find their URLs in the
sitemap.
curl -s -H "Accept: text/markdown" \
"https://mcllrealestate.com/en/buy/villa/phuket/kamala/kamala-cliff-villa"
Index and static pages have no Markdown rendition and return HTML — use the search API for those.
Typical workflow
- Use
executewhen the user asks for comparison, ranking, or derived metrics across multiple listings. - Otherwise search for what the user wants (
search_listings, orGET /api/listings). - Read the result list; pick the relevant listing(s) by
title,area,priceThb. - Fetch details for the chosen listing(s) (
get_listing, the detail REST route, or Markdown on the listingurl). - Answer the user with the listing's facts and link them to the public
url.
Discovery and conventions
- Sitemaps (every URL, per locale):
https://mcllrealestate.com/sitemap.xml. - API catalog (machine index):
https://mcllrealestate.com/.well-known/api-catalog. - Site guide for agents:
https://mcllrealestate.com/llms-full.txt. - Locales:
en·fr·th·zh. Unpublished locales fall back to English. - Prices are in THB;
priceOnRequest: true(orpriceThb: null) means the price is not public — say "Price upon enquiry", never a number. - Only published listings are returned; there is no auth and nothing is writable here.