mcll-real-estate — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mcll-real-estate (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCLL (mcllrealestate.com) is a Thai real-estate firm. This skill lets an agent search and read published sale and rent listings 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.
Streamable-HTTP MCP endpoint: https://mcllrealestate.com/api/mcp Server card: https://mcllrealestate.com/.well-known/mcp/server-card.json
Three tools:
type ("sale" | "rent", required),locale (en/fr/th/zh, default en), and optional city, area, propertyType (human names such as "Phuket" or "Condo"), bedrooms, minPrice, maxPrice (THB), page. Returns { total, page, results: [{ id, title, url, transactionType, city, area, bedrooms, bathrooms, areaSqm, priceThb, image }] }. Each result's url ends in a slug you pass to get_listing.
type ("sale"|"rent"),slug (from a search result), locale. Returns price, size, features, coordinates, and a Markdown description.
code (JavaScript string). Runs server-sidein a Cloudflare Worker sandbox with global mcll.search(args) and mcll.get(args). No open network, filesystem, environment variables, secrets, or writes. Use return for the JSON-serializable result; top-level await works. 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,
}));OpenAPI: https://mcllrealestate.com/api/openapi.json
GET /api/listings?type=sale|rent&locale=en plus optional filters. Notethese 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: absolute url, public image URL, price fields, city/area names, and no admin-only fields. For name-based filtering such as "condos in Phuket", use the MCP search_listings tool, which resolves names to ids for you.)
GET /api/listings/{type}/{slug}?locale=en returns one listing as JSON, with aMarkdown description. type is sale or rent; slug comes 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"Send Accept: text/markdown to any listing, area, news, or development URL and MCLL returns a Markdown rendition instead of HTML, with 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.
across multiple listings.
search_listings, or GET /api/listings).title, area, priceThb.get_listing, the detail REST route, orMarkdown on the listing url).
url.https://mcllrealestate.com/sitemap.xml.https://mcllrealestate.com/.well-known/api-catalog.https://mcllrealestate.com/llms-full.txt.en · fr · th · zh. Unpublished locales fall back to English.priceOnRequest: true (or priceThb: null) means the priceis not public. Say "Price upon enquiry", never a number.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.