Communitygithub.com

mcllrealestate/agent-skills

Habilidades do agente de IA para a MCLL Real Estate — residências de luxo na Tailândia, para venda e aluguel

O que é agent-skills?

Esta habilidade permite que agentes de IA pesquisem e leiam os anúncios públicos da MCLL Real Estate (mcllrealestate.com), uma empresa imobiliária premium tailandesa. Ela oferece três métodos de acesso: um servidor MCP (Protocolo de Contexto do Modelo) com três ferramentas (search_listings, get_listing e execute para execução de código sandbox), uma API REST com endpoints de busca e detalhes, e negociação de conteúdo Markdown para converter páginas em texto limpo. Os agentes podem buscar imóveis para venda e aluguel em Bangkok, Phuket e ilhas, filtrando por cidade, área, tipo de propriedade, quartos e preço. Ideal para agentes de IA em plataformas como Claude Code, Cursor ou Codex, esta habilidade fornece dados públicos somente leitura sem necessidade de autenticação. O fluxo de trabalho típico envolve busca, seleção de anúncios e obtenção de detalhes, com suporte a comparações e métricas derivadas via o modo execute do MCP.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add mcllrealestate/agent-skills

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

MCLL Real Estate

A MCLL (mcllrealestate.com) é uma corretora imobiliária premium tailandesa. Esta habilidade permite que um agente pesquise e leia seus anúncios publicados — para venda e aluguel, em Bangkok, Phuket, e nas ilhas. Tudo aqui são dados públicos somente leitura; nenhuma chave ou login é necessário.

Escolha o método de acesso que seu runtime suportar. MCP e REST retornam listagens; Markdown também renderiza as páginas de área, notícias e desenvolvimento.

1. Servidor MCP (mais rico — prefira este)

Endpoint MCP HTTP Streamable: https://mcllrealestate.com/api/mcp Cartão do servidor: https://mcllrealestate.com/.well-known/mcp/server-card.json

Três ferramentas:

  • search_listings — encontrar anúncios. Args: type ("sale" | "rent", obrigatório), locale (en/fr/th/zh, padrão en), e opcionais city, area, propertyType (nomes humanos — "Phuket", "Condo"), bedrooms, minPrice, maxPrice (THB), page. Retorna { total, page, results: [{ id, title, url, transactionType, city, area, bedrooms, bathrooms, areaSqm, priceThb, image }] } — a url de cada resultado termina em um slug que você passa para get_listing.
  • get_listing — detalhes completos de um anúncio. Args: type ("sale"|"rent"), slug (de um resultado de busca), locale. Retorna preço, tamanho, características, coordenadas, e uma description em Markdown.
  • execute — Modo Código. Args: code (string JavaScript). Executa em um sandbox Cloudflare com mcll.search(args) e mcll.get(args) globais. Sem rede aberta, sistema de arquivos, segredos ou escritas. Use return para o resultado serializável em JSON; await no nível superior funciona. Melhor para comparar, classificar ou calcular entre vários anúncios em uma única chamada.

Exemplo de código execute:

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. API REST (nenhum cliente MCP necessário)

OpenAPI: https://mcllrealestate.com/api/openapi.json

  • Busca — GET /api/listings?type=sale|rent&locale=en mais filtros opcionais. Observe que esses filtros aceitam ids (UUIDs), não nomes: city, area, propertyType, bedrooms, bathrooms, priceMin, priceMax, sizeMin, sizeMax, furnished, features, sort, page. Retorna { total, page, results }, onde cada resultado tem a mesma projeção pública segura da busca MCP: url absoluta, URL de imagem pública, campos de preço, nomes de cidade/área e nenhum campo exclusivo de administrador. (Para filtragem baseada em nomes — "condomínios em Phuket" — use a ferramenta MCP search_listings, que resolve nomes para ids para você.)
  • Detalhe — GET /api/listings/{type}/{slug}?locale=en → um anúncio em JSON, com uma description em Markdown. type é sale ou rent; slug vem do último segmento de caminho da URL do anúncio.
# Detalhe de um anúncio conhecido (slug da sua URL pública):
curl -s "https://mcllrealestate.com/api/listings/sale/kamala-cliff-villa?locale=en"

# Busca (anúncios de venda, página 1):
curl -s "https://mcllrealestate.com/api/listings?type=sale&locale=en"

3. Negociação de conteúdo Markdown (qualquer página → texto limpo)

Envie Accept: text/markdown para qualquer URL de anúncio, área, notícias ou desenvolvimento e a MCLL retorna uma versão Markdown em vez de HTML — muito menos tokens do que analisar a página. A página inicial retorna uma visão geral do site. Áreas, notícias e empreendimentos são acessíveis apenas desta forma — nenhuma ferramenta MCP ou endpoint REST os cobre; encontre suas URLs no sitemap.

curl -s -H "Accept: text/markdown" \
  "https://mcllrealestate.com/en/buy/villa/phuket/kamala/kamala-cliff-villa"

Páginas de índice e estáticas não têm versão Markdown e retornam HTML — use a API de busca para elas.

Fluxo de trabalho típico

  1. Use execute quando o usuário pedir comparação, classificação ou métricas derivadas entre vários anúncios.
  2. Caso contrário, busque o que o usuário deseja (search_listings, ou GET /api/listings).
  3. Leia a lista de resultados; escolha o(s) anúncio(s) relevante(s) por title, area, priceThb.
  4. Obtenha detalhes do(s) anúncio(s) escolhido(s) (get_listing, a rota REST de detalhe, ou Markdown na url do anúncio).
  5. Responda ao usuário com os fatos do anúncio e os vincule à url pública.

Descoberta e convenções

  • Sitemaps (todas as URLs, por localidade): https://mcllrealestate.com/sitemap.xml.
  • Catálogo de API (índice de máquina): https://mcllrealestate.com/.well-known/api-catalog.
  • Guia do site para agentes: https://mcllrealestate.com/llms-full.txt.
  • Localidades: en · fr · th · zh. Localidades não publicadas caem para o inglês.
  • Preços estão em THB; priceOnRequest: true (ou priceThb: null) significa que o preço não é público — diga "Preço sob consulta", nunca um número.
  • Apenas anúncios publicados são retornados; não há autenticação e nada é gravável aqui.

Habilidades Relacionadas