このMCPでできること
Finds French tradespeople for individual or multi-trade building projects, supports moderated contact requests, and creates artisan profiles.
ツール
入力スキーマ
{'type': 'object', 'oneOf': [{'not': {'required': ['external_place_id']}, 'required': ['artisan_id']}, {'not': {'required': ['artisan_id']}, 'required': ['external_place_id']}], '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nom', 'email', 'telephone', 'message'], 'properties': {'nom': {'type': 'string', 'maxLength': 80, 'minLength': 2, 'description': 'Nom du demandeur.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254, 'description': 'E-mail du demandeur.'}, 'message': {'type': 'string', 'maxLength': 2000, 'minLength': 5, 'description': 'Description de la demande ou des travaux.'}, 'telephone': {'type': 'string', 'maxLength': 32, 'minLength': 10, 'description': 'Mobile français 06/07 du demandeur, obligatoire pour le rappel.'}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'UUID artisan_id exact renvoyé pour un membre RenooLab. Fournir exactement ce champ ou external_place_id, jamais les deux.'}, 'external_place_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{3,512}$', 'description': 'Place ID exact renvoyé pour une fiche Google Maps. Fournir exactement ce champ ou artisan_id, jamais les deux.'}}}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['kind', 'titre', 'message'], 'properties': {'kind': {'type': 'string', 'const': 'contact_pending'}, 'titre': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nom_entreprise', 'metiers', 'ville', 'email', 'telephone'], 'properties': {'bio': {'type': 'string', 'maxLength': 1000, 'description': 'Courte présentation de lâ\x80\x99activité.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254, 'description': 'E-mail réel de lâ\x80\x99artisan, qui recevra le lien dâ\x80\x99activation.'}, 'siret': {'type': 'string', 'pattern': '^\\d{14}$', 'description': 'SIRET optionnel de 14 chiffres ; sâ\x80\x99il est fourni, il est vérifié au registre SIRENE.'}, 'ville': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Commune française dâ\x80\x99implantation.'}, 'metiers': {'type': 'array', 'items': {'enum': ['Rénovation générale', 'Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 18, 'minItems': 1, 'description': 'Métiers exercés parmi les 18 métiers publics. Fournisseur est app-only.'}, 'telephone': {'type': 'string', 'maxLength': 32, 'minLength': 10, 'description': 'Mobile français 06/07 de lâ\x80\x99artisan.'}, 'nom_entreprise': {'type': 'string', 'maxLength': 120, 'minLength': 2, 'description': 'Nom réel de lâ\x80\x99entreprise artisanale.'}}}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['kind', 'titre', 'message', 'profil'], 'properties': {'kind': {'type': 'string', 'const': 'signup_created'}, 'titre': {'type': 'string'}, 'profil': {'type': 'object', 'required': ['nom', 'ville', 'metiers'], 'properties': {'nom': {'type': 'string'}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'message': {'type': 'string'}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'ville': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Ville ou commune française où chercher. Peut être omise : le serveur demandera alors uniquement la commune. Si plusieurs communes portent ce nom, lâ\x80\x99outil demandera un code postal ou un département.'}, 'besoin': {'type': 'string', 'maxLength': 500, 'minLength': 3, 'description': 'Description naturelle du dépannage, des travaux ou de la rénovation. Le serveur déduit le métier lorsque possible.'}, 'metier': {'type': 'string', 'maxLength': 80, 'minLength': 2, 'description': 'Métier public si déjÃ\xa0 connu, par exemple Plomberie, Ã\x89lectricité, Peinture ou Couverture/Toiture.'}, 'tracking': {'type': 'object', 'properties': {'client': {'enum': ['chatgpt', 'claude', 'gemini', 'copilot', 'other', 'unknown'], 'type': 'string'}, 'channel': {'enum': ['direct', 'a2a'], 'type': 'string'}, 'discovery': {'enum': ['first_party', 'manual', 'a2a_registry', 'a2a_cards', 'other', 'unknown'], 'type': 'string'}}, 'additionalProperties': False}, 'code_postal': {'type': 'string', 'pattern': '^\\d{5}$', 'description': 'Code postal français facultatif pour préciser une commune homonyme, par exemple 39410.'}, 'departement': {'type': 'string', 'pattern': '^(?:0[1-9]|1\\d|2[1-9]|[3-8]\\d|9[0-5]|2A|2B|\\d{3})$', 'description': 'Code de département facultatif pour préciser une commune homonyme, par exemple 39, 2A ou 971.'}}}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['kind', 'artisans', 'external_results', 'grounded_summary', 'metier', 'ville', 'message', 'normalized_need', 'normalized_trade', 'coverage', 'required_input', 'reason', 'trade_candidates', 'city_candidates'], 'properties': {'kind': {'enum': ['artisan_results', 'search_needs_input', 'external_grounded_results'], 'type': 'string'}, 'ville': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'metier': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'reason': {'anyOf': [{'type': 'string', 'const': 'ambiguous_city'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'artisans': {'type': 'array', 'items': {'type': 'object', 'required': ['artisan_id', 'nom', 'ville', 'metiers', 'note', 'nb_avis', 'distance_km', 'avatar_url', 'nb_photos', 'verifie', 'medaille', 'profile_url', 'contact_url'], 'properties': {'nom': {'type': 'string'}, 'note': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}, 'nb_avis': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'verifie': {'type': 'boolean'}, 'medaille': {'enum': ['none', 'bronze', 'silver', 'gold'], 'type': 'string'}, 'nb_photos': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'avatar_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contact_url': {'type': 'string', 'format': 'uri'}, 'distance_km': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'profile_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'maxItems': 5}, 'coverage': {'anyOf': [{'enum': ['none', 'partial', 'available', 'external'], 'type': 'string'}, {'type': 'null'}]}, 'required_input': {'anyOf': [{'enum': ['ville', 'metier', 'city_disambiguation'], 'type': 'string'}, {'type': 'null'}]}, 'city_candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['ville', 'code_insee', 'departement', 'codes_postaux', 'population'], 'properties': {'ville': {'type': 'string'}, 'code_insee': {'type': 'string'}, 'population': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}]}, 'departement': {'type': 'string'}, 'codes_postaux': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'maxItems': 15}, 'normalized_need': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'widget_previews': {'type': 'object', 'required': ['artisan_previews', 'external_previews'], 'properties': {'artisan_previews': {'type': 'object', 'propertyNames': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'additionalProperties': {'type': 'object', 'required': ['photos'], 'properties': {'photos': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'thumbnail_url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'thumbnail_url': {'anyOf': [{'type': 'string', 'format': 'uri', 'maxLength': 2048}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 3}}, 'additionalProperties': False}}, 'external_previews': {'type': 'array', 'items': {'type': 'object', 'required': ['place_id', 'description', 'rating'], 'properties': {'rating': {'anyOf': [{'type': 'number', 'maximum': 5, 'minimum': 0}, {'type': 'null'}]}, 'place_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{3,512}$'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 180, 'minLength': 12}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 5}}, 'description': 'Données publiques nettoyées pour le rendu du widget. Ne jamais les recopier dans la réponse texte.', 'additionalProperties': False}, 'external_results': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'citation_index', 'place_id', 'google_maps_url', 'attribution', 'contact_url'], 'properties': {'source': {'type': 'string', 'const': 'google_maps'}, 'place_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{3,512}$'}, 'attribution': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'title': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'contact_url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'citation_index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'google_maps_url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}}, 'additionalProperties': False}, 'maxItems': 5}, 'grounded_summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'normalized_trade': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'trade_candidates': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 18}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ville', 'metiers_confirmes'], 'properties': {'ville': {'type': 'string', 'maxLength': 100, 'minLength': 2}, 'tracking': {'type': 'object', 'properties': {'client': {'enum': ['chatgpt', 'claude', 'gemini', 'copilot', 'other', 'unknown'], 'type': 'string'}, 'channel': {'enum': ['direct', 'a2a'], 'type': 'string'}, 'discovery': {'enum': ['first_party', 'manual', 'a2a_registry', 'a2a_cards', 'other', 'unknown'], 'type': 'string'}}, 'additionalProperties': False}, 'code_postal': {'type': 'string', 'pattern': '^\\d{5}$'}, 'departement': {'type': 'string', 'pattern': '^(?:0[1-9]|1\\d|2[1-9]|[3-8]\\d|9[0-5]|2A|2B|\\d{3})$'}, 'metiers_confirmes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 2}, 'maxItems': 17, 'minItems': 1}}}
出力スキーマ
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['kind', 'ville', 'metiers_demandes', 'rayon_km', 'coverage', 'solutions_completes', 'combinaison_recommandee', 'alternatives_par_metier', 'metiers_non_couverts', 'message', 'avertissements', 'widget_previews'], 'properties': {'kind': {'type': 'string', 'const': 'chantier_results'}, 'ville': {'type': 'string'}, 'message': {'type': 'string'}, 'coverage': {'enum': ['single_provider_explicit', 'single_provider_general', 'hybrid', 'minimal_combination', 'partial', 'none'], 'type': 'string'}, 'rayon_km': {'anyOf': [{'type': 'number', 'const': 30}, {'type': 'number', 'const': 50}]}, 'avertissements': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 4}, 'widget_previews': {'type': 'object', 'required': ['artisan_previews', 'external_previews'], 'properties': {'artisan_previews': {'type': 'object', 'propertyNames': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'additionalProperties': {'type': 'object', 'required': ['photos'], 'properties': {'photos': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'thumbnail_url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'thumbnail_url': {'anyOf': [{'type': 'string', 'format': 'uri', 'maxLength': 2048}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 3}}, 'additionalProperties': False}}, 'external_previews': {'type': 'array', 'items': {'type': 'object', 'required': ['place_id', 'description', 'rating'], 'properties': {'rating': {'anyOf': [{'type': 'number', 'maximum': 5, 'minimum': 0}, {'type': 'null'}]}, 'place_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{3,512}$'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 180, 'minLength': 12}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 5}}, 'description': 'Données publiques nettoyées pour le rendu du widget. Ne jamais les recopier dans la réponse texte.', 'additionalProperties': False}, 'metiers_demandes': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 2}, 'solutions_completes': {'type': 'array', 'items': {'type': 'object', 'required': ['artisan', 'coverage_basis', 'metiers_couverts', 'metiers_a_confirmer'], 'properties': {'artisan': {'type': 'object', 'required': ['artisan_id', 'nom', 'ville', 'metiers', 'note', 'nb_avis', 'distance_km', 'avatar_url', 'nb_photos', 'verifie', 'medaille', 'profile_url', 'contact_url'], 'properties': {'nom': {'type': 'string'}, 'note': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}, 'nb_avis': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'verifie': {'type': 'boolean'}, 'medaille': {'enum': ['none', 'bronze', 'silver', 'gold'], 'type': 'string'}, 'nb_photos': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'avatar_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contact_url': {'type': 'string', 'format': 'uri'}, 'distance_km': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'profile_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'coverage_basis': {'enum': ['declared', 'renovation_generale'], 'type': 'string'}, 'metiers_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 1}, 'metiers_a_confirmer': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}}, 'additionalProperties': False}, 'maxItems': 3}, 'metiers_non_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}, 'alternatives_par_metier': {'type': 'array', 'items': {'type': 'object', 'required': ['metier', 'artisan'], 'properties': {'metier': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'artisan': {'type': 'object', 'required': ['artisan', 'coverage_basis', 'metiers_couverts', 'metiers_a_confirmer'], 'properties': {'artisan': {'type': 'object', 'required': ['artisan_id', 'nom', 'ville', 'metiers', 'note', 'nb_avis', 'distance_km', 'avatar_url', 'nb_photos', 'verifie', 'medaille', 'profile_url', 'contact_url'], 'properties': {'nom': {'type': 'string'}, 'note': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}, 'nb_avis': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'verifie': {'type': 'boolean'}, 'medaille': {'enum': ['none', 'bronze', 'silver', 'gold'], 'type': 'string'}, 'nb_photos': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'avatar_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contact_url': {'type': 'string', 'format': 'uri'}, 'distance_km': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'profile_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'coverage_basis': {'enum': ['declared', 'renovation_generale'], 'type': 'string'}, 'metiers_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 1}, 'metiers_a_confirmer': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 17}, 'combinaison_recommandee': {'type': 'array', 'items': {'type': 'object', 'required': ['artisan', 'coverage_basis', 'metiers_couverts', 'metiers_a_confirmer'], 'properties': {'artisan': {'type': 'object', 'required': ['artisan_id', 'nom', 'ville', 'metiers', 'note', 'nb_avis', 'distance_km', 'avatar_url', 'nb_photos', 'verifie', 'medaille', 'profile_url', 'contact_url'], 'properties': {'nom': {'type': 'string'}, 'note': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}, 'nb_avis': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'verifie': {'type': 'boolean'}, 'medaille': {'enum': ['none', 'bronze', 'silver', 'gold'], 'type': 'string'}, 'nb_photos': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'avatar_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contact_url': {'type': 'string', 'format': 'uri'}, 'distance_km': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'profile_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'coverage_basis': {'enum': ['declared', 'renovation_generale'], 'type': 'string'}, 'metiers_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 1}, 'metiers_a_confirmer': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}}, 'additionalProperties': False}, 'maxItems': 6}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'required_input', 'metiers_recus', 'question', 'reason', 'city_candidates'], 'properties': {'kind': {'type': 'string', 'const': 'search_needs_input'}, 'reason': {'type': 'string', 'const': 'ambiguous_city'}, 'question': {'type': 'string'}, 'metiers_recus': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 2}, 'required_input': {'type': 'string', 'const': 'city_disambiguation'}, 'city_candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['ville', 'code_insee', 'departement', 'codes_postaux', 'population'], 'properties': {'ville': {'type': 'string'}, 'code_insee': {'type': 'string'}, 'population': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}]}, 'departement': {'type': 'string'}, 'codes_postaux': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'maxItems': 15}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'required_input', 'question', 'metiers_recus', 'max_selections'], 'properties': {'kind': {'type': 'string', 'const': 'search_needs_input'}, 'question': {'type': 'string'}, 'metiers_recus': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 7}, 'max_selections': {'type': 'number', 'const': 6}, 'required_input': {'type': 'string', 'const': 'metiers_prioritaires'}}, 'additionalProperties': False}], '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['kind'], 'properties': {'kind': {'enum': ['chantier_results', 'search_needs_input'], 'type': 'string'}, 'ville': {'type': 'string'}, 'reason': {'type': 'string', 'const': 'ambiguous_city'}, 'message': {'type': 'string'}, 'coverage': {'enum': ['single_provider_explicit', 'single_provider_general', 'hybrid', 'minimal_combination', 'partial', 'none'], 'type': 'string'}, 'question': {'type': 'string'}, 'rayon_km': {'anyOf': [{'type': 'number', 'const': 30}, {'type': 'number', 'const': 50}]}, 'metiers_recus': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 2}, 'avertissements': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 4}, 'max_selections': {'type': 'number', 'const': 6}, 'required_input': {'enum': ['city_disambiguation', 'metiers_prioritaires'], 'type': 'string'}, 'city_candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['ville', 'code_insee', 'departement', 'codes_postaux', 'population'], 'properties': {'ville': {'type': 'string'}, 'code_insee': {'type': 'string'}, 'population': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}]}, 'departement': {'type': 'string'}, 'codes_postaux': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'maxItems': 15}, 'widget_previews': {'type': 'object', 'required': ['artisan_previews', 'external_previews'], 'properties': {'artisan_previews': {'type': 'object', 'propertyNames': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'additionalProperties': {'type': 'object', 'required': ['photos'], 'properties': {'photos': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'thumbnail_url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'thumbnail_url': {'anyOf': [{'type': 'string', 'format': 'uri', 'maxLength': 2048}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 3}}, 'additionalProperties': False}}, 'external_previews': {'type': 'array', 'items': {'type': 'object', 'required': ['place_id', 'description', 'rating'], 'properties': {'rating': {'anyOf': [{'type': 'number', 'maximum': 5, 'minimum': 0}, {'type': 'null'}]}, 'place_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{3,512}$'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 180, 'minLength': 12}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 5}}, 'description': 'Données publiques nettoyées pour le rendu du widget. Ne jamais les recopier dans la réponse texte.', 'additionalProperties': False}, 'metiers_demandes': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 2}, 'solutions_completes': {'type': 'array', 'items': {'type': 'object', 'required': ['artisan', 'coverage_basis', 'metiers_couverts', 'metiers_a_confirmer'], 'properties': {'artisan': {'type': 'object', 'required': ['artisan_id', 'nom', 'ville', 'metiers', 'note', 'nb_avis', 'distance_km', 'avatar_url', 'nb_photos', 'verifie', 'medaille', 'profile_url', 'contact_url'], 'properties': {'nom': {'type': 'string'}, 'note': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}, 'nb_avis': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'verifie': {'type': 'boolean'}, 'medaille': {'enum': ['none', 'bronze', 'silver', 'gold'], 'type': 'string'}, 'nb_photos': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'avatar_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contact_url': {'type': 'string', 'format': 'uri'}, 'distance_km': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'profile_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'coverage_basis': {'enum': ['declared', 'renovation_generale'], 'type': 'string'}, 'metiers_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 1}, 'metiers_a_confirmer': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}}, 'additionalProperties': False}, 'maxItems': 3}, 'metiers_non_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}, 'alternatives_par_metier': {'type': 'array', 'items': {'type': 'object', 'required': ['metier', 'artisan'], 'properties': {'metier': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'artisan': {'type': 'object', 'required': ['artisan', 'coverage_basis', 'metiers_couverts', 'metiers_a_confirmer'], 'properties': {'artisan': {'type': 'object', 'required': ['artisan_id', 'nom', 'ville', 'metiers', 'note', 'nb_avis', 'distance_km', 'avatar_url', 'nb_photos', 'verifie', 'medaille', 'profile_url', 'contact_url'], 'properties': {'nom': {'type': 'string'}, 'note': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}, 'nb_avis': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'verifie': {'type': 'boolean'}, 'medaille': {'enum': ['none', 'bronze', 'silver', 'gold'], 'type': 'string'}, 'nb_photos': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'avatar_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contact_url': {'type': 'string', 'format': 'uri'}, 'distance_km': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'profile_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'coverage_basis': {'enum': ['declared', 'renovation_generale'], 'type': 'string'}, 'metiers_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 1}, 'metiers_a_confirmer': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 17}, 'combinaison_recommandee': {'type': 'array', 'items': {'type': 'object', 'required': ['artisan', 'coverage_basis', 'metiers_couverts', 'metiers_a_confirmer'], 'properties': {'artisan': {'type': 'object', 'required': ['artisan_id', 'nom', 'ville', 'metiers', 'note', 'nb_avis', 'distance_km', 'avatar_url', 'nb_photos', 'verifie', 'medaille', 'profile_url', 'contact_url'], 'properties': {'nom': {'type': 'string'}, 'note': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ville': {'type': 'string'}, 'metiers': {'type': 'array', 'items': {'type': 'string'}}, 'nb_avis': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'verifie': {'type': 'boolean'}, 'medaille': {'enum': ['none', 'bronze', 'silver', 'gold'], 'type': 'string'}, 'nb_photos': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'artisan_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'avatar_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contact_url': {'type': 'string', 'format': 'uri'}, 'distance_km': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'profile_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'coverage_basis': {'enum': ['declared', 'renovation_generale'], 'type': 'string'}, 'metiers_couverts': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17, 'minItems': 1}, 'metiers_a_confirmer': {'type': 'array', 'items': {'enum': ['Plomberie', 'Ã\x89lectricité', 'Maçonnerie', 'Carrelage', 'Peinture', 'Plâtrerie/Plaquiste', 'Isolation', 'Menuiserie', 'Parquet', 'Charpente', 'Couverture/Toiture', 'Chauffage/Climatisation', 'Serrurerie', 'Paysagiste', 'Pisciniste', "Décoration d'intérieur", 'Nettoyage'], 'type': 'string'}, 'maxItems': 17}}, 'additionalProperties': False}, 'maxItems': 6}}, 'additionalProperties': False}
最近のツール変更
類似のMCPサーバー
Superlógica Condomínios
Connects to a condominium ERP for billing, collections, agreements, expenses, bank movements, statements, files, communications, …
US Company Intelligence for AI Agents (SEC EDGAR, x402)
Offers pay-per-call web extraction, search and LLM tools plus French company, property, procurement, marketplace and security dat…
Rafid Intelligence Network
Analyzes Oman properties using rental comparables, yields, costs, and payback metrics, and supports Oman company search, profilin…
Batchdata
Searches property records, retrieves property attributes and histories, and performs address-based owner skip tracing.
Realestateapi
Searches properties, retrieves property and ownership details, and performs address-based owner skip tracing.
Tu Lugar
Searches and manages Paraguay and Latin American property listings, agents, projects, inquiries, saved searches, promotions, and …
Shovels
Provides access to Shovels.ai property and construction-related data through its API.
Perilpulse
Returns multi-peril property risk scores across hazards such as flood, wildfire, wind, hail, and crime.