{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://quartil.fr/mcp-schema/v1","title":"Quartil MCP Semantic Schema v1","description":"Proto-standard sémantique ouvert pour la valorisation immobilière française. Produit et publié par Quartil. Les objets définis ici sont exposés par le serveur MCP Quartil (mcp.quartil.fr) et peuvent servir de vocabulaire commun pour les agents IA, intégrations bancaires, et outils notariaux qui consomment des estimations immobilières françaises.","version":"1.0.0","generated_at":"2026-04-12","source":"https://quartil.fr/methode","license":"CC BY 4.0 (schéma public, réutilisation libre avec mention)","traceability_principle":"Chaque section logique (valuation, property_characteristics, neighborhood) porte son propre bloc 'sources' listant nom + vintage + URL + licence de chaque source utilisée. Voir bible §24 Quartil.","root":{"$ref":"#/$defs/PropertyValuation"},"$defs":{"PropertyValuation":{"$defs":{"Adjustment":{"description":"Un ajustement appliqué à un comparable pour le ramener au profil du bien cible.","properties":{"feature":{"description":"Nom de la feature ajustée (ex: 'surface_habitable', 'dpe')","title":"Feature","type":"string"},"target_value":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"default":null,"description":"Valeur de la feature sur le bien cible","title":"Target Value"},"comparable_value":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"default":null,"description":"Valeur de la feature sur le comparable","title":"Comparable Value"},"adjustment_pct":{"description":"Ajustement appliqué, en pourcentage du prix du comparable","title":"Adjustment Pct","type":"number"},"explanation":{"description":"Explication lisible en français de l'ajustement","title":"Explanation","type":"string"}},"required":["feature","adjustment_pct","explanation"],"title":"Adjustment","type":"object"},"Comparable":{"description":"Une transaction DVF utilisée comme comparable, avec ses ajustements.","properties":{"transaction_id":{"description":"Identifiant de la transaction DVF","title":"Transaction Id","type":"string"},"date_transaction":{"description":"Date de la transaction (ISO 8601)","title":"Date Transaction","type":"string"},"prix":{"description":"Prix de vente brut (€)","title":"Prix","type":"number"},"prix_ajuste":{"description":"Prix du comparable ajusté au profil du bien cible (€)","title":"Prix Ajuste","type":"number"},"surface_habitable_m2":{"description":"Surface du comparable (m²)","title":"Surface Habitable M2","type":"number"},"distance_m":{"description":"Distance au bien cible (mètres)","title":"Distance M","type":"number"},"similarity_score":{"description":"Score de similarité global (0-1, 1 = identique)","maximum":1,"minimum":0,"title":"Similarity Score","type":"number"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"},"adjustments":{"description":"Détail des ajustements appliqués à ce comparable","items":{"$ref":"#/$defs/Adjustment"},"title":"Adjustments","type":"array"}},"required":["transaction_id","date_transaction","prix","prix_ajuste","surface_habitable_m2","distance_m","similarity_score"],"title":"Comparable","type":"object"},"ConfidenceLabel":{"description":"Label de confiance lisible pour l'estimation.","enum":["haute","moyenne","faible"],"title":"ConfidenceLabel","type":"string"},"NeighborhoodSection":{"description":"Contexte de quartier (socio-éco, aménités, mobilité, risques) + sources.","properties":{"iris_revenu_median":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Revenu médian de l'IRIS (€/an) — source INSEE","title":"Iris Revenu Median"},"iris_taux_pauvrete":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Taux de pauvreté IRIS (%)","title":"Iris Taux Pauvrete"},"walkability_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Score de marchabilité (0-100) dérivé des POI OSM","title":"Walkability Score"},"nb_parcs_500m":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Nombre de parcs/jardins dans un rayon de 500m","title":"Nb Parcs 500M"},"distance_transport_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Distance au transport en commun le plus proche (m)","title":"Distance Transport M"},"taux_cambriolages_1000hab":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Taux de cambriolages pour 1000 habitants (SSMSI)","title":"Taux Cambriolages 1000Hab"},"has_risque_inondation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Has Risque Inondation"},"is_qpv":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Situé en quartier prioritaire de la politique de la ville","title":"Is Qpv"},"sources":{"items":{"$ref":"#/$defs/Source"},"title":"Sources","type":"array"}},"title":"NeighborhoodSection","type":"object"},"Property":{"description":"Description structurée d'un bien immobilier en entrée ou en sortie.\n\nEn entrée (MCP tool arg), `address` suffit — le serveur géocode via BAN.\nEn sortie, tous les champs sont remplis si possible.","properties":{"address":{"description":"Adresse postale complète du bien (sera géocodée via BAN)","examples":["12 rue de Rivoli, 75001 Paris"],"title":"Address","type":"string"},"type":{"$ref":"#/$defs/PropertyType","description":"Type de bien"},"surface_habitable_m2":{"description":"Surface habitable en mètres carrés","exclusiveMinimum":0,"maximum":10000,"title":"Surface Habitable M2","type":"number"},"nb_pieces":{"description":"Nombre de pièces principales","maximum":50,"minimum":1,"title":"Nb Pieces","type":"integer"},"dpe_class":{"anyOf":[{"enum":["A","B","C","D","E","F","G"],"type":"string"},{"type":"null"}],"default":null,"description":"Classe DPE énergie si connue","title":"Dpe Class"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude WGS84 (remplie par le géocodage)","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude WGS84 (remplie par le géocodage)","title":"Longitude"},"code_departement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Code département INSEE (2 chiffres) — rempli par le géocodage","title":"Code Departement"},"code_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Code commune INSEE (5 chiffres) — rempli par le géocodage","title":"Code Commune"}},"required":["address","type","surface_habitable_m2","nb_pieces"],"title":"Property","type":"object"},"PropertyCharacteristicsSection":{"description":"Caractéristiques enrichies du bien + sources qui les alimentent.","properties":{"dpe_class":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Classe DPE énergie (A-G)","title":"Dpe Class"},"dpe_class_ges":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Classe DPE GES (A-G)","title":"Dpe Class Ges"},"annee_construction":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Annee Construction"},"presence_ascenseur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Presence Ascenseur"},"copro_en_difficulte":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Copropriété signalée en difficulté (source RNIC)","title":"Copro En Difficulte"},"copro_score":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Score composite copropriété (0-100, 100 = excellent)","title":"Copro Score"},"copro_score_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Label du score copro : bon / moyen / alerte","title":"Copro Score Label"},"sources":{"items":{"$ref":"#/$defs/Source"},"title":"Sources","type":"array"}},"title":"PropertyCharacteristicsSection","type":"object"},"PropertyType":{"description":"Type de bien immobilier supporté par Quartil MCP V1.","enum":["appartement","maison"],"title":"PropertyType","type":"string"},"Source":{"description":"Une source de données Quartil avec sa vintage (date de référence).\n\nLa promesse de traçabilité est contractuelle : chaque source exposée\n**doit** avoir son `vintage` renseigné. Un agent IA ou un humain doit\npouvoir décider si un chiffre est encore d'actualité.","properties":{"name":{"description":"Nom public de la source (ex: 'DVF', 'ADEME DPE', 'INSEE IRIS 2021')","examples":["DVF","ADEME DPE","BDNB","INSEE IRIS"],"title":"Name","type":"string"},"vintage":{"description":"Date de référence des données utilisées (ISO 8601, YYYY-MM-DD). C'est la date à laquelle la donnée sous-jacente est valide (ex: DVF 2024-S2 → '2024-12-31', DPE millésime 2026-02 → '2026-02-01'). Permet à l'agent de juger si l'information est encore d'actualité au moment de la décision.","examples":["2026-03-15","2024-12-31","2021-01-01"],"title":"Vintage","type":"string"},"role":{"$ref":"#/$defs/SourceRole","description":"Rôle de cette source dans la section qui la liste"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL publique de référence (site officiel, page de métadonnées)","title":"Url"},"license":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Licence de la source (ex: 'Licence Ouverte 2.0', 'ODbL')","title":"License"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Brève description du rôle de la source dans cette estimation","title":"Description"}},"required":["name","vintage","role"],"title":"Source","type":"object"},"SourceRole":{"description":"Rôle d'une source dans la construction d'une section.\n\nPermet à un agent IA de comprendre *pourquoi* une source est listée :\nest-elle la base des comparables, des caractéristiques, du contexte ?","enum":["comparables","adjustments","property_features","neighborhood_context","market_context","methodology"],"title":"SourceRole","type":"string"},"ValuationSection":{"description":"Résultat chiffré de l'estimation + sources utilisées pour la produire.","properties":{"prix_estime":{"description":"Prix estimé central (€)","title":"Prix Estime","type":"number"},"prix_m2_estime":{"description":"Prix au m² estimé (€/m²)","title":"Prix M2 Estime","type":"number"},"prix_bas":{"description":"Borne basse de l'intervalle de confiance étendu P5/P95 (€)","title":"Prix Bas","type":"number"},"prix_haut":{"description":"Borne haute de l'intervalle de confiance étendu P5/P95 (€)","title":"Prix Haut","type":"number"},"prix_bas_negociation":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Borne basse de la fourchette de négociation P25/P75 (€)","title":"Prix Bas Negociation"},"prix_haut_negociation":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Borne haute de la fourchette de négociation P25/P75 (€)","title":"Prix Haut Negociation"},"confidence_level":{"description":"Niveau de confiance numérique (0-1)","maximum":1,"minimum":0,"title":"Confidence Level","type":"number"},"confidence_label":{"$ref":"#/$defs/ConfidenceLabel","description":"Label lisible de confiance (haute/moyenne/faible)"},"expected_median_ape_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"APE prédite par le méta-modèle de confiance (%). Représente l'erreur attendue pour ce bien, indépendamment du prix.","title":"Expected Median Ape Pct"},"n_comparables":{"description":"Nombre de comparables utilisés","title":"N Comparables","type":"integer"},"zone_macro":{"description":"Zone macro hédonique (paris, petite_couronne, hors_paris, normandie)","title":"Zone Macro","type":"string"},"method":{"description":"Méthode de valorisation employée (comparables_adjusted, lightgbm_fallback...)","title":"Method","type":"string"},"sources":{"description":"Sources utilisées pour produire cette estimation, chacune avec sa vintage. Un agent peut filtrer par `role` : 'comparables' pour citer les sources de prix, 'adjustments' pour la méthode d'ajustement, 'methodology' pour le cadre global.","items":{"$ref":"#/$defs/Source"},"title":"Sources","type":"array"}},"required":["prix_estime","prix_m2_estime","prix_bas","prix_haut","confidence_level","confidence_label","n_comparables","zone_macro","method"],"title":"ValuationSection","type":"object"}},"description":"Objet réponse complet de la tool `get_property_valuation`.\n\nStructure en sections logiques, chacune avec sa propre traçabilité\nde sources. Forme la base du proto-standard sémantique immobilier\nfrançais Quartil (voir bible §24).","properties":{"schema_version":{"default":"1.0.0","description":"Version du schéma MCP Quartil","title":"Schema Version","type":"string"},"property":{"$ref":"#/$defs/Property","description":"Le bien évalué (avec coordonnées géocodées)"},"valuation":{"$ref":"#/$defs/ValuationSection","description":"Résultat chiffré de l'estimation"},"property_characteristics":{"$ref":"#/$defs/PropertyCharacteristicsSection","description":"Caractéristiques enrichies du bien (DPE, bâti, copro)"},"neighborhood":{"$ref":"#/$defs/NeighborhoodSection","description":"Contexte de quartier (socio-éco, aménités, mobilité, risques)"},"comparables":{"description":"Top-5 comparables utilisés pour l'estimation, avec ajustements détaillés","items":{"$ref":"#/$defs/Comparable"},"title":"Comparables","type":"array"},"disclaimer":{"default":"Cette estimation est produite par le moteur Quartil à partir de sources publiques (DVF, DPE, BDNB, INSEE...). Elle n'a pas valeur d'expertise notariale et ne doit pas être utilisée comme unique base de décision d'achat ou de vente. Voir méthodologie complète sur quartil.fr/methode.","description":"Avertissement produit attaché à toute estimation","title":"Disclaimer","type":"string"}},"required":["property","valuation","property_characteristics","neighborhood"],"title":"PropertyValuation","type":"object"},"Property":{"$defs":{"PropertyType":{"description":"Type de bien immobilier supporté par Quartil MCP V1.","enum":["appartement","maison"],"title":"PropertyType","type":"string"}},"description":"Description structurée d'un bien immobilier en entrée ou en sortie.\n\nEn entrée (MCP tool arg), `address` suffit — le serveur géocode via BAN.\nEn sortie, tous les champs sont remplis si possible.","properties":{"address":{"description":"Adresse postale complète du bien (sera géocodée via BAN)","examples":["12 rue de Rivoli, 75001 Paris"],"title":"Address","type":"string"},"type":{"$ref":"#/$defs/PropertyType","description":"Type de bien"},"surface_habitable_m2":{"description":"Surface habitable en mètres carrés","exclusiveMinimum":0,"maximum":10000,"title":"Surface Habitable M2","type":"number"},"nb_pieces":{"description":"Nombre de pièces principales","maximum":50,"minimum":1,"title":"Nb Pieces","type":"integer"},"dpe_class":{"anyOf":[{"enum":["A","B","C","D","E","F","G"],"type":"string"},{"type":"null"}],"default":null,"description":"Classe DPE énergie si connue","title":"Dpe Class"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude WGS84 (remplie par le géocodage)","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude WGS84 (remplie par le géocodage)","title":"Longitude"},"code_departement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Code département INSEE (2 chiffres) — rempli par le géocodage","title":"Code Departement"},"code_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Code commune INSEE (5 chiffres) — rempli par le géocodage","title":"Code Commune"}},"required":["address","type","surface_habitable_m2","nb_pieces"],"title":"Property","type":"object"},"ValuationSection":{"$defs":{"ConfidenceLabel":{"description":"Label de confiance lisible pour l'estimation.","enum":["haute","moyenne","faible"],"title":"ConfidenceLabel","type":"string"},"Source":{"description":"Une source de données Quartil avec sa vintage (date de référence).\n\nLa promesse de traçabilité est contractuelle : chaque source exposée\n**doit** avoir son `vintage` renseigné. Un agent IA ou un humain doit\npouvoir décider si un chiffre est encore d'actualité.","properties":{"name":{"description":"Nom public de la source (ex: 'DVF', 'ADEME DPE', 'INSEE IRIS 2021')","examples":["DVF","ADEME DPE","BDNB","INSEE IRIS"],"title":"Name","type":"string"},"vintage":{"description":"Date de référence des données utilisées (ISO 8601, YYYY-MM-DD). C'est la date à laquelle la donnée sous-jacente est valide (ex: DVF 2024-S2 → '2024-12-31', DPE millésime 2026-02 → '2026-02-01'). Permet à l'agent de juger si l'information est encore d'actualité au moment de la décision.","examples":["2026-03-15","2024-12-31","2021-01-01"],"title":"Vintage","type":"string"},"role":{"$ref":"#/$defs/SourceRole","description":"Rôle de cette source dans la section qui la liste"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL publique de référence (site officiel, page de métadonnées)","title":"Url"},"license":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Licence de la source (ex: 'Licence Ouverte 2.0', 'ODbL')","title":"License"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Brève description du rôle de la source dans cette estimation","title":"Description"}},"required":["name","vintage","role"],"title":"Source","type":"object"},"SourceRole":{"description":"Rôle d'une source dans la construction d'une section.\n\nPermet à un agent IA de comprendre *pourquoi* une source est listée :\nest-elle la base des comparables, des caractéristiques, du contexte ?","enum":["comparables","adjustments","property_features","neighborhood_context","market_context","methodology"],"title":"SourceRole","type":"string"}},"description":"Résultat chiffré de l'estimation + sources utilisées pour la produire.","properties":{"prix_estime":{"description":"Prix estimé central (€)","title":"Prix Estime","type":"number"},"prix_m2_estime":{"description":"Prix au m² estimé (€/m²)","title":"Prix M2 Estime","type":"number"},"prix_bas":{"description":"Borne basse de l'intervalle de confiance étendu P5/P95 (€)","title":"Prix Bas","type":"number"},"prix_haut":{"description":"Borne haute de l'intervalle de confiance étendu P5/P95 (€)","title":"Prix Haut","type":"number"},"prix_bas_negociation":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Borne basse de la fourchette de négociation P25/P75 (€)","title":"Prix Bas Negociation"},"prix_haut_negociation":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Borne haute de la fourchette de négociation P25/P75 (€)","title":"Prix Haut Negociation"},"confidence_level":{"description":"Niveau de confiance numérique (0-1)","maximum":1,"minimum":0,"title":"Confidence Level","type":"number"},"confidence_label":{"$ref":"#/$defs/ConfidenceLabel","description":"Label lisible de confiance (haute/moyenne/faible)"},"expected_median_ape_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"APE prédite par le méta-modèle de confiance (%). Représente l'erreur attendue pour ce bien, indépendamment du prix.","title":"Expected Median Ape Pct"},"n_comparables":{"description":"Nombre de comparables utilisés","title":"N Comparables","type":"integer"},"zone_macro":{"description":"Zone macro hédonique (paris, petite_couronne, hors_paris, normandie)","title":"Zone Macro","type":"string"},"method":{"description":"Méthode de valorisation employée (comparables_adjusted, lightgbm_fallback...)","title":"Method","type":"string"},"sources":{"description":"Sources utilisées pour produire cette estimation, chacune avec sa vintage. Un agent peut filtrer par `role` : 'comparables' pour citer les sources de prix, 'adjustments' pour la méthode d'ajustement, 'methodology' pour le cadre global.","items":{"$ref":"#/$defs/Source"},"title":"Sources","type":"array"}},"required":["prix_estime","prix_m2_estime","prix_bas","prix_haut","confidence_level","confidence_label","n_comparables","zone_macro","method"],"title":"ValuationSection","type":"object"},"PropertyCharacteristicsSection":{"$defs":{"Source":{"description":"Une source de données Quartil avec sa vintage (date de référence).\n\nLa promesse de traçabilité est contractuelle : chaque source exposée\n**doit** avoir son `vintage` renseigné. Un agent IA ou un humain doit\npouvoir décider si un chiffre est encore d'actualité.","properties":{"name":{"description":"Nom public de la source (ex: 'DVF', 'ADEME DPE', 'INSEE IRIS 2021')","examples":["DVF","ADEME DPE","BDNB","INSEE IRIS"],"title":"Name","type":"string"},"vintage":{"description":"Date de référence des données utilisées (ISO 8601, YYYY-MM-DD). C'est la date à laquelle la donnée sous-jacente est valide (ex: DVF 2024-S2 → '2024-12-31', DPE millésime 2026-02 → '2026-02-01'). Permet à l'agent de juger si l'information est encore d'actualité au moment de la décision.","examples":["2026-03-15","2024-12-31","2021-01-01"],"title":"Vintage","type":"string"},"role":{"$ref":"#/$defs/SourceRole","description":"Rôle de cette source dans la section qui la liste"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL publique de référence (site officiel, page de métadonnées)","title":"Url"},"license":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Licence de la source (ex: 'Licence Ouverte 2.0', 'ODbL')","title":"License"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Brève description du rôle de la source dans cette estimation","title":"Description"}},"required":["name","vintage","role"],"title":"Source","type":"object"},"SourceRole":{"description":"Rôle d'une source dans la construction d'une section.\n\nPermet à un agent IA de comprendre *pourquoi* une source est listée :\nest-elle la base des comparables, des caractéristiques, du contexte ?","enum":["comparables","adjustments","property_features","neighborhood_context","market_context","methodology"],"title":"SourceRole","type":"string"}},"description":"Caractéristiques enrichies du bien + sources qui les alimentent.","properties":{"dpe_class":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Classe DPE énergie (A-G)","title":"Dpe Class"},"dpe_class_ges":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Classe DPE GES (A-G)","title":"Dpe Class Ges"},"annee_construction":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Annee Construction"},"presence_ascenseur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Presence Ascenseur"},"copro_en_difficulte":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Copropriété signalée en difficulté (source RNIC)","title":"Copro En Difficulte"},"copro_score":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Score composite copropriété (0-100, 100 = excellent)","title":"Copro Score"},"copro_score_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Label du score copro : bon / moyen / alerte","title":"Copro Score Label"},"sources":{"items":{"$ref":"#/$defs/Source"},"title":"Sources","type":"array"}},"title":"PropertyCharacteristicsSection","type":"object"},"NeighborhoodSection":{"$defs":{"Source":{"description":"Une source de données Quartil avec sa vintage (date de référence).\n\nLa promesse de traçabilité est contractuelle : chaque source exposée\n**doit** avoir son `vintage` renseigné. Un agent IA ou un humain doit\npouvoir décider si un chiffre est encore d'actualité.","properties":{"name":{"description":"Nom public de la source (ex: 'DVF', 'ADEME DPE', 'INSEE IRIS 2021')","examples":["DVF","ADEME DPE","BDNB","INSEE IRIS"],"title":"Name","type":"string"},"vintage":{"description":"Date de référence des données utilisées (ISO 8601, YYYY-MM-DD). C'est la date à laquelle la donnée sous-jacente est valide (ex: DVF 2024-S2 → '2024-12-31', DPE millésime 2026-02 → '2026-02-01'). Permet à l'agent de juger si l'information est encore d'actualité au moment de la décision.","examples":["2026-03-15","2024-12-31","2021-01-01"],"title":"Vintage","type":"string"},"role":{"$ref":"#/$defs/SourceRole","description":"Rôle de cette source dans la section qui la liste"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL publique de référence (site officiel, page de métadonnées)","title":"Url"},"license":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Licence de la source (ex: 'Licence Ouverte 2.0', 'ODbL')","title":"License"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Brève description du rôle de la source dans cette estimation","title":"Description"}},"required":["name","vintage","role"],"title":"Source","type":"object"},"SourceRole":{"description":"Rôle d'une source dans la construction d'une section.\n\nPermet à un agent IA de comprendre *pourquoi* une source est listée :\nest-elle la base des comparables, des caractéristiques, du contexte ?","enum":["comparables","adjustments","property_features","neighborhood_context","market_context","methodology"],"title":"SourceRole","type":"string"}},"description":"Contexte de quartier (socio-éco, aménités, mobilité, risques) + sources.","properties":{"iris_revenu_median":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Revenu médian de l'IRIS (€/an) — source INSEE","title":"Iris Revenu Median"},"iris_taux_pauvrete":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Taux de pauvreté IRIS (%)","title":"Iris Taux Pauvrete"},"walkability_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Score de marchabilité (0-100) dérivé des POI OSM","title":"Walkability Score"},"nb_parcs_500m":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Nombre de parcs/jardins dans un rayon de 500m","title":"Nb Parcs 500M"},"distance_transport_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Distance au transport en commun le plus proche (m)","title":"Distance Transport M"},"taux_cambriolages_1000hab":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Taux de cambriolages pour 1000 habitants (SSMSI)","title":"Taux Cambriolages 1000Hab"},"has_risque_inondation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Has Risque Inondation"},"is_qpv":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Situé en quartier prioritaire de la politique de la ville","title":"Is Qpv"},"sources":{"items":{"$ref":"#/$defs/Source"},"title":"Sources","type":"array"}},"title":"NeighborhoodSection","type":"object"},"Comparable":{"$defs":{"Adjustment":{"description":"Un ajustement appliqué à un comparable pour le ramener au profil du bien cible.","properties":{"feature":{"description":"Nom de la feature ajustée (ex: 'surface_habitable', 'dpe')","title":"Feature","type":"string"},"target_value":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"default":null,"description":"Valeur de la feature sur le bien cible","title":"Target Value"},"comparable_value":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"default":null,"description":"Valeur de la feature sur le comparable","title":"Comparable Value"},"adjustment_pct":{"description":"Ajustement appliqué, en pourcentage du prix du comparable","title":"Adjustment Pct","type":"number"},"explanation":{"description":"Explication lisible en français de l'ajustement","title":"Explanation","type":"string"}},"required":["feature","adjustment_pct","explanation"],"title":"Adjustment","type":"object"}},"description":"Une transaction DVF utilisée comme comparable, avec ses ajustements.","properties":{"transaction_id":{"description":"Identifiant de la transaction DVF","title":"Transaction Id","type":"string"},"date_transaction":{"description":"Date de la transaction (ISO 8601)","title":"Date Transaction","type":"string"},"prix":{"description":"Prix de vente brut (€)","title":"Prix","type":"number"},"prix_ajuste":{"description":"Prix du comparable ajusté au profil du bien cible (€)","title":"Prix Ajuste","type":"number"},"surface_habitable_m2":{"description":"Surface du comparable (m²)","title":"Surface Habitable M2","type":"number"},"distance_m":{"description":"Distance au bien cible (mètres)","title":"Distance M","type":"number"},"similarity_score":{"description":"Score de similarité global (0-1, 1 = identique)","maximum":1,"minimum":0,"title":"Similarity Score","type":"number"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"},"adjustments":{"description":"Détail des ajustements appliqués à ce comparable","items":{"$ref":"#/$defs/Adjustment"},"title":"Adjustments","type":"array"}},"required":["transaction_id","date_transaction","prix","prix_ajuste","surface_habitable_m2","distance_m","similarity_score"],"title":"Comparable","type":"object"},"Adjustment":{"description":"Un ajustement appliqué à un comparable pour le ramener au profil du bien cible.","properties":{"feature":{"description":"Nom de la feature ajustée (ex: 'surface_habitable', 'dpe')","title":"Feature","type":"string"},"target_value":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"default":null,"description":"Valeur de la feature sur le bien cible","title":"Target Value"},"comparable_value":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"default":null,"description":"Valeur de la feature sur le comparable","title":"Comparable Value"},"adjustment_pct":{"description":"Ajustement appliqué, en pourcentage du prix du comparable","title":"Adjustment Pct","type":"number"},"explanation":{"description":"Explication lisible en français de l'ajustement","title":"Explanation","type":"string"}},"required":["feature","adjustment_pct","explanation"],"title":"Adjustment","type":"object"},"Source":{"$defs":{"SourceRole":{"description":"Rôle d'une source dans la construction d'une section.\n\nPermet à un agent IA de comprendre *pourquoi* une source est listée :\nest-elle la base des comparables, des caractéristiques, du contexte ?","enum":["comparables","adjustments","property_features","neighborhood_context","market_context","methodology"],"title":"SourceRole","type":"string"}},"description":"Une source de données Quartil avec sa vintage (date de référence).\n\nLa promesse de traçabilité est contractuelle : chaque source exposée\n**doit** avoir son `vintage` renseigné. Un agent IA ou un humain doit\npouvoir décider si un chiffre est encore d'actualité.","properties":{"name":{"description":"Nom public de la source (ex: 'DVF', 'ADEME DPE', 'INSEE IRIS 2021')","examples":["DVF","ADEME DPE","BDNB","INSEE IRIS"],"title":"Name","type":"string"},"vintage":{"description":"Date de référence des données utilisées (ISO 8601, YYYY-MM-DD). C'est la date à laquelle la donnée sous-jacente est valide (ex: DVF 2024-S2 → '2024-12-31', DPE millésime 2026-02 → '2026-02-01'). Permet à l'agent de juger si l'information est encore d'actualité au moment de la décision.","examples":["2026-03-15","2024-12-31","2021-01-01"],"title":"Vintage","type":"string"},"role":{"$ref":"#/$defs/SourceRole","description":"Rôle de cette source dans la section qui la liste"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL publique de référence (site officiel, page de métadonnées)","title":"Url"},"license":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Licence de la source (ex: 'Licence Ouverte 2.0', 'ODbL')","title":"License"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Brève description du rôle de la source dans cette estimation","title":"Description"}},"required":["name","vintage","role"],"title":"Source","type":"object"}}}