Real estate MCP server for Morocco — search, valuation, market analysis, 17 tools.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Creer un lead (contact client) pour prise de rendez-vous ou demande d'information
Nom du contact (2-120 caracteres)
Telephone (8-24 caracteres, ex: 0612345678)
Source du lead (defaut: mcp)
ID du bien concerne (optionnel)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Creer un lead (contact client) pour prise de rendez-vous ou demande d'information
| Argument | Type | Description |
|---|---|---|
| name* | string | Nom du contact (2-120 caracteres) |
| phone* | string | Telephone (8-24 caracteres, ex: 0612345678) |
| source | string | Source du lead (defaut: mcp) |
| listingId | number | ID du bien concerne (optionnel) |
{
"type": "object",
"required": [
"name",
"phone"
],
"properties": {
"name": {
"type": "string",
"description": "Nom du contact (2-120 caracteres)"
},
"phone": {
"type": "string",
"description": "Telephone (8-24 caracteres, ex: 0612345678)"
},
"source": {
"enum": [
"website",
"whatsapp_click",
"facebook",
"phone",
"other",
"mcp"
],
"type": "string",
"description": "Source du lead (defaut: mcp)"
},
"listingId": {
"type": "number",
"description": "ID du bien concerne (optionnel)"
}
}
}Estimer la valeur d'un bien immobilier (prix au m², fourchette basse/haute)
| Argument | Type | Description |
|---|---|---|
| etat | string | Etat du bien (optionnel) |
| type* | string | Type de transaction |
| etage | string | Type d'etage (optionnel) |
| ville | string | Ville (optionnel, defaut: Rabat) |
| pieces | number | Nombre de pieces (optionnel) |
| surface* | number | Surface en m² |
| quartier* | string | Quartier (ex: Agdal, Hay Riad) |
| standing | string | Standing (optionnel) |
{
"type": "object",
"required": [
"type",
"quartier",
"surface"
],
"properties": {
"etat": {
"enum": [
"renover",
"bon",
"neuf"
],
"type": "string",
"description": "Etat du bien (optionnel)"
},
"type": {
"enum": [
"vente",
"location"
],
"type": "string",
"description": "Type de transaction"
},
"etage": {
"enum": [
"rdc",
"bas",
"milieu",
"haut",
"dernier"
],
"type": "string",
"description": "Type d'etage (optionnel)"
},
"ville": {
"type": "string",
"description": "Ville (optionnel, defaut: Rabat)"
},
"pieces": {
"type": "number",
"description": "Nombre de pieces (optionnel)"
},
"surface": {
"type": "number",
"description": "Surface en m²"
},
"quartier": {
"type": "string",
"description": "Quartier (ex: Agdal, Hay Riad)"
},
"standing": {
"enum": [
"economique",
"standard",
"standing",
"luxe"
],
"type": "string",
"description": "Standing (optionnel)"
}
}
}Classement des agences immobilieres par volume d'annonces
| Argument | Type | Description |
|---|---|---|
| limit | number | Nombre d'agences (5-100, defaut: 20) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Nombre d'agences (5-100, defaut: 20)"
}
}
}Trouver les annonces les plus similaires a un bien donne (pour evaluation ou estimation)
| Argument | Type | Description |
|---|---|---|
| listingId* | number | ID du bien de reference |
{
"type": "object",
"required": [
"listingId"
],
"properties": {
"listingId": {
"type": "number",
"description": "ID du bien de reference"
}
}
}Identifier les biens sous-evalues (opportunites d'investissement avec discount)
| Argument | Type | Description |
|---|---|---|
| page | number | Page (defaut: 1) |
| status | string | Filtrer par type (defaut: vente) |
| pageSize | number | Resultats par page (defaut: 20, max: 100) |
| minSample | number | Echantillon minimum par segment (12-300, defaut: 20) |
| minDiscountPct | number | Discount minimum en pourcentage (10-70, defaut: 15) |
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"status": {
"enum": [
"vente",
"location",
"all"
],
"type": "string",
"description": "Filtrer par type (defaut: vente)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 20, max: 100)"
},
"minSample": {
"type": "number",
"description": "Echantillon minimum par segment (12-300, defaut: 20)"
},
"minDiscountPct": {
"type": "number",
"description": "Discount minimum en pourcentage (10-70, defaut: 15)"
}
}
}Indice de liquidite du marche par quartier (taux de rotation, stock, delai de vente)
| Argument | Type | Description |
|---|---|---|
| status | string | Filtrer par type (defaut: all) |
| quartier | string | Quartier specifique (optionnel, tous si omis) |
{
"type": "object",
"properties": {
"status": {
"enum": [
"vente",
"location",
"all"
],
"type": "string",
"description": "Filtrer par type (defaut: all)"
},
"quartier": {
"type": "string",
"description": "Quartier specifique (optionnel, tous si omis)"
}
}
}Obtenir le détail complet d'un bien immobilier par son ID
| Argument | Type | Description |
|---|---|---|
| id* | number | ID du bien immobilier |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "number",
"description": "ID du bien immobilier"
}
}
}Previsions de prix a 90 jours par quartier (regression lineaire)
| Argument | Type | Description |
|---|---|---|
| months | number | Periode d'analyse en mois (3-36, defaut: 12) |
| status | string | Filtrer par type (defaut: all) |
| quartier | string | Quartier specifique (optionnel, tous si omis) |
{
"type": "object",
"properties": {
"months": {
"type": "number",
"description": "Periode d'analyse en mois (3-36, defaut: 12)"
},
"status": {
"enum": [
"vente",
"location",
"all"
],
"type": "string",
"description": "Filtrer par type (defaut: all)"
},
"quartier": {
"type": "string",
"description": "Quartier specifique (optionnel, tous si omis)"
}
}
}Obtenir les tendances du marche immobilier par quartier (variation de prix sur N mois)
| Argument | Type | Description |
|---|---|---|
| months | number | Periode en mois (3-36, defaut: 12) |
| status | string | Filtrer par type (defaut: all) |
{
"type": "object",
"properties": {
"months": {
"type": "number",
"description": "Periode en mois (3-36, defaut: 12)"
},
"status": {
"enum": [
"vente",
"location",
"all"
],
"type": "string",
"description": "Filtrer par type (defaut: all)"
}
}
}Analyser les prix au m² par quartier avec tendances et distribution
| Argument | Type | Description |
|---|---|---|
| page | number | Page (defaut: 1) |
| location | string | Quartier ou ville specifique (optionnel) |
| pageSize | number | Resultats par page (defaut: 20, max: 100) |
| priceMax | number | Prix maximum (optionnel) |
| priceMin | number | Prix minimum (optionnel) |
| transaction | string | Type de transaction (defaut: Vente) |
| propertyType | string | Type de bien (optionnel, ex: Appartement, Villa) |
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"location": {
"type": "string",
"description": "Quartier ou ville specifique (optionnel)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 20, max: 100)"
},
"priceMax": {
"type": "number",
"description": "Prix maximum (optionnel)"
},
"priceMin": {
"type": "number",
"description": "Prix minimum (optionnel)"
},
"transaction": {
"enum": [
"Vente",
"Location",
"Achat"
],
"type": "string",
"description": "Type de transaction (defaut: Vente)"
},
"propertyType": {
"type": "string",
"description": "Type de bien (optionnel, ex: Appartement, Villa)"
}
}
}Comparer deux quartiers cote-a-cote (prix m², nombre d'annonces, volatilite)
| Argument | Type | Description |
|---|---|---|
| q1* | string | Premier quartier (ex: Agdal) |
| q2* | string | Second quartier (ex: Hay Riad) |
| status | string | Filtrer par type (defaut: all) |
{
"type": "object",
"required": [
"q1",
"q2"
],
"properties": {
"q1": {
"type": "string",
"description": "Premier quartier (ex: Agdal)"
},
"q2": {
"type": "string",
"description": "Second quartier (ex: Hay Riad)"
},
"status": {
"enum": [
"vente",
"location",
"all"
],
"type": "string",
"description": "Filtrer par type (defaut: all)"
}
}
}Obtenir les statistiques agregees par quartier (prix m² moyen, nombre d'annonces)
| Argument | Type | Description |
|---|---|---|
| transaction | string | Filtrer par transaction |
{
"type": "object",
"properties": {
"transaction": {
"enum": [
"Vente",
"Location"
],
"type": "string",
"description": "Filtrer par transaction"
}
}
}Obtenir le rendement locatif brut par quartier (comparatif achat vs location)
| Argument | Type | Description |
|---|---|---|
| quartier | string | Quartier specifique (optionnel, tous si omis) |
{
"type": "object",
"properties": {
"quartier": {
"type": "string",
"description": "Quartier specifique (optionnel, tous si omis)"
}
}
}Detecter les annonces avec des prix anormaux (IQR outliers, scores de severite)
| Argument | Type | Description |
|---|---|---|
| page | number | Page (defaut: 1) |
| status | string | Filtrer par type (defaut: all) |
| pageSize | number | Resultats par page (defaut: 20, max: 100) |
| minSample | number | Echantillon minimum (12-300, defaut: 20) |
| iqrMultiplier | number | Multiplicateur IQR (1.5-3.0, defaut: 2.0) |
| minDeviationPct | number | Deviation minimum (10-90%, defaut: 30) |
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"status": {
"enum": [
"vente",
"location",
"all"
],
"type": "string",
"description": "Filtrer par type (defaut: all)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 20, max: 100)"
},
"minSample": {
"type": "number",
"description": "Echantillon minimum (12-300, defaut: 20)"
},
"iqrMultiplier": {
"type": "number",
"description": "Multiplicateur IQR (1.5-3.0, defaut: 2.0)"
},
"minDeviationPct": {
"type": "number",
"description": "Deviation minimum (10-90%, defaut: 30)"
}
}
}Lister tous les quartiers disponibles avec leur ville
No arguments.
{
"type": "object",
"properties": {}
}Lister toutes les villes disponibles
No arguments.
{
"type": "object",
"properties": {}
}Rechercher des biens immobiliers avec filtres (transaction, location, budget, surface, pieces, type de bien, mot-cle)
| Argument | Type | Description |
|---|---|---|
| q | string | Mot-cle dans le titre ou la description |
| page | number | Page (defaut: 1) |
| sort | string | Tri |
| location | string | Quartier ou ville (ex: Agdal, Hay Riad, Salé) |
| pageSize | number | Resultats par page (defaut: 12, max: 60) |
| priceMax | number | Prix maximum en MAD |
| priceMin | number | Prix minimum en MAD |
| roomsMax | number | Nombre maximum de pieces |
| roomsMin | number | Nombre minimum de pieces |
| surfaceMax | number | Surface maximum en m² |
| surfaceMin | number |
| Surface minimum en m² |
| transaction | string | Type de transaction |
| propertyType | string | Type de bien |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Mot-cle dans le titre ou la description"
},
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"sort": {
"enum": [
"price_asc",
"price_desc",
"date_desc",
"date_asc"
],
"type": "string",
"description": "Tri"
},
"location": {
"type": "string",
"description": "Quartier ou ville (ex: Agdal, Hay Riad, Salé)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 12, max: 60)"
},
"priceMax": {
"type": "number",
"description": "Prix maximum en MAD"
},
"priceMin": {
"type": "number",
"description": "Prix minimum en MAD"
},
"roomsMax": {
"type": "number",
"description": "Nombre maximum de pieces"
},
"roomsMin": {
"type": "number",
"description": "Nombre minimum de pieces"
},
"surfaceMax": {
"type": "number",
"description": "Surface maximum en m²"
},
"surfaceMin": {
"type": "number",
"description": "Surface minimum en m²"
},
"transaction": {
"enum": [
"Vente",
"Location"
],
"type": "string",
"description": "Type de transaction"
},
"propertyType": {
"enum": [
"Appartement",
"Maison",
"Villa",
"Studio",
"Terrain",
"Bureau",
"Commerce",
"Riad"
],
"type": "string",
"description": "Type de bien"
}
}
}