{
  "specVersion": "1.0",
  "host": {
    "displayName": "RenooLab",
    "identifier": "renoolab.fr",
    "documentationUrl": "https://renoolab.fr/mcp/"
  },
  "entries": [
    {
      "identifier": "urn:air:renoolab.fr:mcp:artisan-services",
      "displayName": "RenooLab — artisans en France (MCP)",
      "type": "application/mcp-server+json",
      "description": "Serveur MCP officiel RenooLab pour rechercher un artisan ou constituer une équipe multi-métiers pour un chantier en France, contacter un professionnel sélectionné, ou créer gratuitement un profil artisan.",
      "capabilities": [
        "rechercher_artisans",
        "rechercher_chantier",
        "contacter_artisan",
        "creer_profil_artisan"
      ],
      "tags": [
        "mcp",
        "local-services",
        "building-trades",
        "renovation",
        "france",
        "french"
      ],
      "representativeQueries": [
        "trouve-moi un plombier près de Marseille",
        "une fuite se trouve sous la baignoire, quel artisan peut intervenir à Aix-en-Provence",
        "cherche un électricien pour une panne à Rennes",
        "trouve un plombier et un carreleur pour refaire une salle de bain à Lyon",
        "je suis artisan et je veux créer gratuitement mon profil RenooLab"
      ],
      "version": "1.4.0",
      "metadata": {
        "registryId": "fr.renoolab/mcp",
        "executionUrl": "https://mcp.renoolab.fr/mcp",
        "authentication": "oauth2.1",
        "language": "fr-FR",
        "geographicCoverage": "France",
        "manifestUrl": "https://renoolab.fr/.well-known/mcp.json"
      },
      "data": {
        "name": "RenooLab",
        "description": "Official RenooLab MCP server for single-trade searches, multi-trade renovation projects, moderated contact requests and free professional profiles in France.",
        "url": "https://mcp.renoolab.fr/mcp",
        "transport": "streamable-http",
        "authentication": "oauth2.1",
        "documentation": "https://renoolab.fr/mcp/",
        "tools": [
          {
            "name": "rechercher_artisans",
            "title": "Trouver un artisan pour des travaux en France",
            "description": "Find up to five RenooLab profiles for one inferred or explicit trade within 30 km of a French commune. Clarifies ambiguous communes and may return attributed external listings when no RenooLab profile is available. Read-only.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "besoin": {
                  "description": "Description naturelle du dépannage, des travaux ou de la rénovation. Le serveur déduit le métier lorsque possible.",
                  "type": "string",
                  "minLength": 3,
                  "maxLength": 500
                },
                "metier": {
                  "description": "Métier public si déjà connu, par exemple Plomberie, Électricité, Peinture ou Couverture/Toiture.",
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 80
                },
                "ville": {
                  "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’outil demandera un code postal ou un département.",
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 100
                },
                "code_postal": {
                  "description": "Code postal français facultatif pour préciser une commune homonyme, par exemple 39410.",
                  "type": "string",
                  "pattern": "^\\d{5}$"
                },
                "departement": {
                  "description": "Code de département facultatif pour préciser une commune homonyme, par exemple 39, 2A ou 971.",
                  "type": "string",
                  "pattern": "^(?:0[1-9]|1\\d|2[1-9]|[3-8]\\d|9[0-5]|2A|2B|\\d{3})$"
                },
                "tracking": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "enum": [
                        "direct",
                        "a2a"
                      ]
                    },
                    "client": {
                      "type": "string",
                      "enum": [
                        "chatgpt",
                        "claude",
                        "gemini",
                        "copilot",
                        "other",
                        "unknown"
                      ]
                    },
                    "discovery": {
                      "type": "string",
                      "enum": [
                        "first_party",
                        "manual",
                        "a2a_registry",
                        "a2a_cards",
                        "other",
                        "unknown"
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "$schema": "http://json-schema.org/draft-07/schema#"
            },
            "outputSchema": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "artisan_results",
                    "search_needs_input",
                    "external_grounded_results"
                  ]
                },
                "artisans": {
                  "maxItems": 5,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "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)$"
                      },
                      "nom": {
                        "type": "string"
                      },
                      "ville": {
                        "type": "string"
                      },
                      "metiers": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "note": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "nb_avis": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "distance_km": {
                        "anyOf": [
                          {
                            "type": "number",
                            "minimum": 0
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "avatar_url": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "nb_photos": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "verifie": {
                        "type": "boolean"
                      },
                      "medaille": {
                        "type": "string",
                        "enum": [
                          "none",
                          "bronze",
                          "silver",
                          "gold"
                        ]
                      },
                      "profile_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "contact_url": {
                        "type": "string",
                        "format": "uri"
                      }
                    },
                    "required": [
                      "artisan_id",
                      "nom",
                      "ville",
                      "metiers",
                      "note",
                      "nb_avis",
                      "distance_km",
                      "avatar_url",
                      "nb_photos",
                      "verifie",
                      "medaille",
                      "profile_url",
                      "contact_url"
                    ],
                    "additionalProperties": false
                  }
                },
                "external_results": {
                  "maxItems": 5,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "source": {
                        "type": "string",
                        "const": "google_maps"
                      },
                      "citation_index": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "place_id": {
                        "type": "string",
                        "pattern": "^[A-Za-z0-9_-]{3,512}$"
                      },
                      "google_maps_url": {
                        "type": "string",
                        "maxLength": 2048,
                        "format": "uri"
                      },
                      "attribution": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 500
                          },
                          "url": {
                            "type": "string",
                            "maxLength": 2048,
                            "format": "uri"
                          }
                        },
                        "required": [
                          "title",
                          "url"
                        ],
                        "additionalProperties": false
                      },
                      "contact_url": {
                        "type": "string",
                        "maxLength": 2048,
                        "format": "uri"
                      }
                    },
                    "required": [
                      "source",
                      "citation_index",
                      "place_id",
                      "google_maps_url",
                      "attribution",
                      "contact_url"
                    ],
                    "additionalProperties": false
                  }
                },
                "widget_previews": {
                  "type": "object",
                  "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",
                        "properties": {
                          "photos": {
                            "maxItems": 3,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "maxLength": 2048,
                                  "format": "uri"
                                },
                                "thumbnail_url": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "maxLength": 2048,
                                      "format": "uri"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "url",
                                "thumbnail_url"
                              ],
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "photos"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "external_previews": {
                      "maxItems": 5,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "place_id": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9_-]{3,512}$"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 12,
                                "maxLength": 180
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "rating": {
                            "anyOf": [
                              {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 5
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "place_id",
                          "description",
                          "rating"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "artisan_previews",
                    "external_previews"
                  ],
                  "additionalProperties": false,
                  "description": "Données publiques nettoyées pour le rendu du widget. Ne jamais les recopier dans la réponse texte."
                },
                "grounded_summary": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "metier": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "ville": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "message": {
                  "type": "string"
                },
                "normalized_need": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "normalized_trade": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "coverage": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none",
                        "partial",
                        "available",
                        "external"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "required_input": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "ville",
                        "metier",
                        "city_disambiguation"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "reason": {
                  "anyOf": [
                    {
                      "type": "string",
                      "const": "ambiguous_city"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "trade_candidates": {
                  "maxItems": 18,
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "city_candidates": {
                  "maxItems": 15,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ville": {
                        "type": "string"
                      },
                      "code_insee": {
                        "type": "string"
                      },
                      "departement": {
                        "type": "string"
                      },
                      "codes_postaux": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "population": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "ville",
                      "code_insee",
                      "departement",
                      "codes_postaux",
                      "population"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "kind",
                "artisans",
                "external_results",
                "grounded_summary",
                "metier",
                "ville",
                "message",
                "normalized_need",
                "normalized_trade",
                "coverage",
                "required_input",
                "reason",
                "trade_candidates",
                "city_candidates"
              ],
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false
            },
            "annotations": {
              "readOnlyHint": true,
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true
            }
          },
          {
            "name": "rechercher_chantier",
            "title": "Trouver les artisans pour un chantier en France",
            "description": "Find complete providers or a minimal combination of professionals for multiple confirmed trades within 50 km of one French commune. Clarifies ambiguous communes. Read-only.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "ville": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 100
                },
                "metiers_confirmes": {
                  "minItems": 1,
                  "maxItems": 17,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 80
                  }
                },
                "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})$"
                },
                "tracking": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "enum": [
                        "direct",
                        "a2a"
                      ]
                    },
                    "client": {
                      "type": "string",
                      "enum": [
                        "chatgpt",
                        "claude",
                        "gemini",
                        "copilot",
                        "other",
                        "unknown"
                      ]
                    },
                    "discovery": {
                      "type": "string",
                      "enum": [
                        "first_party",
                        "manual",
                        "a2a_registry",
                        "a2a_cards",
                        "other",
                        "unknown"
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "required": [
                "ville",
                "metiers_confirmes"
              ],
              "$schema": "http://json-schema.org/draft-07/schema#"
            },
            "outputSchema": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "chantier_results",
                    "search_needs_input"
                  ]
                },
                "ville": {
                  "type": "string"
                },
                "metiers_demandes": {
                  "minItems": 2,
                  "maxItems": 17,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "Plomberie",
                      "Électricité",
                      "Maçonnerie",
                      "Carrelage",
                      "Peinture",
                      "Plâtrerie/Plaquiste",
                      "Isolation",
                      "Menuiserie",
                      "Parquet",
                      "Charpente",
                      "Couverture/Toiture",
                      "Chauffage/Climatisation",
                      "Serrurerie",
                      "Paysagiste",
                      "Pisciniste",
                      "Décoration d'intérieur",
                      "Nettoyage"
                    ]
                  }
                },
                "rayon_km": {
                  "anyOf": [
                    {
                      "type": "number",
                      "const": 30
                    },
                    {
                      "type": "number",
                      "const": 50
                    }
                  ]
                },
                "coverage": {
                  "type": "string",
                  "enum": [
                    "single_provider_explicit",
                    "single_provider_general",
                    "hybrid",
                    "minimal_combination",
                    "partial",
                    "none"
                  ]
                },
                "solutions_completes": {
                  "maxItems": 3,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "artisan": {
                        "type": "object",
                        "properties": {
                          "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)$"
                          },
                          "nom": {
                            "type": "string"
                          },
                          "ville": {
                            "type": "string"
                          },
                          "metiers": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "note": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "nb_avis": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "distance_km": {
                            "anyOf": [
                              {
                                "type": "number",
                                "minimum": 0
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "avatar_url": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "nb_photos": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "verifie": {
                            "type": "boolean"
                          },
                          "medaille": {
                            "type": "string",
                            "enum": [
                              "none",
                              "bronze",
                              "silver",
                              "gold"
                            ]
                          },
                          "profile_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "contact_url": {
                            "type": "string",
                            "format": "uri"
                          }
                        },
                        "required": [
                          "artisan_id",
                          "nom",
                          "ville",
                          "metiers",
                          "note",
                          "nb_avis",
                          "distance_km",
                          "avatar_url",
                          "nb_photos",
                          "verifie",
                          "medaille",
                          "profile_url",
                          "contact_url"
                        ],
                        "additionalProperties": false
                      },
                      "coverage_basis": {
                        "type": "string",
                        "enum": [
                          "declared",
                          "renovation_generale"
                        ]
                      },
                      "metiers_couverts": {
                        "minItems": 1,
                        "maxItems": 17,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "Plomberie",
                            "Électricité",
                            "Maçonnerie",
                            "Carrelage",
                            "Peinture",
                            "Plâtrerie/Plaquiste",
                            "Isolation",
                            "Menuiserie",
                            "Parquet",
                            "Charpente",
                            "Couverture/Toiture",
                            "Chauffage/Climatisation",
                            "Serrurerie",
                            "Paysagiste",
                            "Pisciniste",
                            "Décoration d'intérieur",
                            "Nettoyage"
                          ]
                        }
                      },
                      "metiers_a_confirmer": {
                        "maxItems": 17,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "Plomberie",
                            "Électricité",
                            "Maçonnerie",
                            "Carrelage",
                            "Peinture",
                            "Plâtrerie/Plaquiste",
                            "Isolation",
                            "Menuiserie",
                            "Parquet",
                            "Charpente",
                            "Couverture/Toiture",
                            "Chauffage/Climatisation",
                            "Serrurerie",
                            "Paysagiste",
                            "Pisciniste",
                            "Décoration d'intérieur",
                            "Nettoyage"
                          ]
                        }
                      }
                    },
                    "required": [
                      "artisan",
                      "coverage_basis",
                      "metiers_couverts",
                      "metiers_a_confirmer"
                    ],
                    "additionalProperties": false
                  }
                },
                "combinaison_recommandee": {
                  "maxItems": 6,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "artisan": {
                        "type": "object",
                        "properties": {
                          "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)$"
                          },
                          "nom": {
                            "type": "string"
                          },
                          "ville": {
                            "type": "string"
                          },
                          "metiers": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "note": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "nb_avis": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "distance_km": {
                            "anyOf": [
                              {
                                "type": "number",
                                "minimum": 0
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "avatar_url": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "nb_photos": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "verifie": {
                            "type": "boolean"
                          },
                          "medaille": {
                            "type": "string",
                            "enum": [
                              "none",
                              "bronze",
                              "silver",
                              "gold"
                            ]
                          },
                          "profile_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "contact_url": {
                            "type": "string",
                            "format": "uri"
                          }
                        },
                        "required": [
                          "artisan_id",
                          "nom",
                          "ville",
                          "metiers",
                          "note",
                          "nb_avis",
                          "distance_km",
                          "avatar_url",
                          "nb_photos",
                          "verifie",
                          "medaille",
                          "profile_url",
                          "contact_url"
                        ],
                        "additionalProperties": false
                      },
                      "coverage_basis": {
                        "type": "string",
                        "enum": [
                          "declared",
                          "renovation_generale"
                        ]
                      },
                      "metiers_couverts": {
                        "minItems": 1,
                        "maxItems": 17,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "Plomberie",
                            "Électricité",
                            "Maçonnerie",
                            "Carrelage",
                            "Peinture",
                            "Plâtrerie/Plaquiste",
                            "Isolation",
                            "Menuiserie",
                            "Parquet",
                            "Charpente",
                            "Couverture/Toiture",
                            "Chauffage/Climatisation",
                            "Serrurerie",
                            "Paysagiste",
                            "Pisciniste",
                            "Décoration d'intérieur",
                            "Nettoyage"
                          ]
                        }
                      },
                      "metiers_a_confirmer": {
                        "maxItems": 17,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "Plomberie",
                            "Électricité",
                            "Maçonnerie",
                            "Carrelage",
                            "Peinture",
                            "Plâtrerie/Plaquiste",
                            "Isolation",
                            "Menuiserie",
                            "Parquet",
                            "Charpente",
                            "Couverture/Toiture",
                            "Chauffage/Climatisation",
                            "Serrurerie",
                            "Paysagiste",
                            "Pisciniste",
                            "Décoration d'intérieur",
                            "Nettoyage"
                          ]
                        }
                      }
                    },
                    "required": [
                      "artisan",
                      "coverage_basis",
                      "metiers_couverts",
                      "metiers_a_confirmer"
                    ],
                    "additionalProperties": false
                  }
                },
                "alternatives_par_metier": {
                  "maxItems": 17,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "metier": {
                        "type": "string",
                        "enum": [
                          "Plomberie",
                          "Électricité",
                          "Maçonnerie",
                          "Carrelage",
                          "Peinture",
                          "Plâtrerie/Plaquiste",
                          "Isolation",
                          "Menuiserie",
                          "Parquet",
                          "Charpente",
                          "Couverture/Toiture",
                          "Chauffage/Climatisation",
                          "Serrurerie",
                          "Paysagiste",
                          "Pisciniste",
                          "Décoration d'intérieur",
                          "Nettoyage"
                        ]
                      },
                      "artisan": {
                        "type": "object",
                        "properties": {
                          "artisan": {
                            "type": "object",
                            "properties": {
                              "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)$"
                              },
                              "nom": {
                                "type": "string"
                              },
                              "ville": {
                                "type": "string"
                              },
                              "metiers": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "note": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "nb_avis": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "distance_km": {
                                "anyOf": [
                                  {
                                    "type": "number",
                                    "minimum": 0
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "nb_photos": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "verifie": {
                                "type": "boolean"
                              },
                              "medaille": {
                                "type": "string",
                                "enum": [
                                  "none",
                                  "bronze",
                                  "silver",
                                  "gold"
                                ]
                              },
                              "profile_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "contact_url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "artisan_id",
                              "nom",
                              "ville",
                              "metiers",
                              "note",
                              "nb_avis",
                              "distance_km",
                              "avatar_url",
                              "nb_photos",
                              "verifie",
                              "medaille",
                              "profile_url",
                              "contact_url"
                            ],
                            "additionalProperties": false
                          },
                          "coverage_basis": {
                            "type": "string",
                            "enum": [
                              "declared",
                              "renovation_generale"
                            ]
                          },
                          "metiers_couverts": {
                            "minItems": 1,
                            "maxItems": 17,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Plomberie",
                                "Électricité",
                                "Maçonnerie",
                                "Carrelage",
                                "Peinture",
                                "Plâtrerie/Plaquiste",
                                "Isolation",
                                "Menuiserie",
                                "Parquet",
                                "Charpente",
                                "Couverture/Toiture",
                                "Chauffage/Climatisation",
                                "Serrurerie",
                                "Paysagiste",
                                "Pisciniste",
                                "Décoration d'intérieur",
                                "Nettoyage"
                              ]
                            }
                          },
                          "metiers_a_confirmer": {
                            "maxItems": 17,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Plomberie",
                                "Électricité",
                                "Maçonnerie",
                                "Carrelage",
                                "Peinture",
                                "Plâtrerie/Plaquiste",
                                "Isolation",
                                "Menuiserie",
                                "Parquet",
                                "Charpente",
                                "Couverture/Toiture",
                                "Chauffage/Climatisation",
                                "Serrurerie",
                                "Paysagiste",
                                "Pisciniste",
                                "Décoration d'intérieur",
                                "Nettoyage"
                              ]
                            }
                          }
                        },
                        "required": [
                          "artisan",
                          "coverage_basis",
                          "metiers_couverts",
                          "metiers_a_confirmer"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "metier",
                      "artisan"
                    ],
                    "additionalProperties": false
                  }
                },
                "metiers_non_couverts": {
                  "maxItems": 17,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "Plomberie",
                      "Électricité",
                      "Maçonnerie",
                      "Carrelage",
                      "Peinture",
                      "Plâtrerie/Plaquiste",
                      "Isolation",
                      "Menuiserie",
                      "Parquet",
                      "Charpente",
                      "Couverture/Toiture",
                      "Chauffage/Climatisation",
                      "Serrurerie",
                      "Paysagiste",
                      "Pisciniste",
                      "Décoration d'intérieur",
                      "Nettoyage"
                    ]
                  }
                },
                "message": {
                  "type": "string"
                },
                "avertissements": {
                  "maxItems": 4,
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "widget_previews": {
                  "type": "object",
                  "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",
                        "properties": {
                          "photos": {
                            "maxItems": 3,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "maxLength": 2048,
                                  "format": "uri"
                                },
                                "thumbnail_url": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "maxLength": 2048,
                                      "format": "uri"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "url",
                                "thumbnail_url"
                              ],
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "photos"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "external_previews": {
                      "maxItems": 5,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "place_id": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9_-]{3,512}$"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 12,
                                "maxLength": 180
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "rating": {
                            "anyOf": [
                              {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 5
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "place_id",
                          "description",
                          "rating"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "artisan_previews",
                    "external_previews"
                  ],
                  "additionalProperties": false,
                  "description": "Données publiques nettoyées pour le rendu du widget. Ne jamais les recopier dans la réponse texte."
                },
                "required_input": {
                  "type": "string",
                  "enum": [
                    "city_disambiguation",
                    "metiers_prioritaires"
                  ]
                },
                "question": {
                  "type": "string"
                },
                "reason": {
                  "type": "string",
                  "const": "ambiguous_city"
                },
                "city_candidates": {
                  "maxItems": 15,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ville": {
                        "type": "string"
                      },
                      "code_insee": {
                        "type": "string"
                      },
                      "departement": {
                        "type": "string"
                      },
                      "codes_postaux": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "population": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "ville",
                      "code_insee",
                      "departement",
                      "codes_postaux",
                      "population"
                    ],
                    "additionalProperties": false
                  }
                },
                "metiers_recus": {
                  "minItems": 2,
                  "maxItems": 17,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "Plomberie",
                      "Électricité",
                      "Maçonnerie",
                      "Carrelage",
                      "Peinture",
                      "Plâtrerie/Plaquiste",
                      "Isolation",
                      "Menuiserie",
                      "Parquet",
                      "Charpente",
                      "Couverture/Toiture",
                      "Chauffage/Climatisation",
                      "Serrurerie",
                      "Paysagiste",
                      "Pisciniste",
                      "Décoration d'intérieur",
                      "Nettoyage"
                    ]
                  }
                },
                "max_selections": {
                  "type": "number",
                  "const": 6
                }
              },
              "required": [
                "kind"
              ],
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "chantier_results"
                    },
                    "ville": {
                      "type": "string"
                    },
                    "metiers_demandes": {
                      "minItems": 2,
                      "maxItems": 17,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "Plomberie",
                          "Électricité",
                          "Maçonnerie",
                          "Carrelage",
                          "Peinture",
                          "Plâtrerie/Plaquiste",
                          "Isolation",
                          "Menuiserie",
                          "Parquet",
                          "Charpente",
                          "Couverture/Toiture",
                          "Chauffage/Climatisation",
                          "Serrurerie",
                          "Paysagiste",
                          "Pisciniste",
                          "Décoration d'intérieur",
                          "Nettoyage"
                        ]
                      }
                    },
                    "rayon_km": {
                      "anyOf": [
                        {
                          "type": "number",
                          "const": 30
                        },
                        {
                          "type": "number",
                          "const": 50
                        }
                      ]
                    },
                    "coverage": {
                      "type": "string",
                      "enum": [
                        "single_provider_explicit",
                        "single_provider_general",
                        "hybrid",
                        "minimal_combination",
                        "partial",
                        "none"
                      ]
                    },
                    "solutions_completes": {
                      "maxItems": 3,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "artisan": {
                            "type": "object",
                            "properties": {
                              "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)$"
                              },
                              "nom": {
                                "type": "string"
                              },
                              "ville": {
                                "type": "string"
                              },
                              "metiers": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "note": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "nb_avis": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "distance_km": {
                                "anyOf": [
                                  {
                                    "type": "number",
                                    "minimum": 0
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "nb_photos": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "verifie": {
                                "type": "boolean"
                              },
                              "medaille": {
                                "type": "string",
                                "enum": [
                                  "none",
                                  "bronze",
                                  "silver",
                                  "gold"
                                ]
                              },
                              "profile_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "contact_url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "artisan_id",
                              "nom",
                              "ville",
                              "metiers",
                              "note",
                              "nb_avis",
                              "distance_km",
                              "avatar_url",
                              "nb_photos",
                              "verifie",
                              "medaille",
                              "profile_url",
                              "contact_url"
                            ],
                            "additionalProperties": false
                          },
                          "coverage_basis": {
                            "type": "string",
                            "enum": [
                              "declared",
                              "renovation_generale"
                            ]
                          },
                          "metiers_couverts": {
                            "minItems": 1,
                            "maxItems": 17,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Plomberie",
                                "Électricité",
                                "Maçonnerie",
                                "Carrelage",
                                "Peinture",
                                "Plâtrerie/Plaquiste",
                                "Isolation",
                                "Menuiserie",
                                "Parquet",
                                "Charpente",
                                "Couverture/Toiture",
                                "Chauffage/Climatisation",
                                "Serrurerie",
                                "Paysagiste",
                                "Pisciniste",
                                "Décoration d'intérieur",
                                "Nettoyage"
                              ]
                            }
                          },
                          "metiers_a_confirmer": {
                            "maxItems": 17,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Plomberie",
                                "Électricité",
                                "Maçonnerie",
                                "Carrelage",
                                "Peinture",
                                "Plâtrerie/Plaquiste",
                                "Isolation",
                                "Menuiserie",
                                "Parquet",
                                "Charpente",
                                "Couverture/Toiture",
                                "Chauffage/Climatisation",
                                "Serrurerie",
                                "Paysagiste",
                                "Pisciniste",
                                "Décoration d'intérieur",
                                "Nettoyage"
                              ]
                            }
                          }
                        },
                        "required": [
                          "artisan",
                          "coverage_basis",
                          "metiers_couverts",
                          "metiers_a_confirmer"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "combinaison_recommandee": {
                      "maxItems": 6,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "artisan": {
                            "type": "object",
                            "properties": {
                              "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)$"
                              },
                              "nom": {
                                "type": "string"
                              },
                              "ville": {
                                "type": "string"
                              },
                              "metiers": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "note": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "nb_avis": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "distance_km": {
                                "anyOf": [
                                  {
                                    "type": "number",
                                    "minimum": 0
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "nb_photos": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "verifie": {
                                "type": "boolean"
                              },
                              "medaille": {
                                "type": "string",
                                "enum": [
                                  "none",
                                  "bronze",
                                  "silver",
                                  "gold"
                                ]
                              },
                              "profile_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "contact_url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "artisan_id",
                              "nom",
                              "ville",
                              "metiers",
                              "note",
                              "nb_avis",
                              "distance_km",
                              "avatar_url",
                              "nb_photos",
                              "verifie",
                              "medaille",
                              "profile_url",
                              "contact_url"
                            ],
                            "additionalProperties": false
                          },
                          "coverage_basis": {
                            "type": "string",
                            "enum": [
                              "declared",
                              "renovation_generale"
                            ]
                          },
                          "metiers_couverts": {
                            "minItems": 1,
                            "maxItems": 17,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Plomberie",
                                "Électricité",
                                "Maçonnerie",
                                "Carrelage",
                                "Peinture",
                                "Plâtrerie/Plaquiste",
                                "Isolation",
                                "Menuiserie",
                                "Parquet",
                                "Charpente",
                                "Couverture/Toiture",
                                "Chauffage/Climatisation",
                                "Serrurerie",
                                "Paysagiste",
                                "Pisciniste",
                                "Décoration d'intérieur",
                                "Nettoyage"
                              ]
                            }
                          },
                          "metiers_a_confirmer": {
                            "maxItems": 17,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Plomberie",
                                "Électricité",
                                "Maçonnerie",
                                "Carrelage",
                                "Peinture",
                                "Plâtrerie/Plaquiste",
                                "Isolation",
                                "Menuiserie",
                                "Parquet",
                                "Charpente",
                                "Couverture/Toiture",
                                "Chauffage/Climatisation",
                                "Serrurerie",
                                "Paysagiste",
                                "Pisciniste",
                                "Décoration d'intérieur",
                                "Nettoyage"
                              ]
                            }
                          }
                        },
                        "required": [
                          "artisan",
                          "coverage_basis",
                          "metiers_couverts",
                          "metiers_a_confirmer"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "alternatives_par_metier": {
                      "maxItems": 17,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "metier": {
                            "type": "string",
                            "enum": [
                              "Plomberie",
                              "Électricité",
                              "Maçonnerie",
                              "Carrelage",
                              "Peinture",
                              "Plâtrerie/Plaquiste",
                              "Isolation",
                              "Menuiserie",
                              "Parquet",
                              "Charpente",
                              "Couverture/Toiture",
                              "Chauffage/Climatisation",
                              "Serrurerie",
                              "Paysagiste",
                              "Pisciniste",
                              "Décoration d'intérieur",
                              "Nettoyage"
                            ]
                          },
                          "artisan": {
                            "type": "object",
                            "properties": {
                              "artisan": {
                                "type": "object",
                                "properties": {
                                  "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)$"
                                  },
                                  "nom": {
                                    "type": "string"
                                  },
                                  "ville": {
                                    "type": "string"
                                  },
                                  "metiers": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "note": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "nb_avis": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  "distance_km": {
                                    "anyOf": [
                                      {
                                        "type": "number",
                                        "minimum": 0
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "avatar_url": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "nb_photos": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  "verifie": {
                                    "type": "boolean"
                                  },
                                  "medaille": {
                                    "type": "string",
                                    "enum": [
                                      "none",
                                      "bronze",
                                      "silver",
                                      "gold"
                                    ]
                                  },
                                  "profile_url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "contact_url": {
                                    "type": "string",
                                    "format": "uri"
                                  }
                                },
                                "required": [
                                  "artisan_id",
                                  "nom",
                                  "ville",
                                  "metiers",
                                  "note",
                                  "nb_avis",
                                  "distance_km",
                                  "avatar_url",
                                  "nb_photos",
                                  "verifie",
                                  "medaille",
                                  "profile_url",
                                  "contact_url"
                                ],
                                "additionalProperties": false
                              },
                              "coverage_basis": {
                                "type": "string",
                                "enum": [
                                  "declared",
                                  "renovation_generale"
                                ]
                              },
                              "metiers_couverts": {
                                "minItems": 1,
                                "maxItems": 17,
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "Plomberie",
                                    "Électricité",
                                    "Maçonnerie",
                                    "Carrelage",
                                    "Peinture",
                                    "Plâtrerie/Plaquiste",
                                    "Isolation",
                                    "Menuiserie",
                                    "Parquet",
                                    "Charpente",
                                    "Couverture/Toiture",
                                    "Chauffage/Climatisation",
                                    "Serrurerie",
                                    "Paysagiste",
                                    "Pisciniste",
                                    "Décoration d'intérieur",
                                    "Nettoyage"
                                  ]
                                }
                              },
                              "metiers_a_confirmer": {
                                "maxItems": 17,
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "Plomberie",
                                    "Électricité",
                                    "Maçonnerie",
                                    "Carrelage",
                                    "Peinture",
                                    "Plâtrerie/Plaquiste",
                                    "Isolation",
                                    "Menuiserie",
                                    "Parquet",
                                    "Charpente",
                                    "Couverture/Toiture",
                                    "Chauffage/Climatisation",
                                    "Serrurerie",
                                    "Paysagiste",
                                    "Pisciniste",
                                    "Décoration d'intérieur",
                                    "Nettoyage"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "artisan",
                              "coverage_basis",
                              "metiers_couverts",
                              "metiers_a_confirmer"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "metier",
                          "artisan"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "metiers_non_couverts": {
                      "maxItems": 17,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "Plomberie",
                          "Électricité",
                          "Maçonnerie",
                          "Carrelage",
                          "Peinture",
                          "Plâtrerie/Plaquiste",
                          "Isolation",
                          "Menuiserie",
                          "Parquet",
                          "Charpente",
                          "Couverture/Toiture",
                          "Chauffage/Climatisation",
                          "Serrurerie",
                          "Paysagiste",
                          "Pisciniste",
                          "Décoration d'intérieur",
                          "Nettoyage"
                        ]
                      }
                    },
                    "message": {
                      "type": "string"
                    },
                    "avertissements": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "widget_previews": {
                      "type": "object",
                      "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",
                            "properties": {
                              "photos": {
                                "maxItems": 3,
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "maxLength": 2048,
                                      "format": "uri"
                                    },
                                    "thumbnail_url": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "maxLength": 2048,
                                          "format": "uri"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "thumbnail_url"
                                  ],
                                  "additionalProperties": false
                                }
                              }
                            },
                            "required": [
                              "photos"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "external_previews": {
                          "maxItems": 5,
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "place_id": {
                                "type": "string",
                                "pattern": "^[A-Za-z0-9_-]{3,512}$"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "minLength": 12,
                                    "maxLength": 180
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "rating": {
                                "anyOf": [
                                  {
                                    "type": "number",
                                    "minimum": 0,
                                    "maximum": 5
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "place_id",
                              "description",
                              "rating"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "artisan_previews",
                        "external_previews"
                      ],
                      "additionalProperties": false,
                      "description": "Données publiques nettoyées pour le rendu du widget. Ne jamais les recopier dans la réponse texte."
                    }
                  },
                  "required": [
                    "kind",
                    "ville",
                    "metiers_demandes",
                    "rayon_km",
                    "coverage",
                    "solutions_completes",
                    "combinaison_recommandee",
                    "alternatives_par_metier",
                    "metiers_non_couverts",
                    "message",
                    "avertissements",
                    "widget_previews"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "search_needs_input"
                    },
                    "required_input": {
                      "type": "string",
                      "const": "city_disambiguation"
                    },
                    "metiers_recus": {
                      "minItems": 2,
                      "maxItems": 17,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "Plomberie",
                          "Électricité",
                          "Maçonnerie",
                          "Carrelage",
                          "Peinture",
                          "Plâtrerie/Plaquiste",
                          "Isolation",
                          "Menuiserie",
                          "Parquet",
                          "Charpente",
                          "Couverture/Toiture",
                          "Chauffage/Climatisation",
                          "Serrurerie",
                          "Paysagiste",
                          "Pisciniste",
                          "Décoration d'intérieur",
                          "Nettoyage"
                        ]
                      }
                    },
                    "question": {
                      "type": "string"
                    },
                    "reason": {
                      "type": "string",
                      "const": "ambiguous_city"
                    },
                    "city_candidates": {
                      "maxItems": 15,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ville": {
                            "type": "string"
                          },
                          "code_insee": {
                            "type": "string"
                          },
                          "departement": {
                            "type": "string"
                          },
                          "codes_postaux": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "population": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "ville",
                          "code_insee",
                          "departement",
                          "codes_postaux",
                          "population"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "kind",
                    "required_input",
                    "metiers_recus",
                    "question",
                    "reason",
                    "city_candidates"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "search_needs_input"
                    },
                    "required_input": {
                      "type": "string",
                      "const": "metiers_prioritaires"
                    },
                    "question": {
                      "type": "string"
                    },
                    "metiers_recus": {
                      "minItems": 7,
                      "maxItems": 17,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "Plomberie",
                          "Électricité",
                          "Maçonnerie",
                          "Carrelage",
                          "Peinture",
                          "Plâtrerie/Plaquiste",
                          "Isolation",
                          "Menuiserie",
                          "Parquet",
                          "Charpente",
                          "Couverture/Toiture",
                          "Chauffage/Climatisation",
                          "Serrurerie",
                          "Paysagiste",
                          "Pisciniste",
                          "Décoration d'intérieur",
                          "Nettoyage"
                        ]
                      }
                    },
                    "max_selections": {
                      "type": "number",
                      "const": 6
                    }
                  },
                  "required": [
                    "kind",
                    "required_input",
                    "question",
                    "metiers_recus",
                    "max_selections"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "annotations": {
              "readOnlyHint": true,
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false
            }
          },
          {
            "name": "contacter_artisan",
            "title": "Contacter un professionnel via RenooLab",
            "description": "Submit a moderated contact request to one selected RenooLab profile or attributed external listing after explicit user confirmation.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "artisan_id": {
                  "description": "UUID artisan_id exact renvoyé pour un membre RenooLab. Fournir exactement ce champ ou external_place_id, jamais les deux.",
                  "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)$"
                },
                "external_place_id": {
                  "description": "Place ID exact renvoyé pour une fiche Google Maps. Fournir exactement ce champ ou artisan_id, jamais les deux.",
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_-]{3,512}$"
                },
                "nom": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 80,
                  "description": "Nom du demandeur."
                },
                "email": {
                  "type": "string",
                  "maxLength": 254,
                  "format": "email",
                  "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                  "description": "E-mail du demandeur."
                },
                "telephone": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 32,
                  "description": "Mobile français 06/07 du demandeur, obligatoire pour le rappel."
                },
                "message": {
                  "type": "string",
                  "minLength": 5,
                  "maxLength": 2000,
                  "description": "Description de la demande ou des travaux."
                }
              },
              "required": [
                "nom",
                "email",
                "telephone",
                "message"
              ],
              "$schema": "http://json-schema.org/draft-07/schema#",
              "oneOf": [
                {
                  "required": [
                    "artisan_id"
                  ],
                  "not": {
                    "required": [
                      "external_place_id"
                    ]
                  }
                },
                {
                  "required": [
                    "external_place_id"
                  ],
                  "not": {
                    "required": [
                      "artisan_id"
                    ]
                  }
                }
              ]
            },
            "outputSchema": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "contact_pending"
                },
                "titre": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              },
              "required": [
                "kind",
                "titre",
                "message"
              ],
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false
            },
            "annotations": {
              "readOnlyHint": false,
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": false
            }
          },
          {
            "name": "creer_profil_artisan",
            "title": "Inscrire un artisan ou une entreprise du bâtiment",
            "description": "Create an inactive free tradesperson profile after explicit professional consent; activation remains with the professional.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "nom_entreprise": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 120,
                  "description": "Nom réel de l’entreprise artisanale."
                },
                "siret": {
                  "description": "SIRET optionnel de 14 chiffres ; s’il est fourni, il est vérifié au registre SIRENE.",
                  "type": "string",
                  "pattern": "^\\d{14}$"
                },
                "metiers": {
                  "minItems": 1,
                  "maxItems": 18,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "Rénovation générale",
                      "Plomberie",
                      "Électricité",
                      "Maçonnerie",
                      "Carrelage",
                      "Peinture",
                      "Plâtrerie/Plaquiste",
                      "Isolation",
                      "Menuiserie",
                      "Parquet",
                      "Charpente",
                      "Couverture/Toiture",
                      "Chauffage/Climatisation",
                      "Serrurerie",
                      "Paysagiste",
                      "Pisciniste",
                      "Décoration d'intérieur",
                      "Nettoyage"
                    ]
                  },
                  "description": "Métiers exercés parmi les 18 métiers publics. Fournisseur est app-only."
                },
                "ville": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 100,
                  "description": "Commune française d’implantation."
                },
                "email": {
                  "type": "string",
                  "maxLength": 254,
                  "format": "email",
                  "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                  "description": "E-mail réel de l’artisan, qui recevra le lien d’activation."
                },
                "telephone": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 32,
                  "description": "Mobile français 06/07 de l’artisan."
                },
                "bio": {
                  "description": "Courte présentation de l’activité.",
                  "type": "string",
                  "maxLength": 1000
                }
              },
              "required": [
                "nom_entreprise",
                "metiers",
                "ville",
                "email",
                "telephone"
              ],
              "$schema": "http://json-schema.org/draft-07/schema#"
            },
            "outputSchema": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "signup_created"
                },
                "titre": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                },
                "profil": {
                  "type": "object",
                  "properties": {
                    "nom": {
                      "type": "string"
                    },
                    "ville": {
                      "type": "string"
                    },
                    "metiers": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "nom",
                    "ville",
                    "metiers"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "kind",
                "titre",
                "message",
                "profil"
              ],
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false
            },
            "annotations": {
              "readOnlyHint": false,
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": true
            }
          }
        ]
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-chiffrer-piloter-rentabilite",
      "displayName": "Chiffrer et piloter la rentabilité artisanale",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-chiffrer-piloter-rentabilite.tar.gz",
      "description": "Skill RenooLab pour calculer les coûts, prix, marges, devis, acomptes, factures, impayés et la trésorerie d’une entreprise artisanale du bâtiment.",
      "capabilities": [
        "cost-estimation",
        "pricing",
        "margin-management",
        "invoicing",
        "cash-flow"
      ],
      "tags": [
        "agent-skill",
        "building-trades",
        "business-finance",
        "france",
        "french"
      ],
      "representativeQueries": [
        "combien dois-je facturer ce chantier pour garder une marge correcte",
        "aide-moi à relancer une facture impayée d’un client",
        "calcule mon taux horaire et le prix de ce devis"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-chiffrer-piloter-rentabilite",
        "digest": "sha256:590258ab56d371fdac7c0b49f5238431cb35c10e45c711565418cec3bf28e974",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-creer-profil-artisan",
      "displayName": "Créer un profil artisan RenooLab",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-creer-profil-artisan.tar.gz",
      "description": "Skill RenooLab pour préparer, vérifier et créer avec l’accord du professionnel un profil artisan gratuit, inactif jusqu’à son activation par e-mail.",
      "capabilities": [
        "artisan-profile-preparation",
        "artisan-signup",
        "business-verification"
      ],
      "tags": [
        "agent-skill",
        "artisan-signup",
        "local-business",
        "france",
        "french"
      ],
      "representativeQueries": [
        "je suis plombier et je veux créer gratuitement mon profil RenooLab",
        "aide-moi à préparer une bonne présentation pour ma fiche artisan",
        "inscris mon entreprise artisanale sur RenooLab avec mon accord"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-creer-profil-artisan",
        "digest": "sha256:984dfde207432cfe21c42e82eefdd04c828d6a57e93901384cbb7ec5a21fd8d7",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-developper-clientele-visibilite-btp",
      "displayName": "Développer la clientèle et la visibilité BTP",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-developper-clientele-visibilite-btp.tar.gz",
      "description": "Skill RenooLab pour améliorer le positionnement, la prospection, la visibilité locale, le suivi commercial et la fidélisation d’une entreprise ou d’un fournisseur BTP.",
      "capabilities": [
        "customer-acquisition",
        "local-visibility",
        "sales-follow-up",
        "btp-crm"
      ],
      "tags": [
        "agent-skill",
        "building-trades",
        "marketing",
        "sales",
        "france",
        "french"
      ],
      "representativeQueries": [
        "comment trouver plus de clients locaux sans payer de commission",
        "aide-moi à relancer un devis envoyé mais pas encore signé",
        "organise mes prospects artisans entre WhatsApp e-mail et papier"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-developper-clientele-visibilite-btp",
        "digest": "sha256:4eaf727ae0f9b1928b71ff9d068d1be9143aa6c00b0fd41284c9b7a314eccfc0",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-diagnostiquer-securiser-logement",
      "displayName": "Diagnostiquer et sécuriser un logement",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-diagnostiquer-securiser-logement.tar.gz",
      "description": "Skill RenooLab pour trier les dangers, formuler des hypothèses prudentes, organiser les contrôles et identifier le bon métier face à une panne ou un sinistre.",
      "capabilities": [
        "home-safety-triage",
        "repair-diagnosis",
        "trade-routing",
        "damage-response"
      ],
      "tags": [
        "agent-skill",
        "home-safety",
        "repair",
        "renovation",
        "france",
        "french"
      ],
      "representativeQueries": [
        "j’ai une fuite sous la baignoire que dois-je sécuriser en premier",
        "une fissure vient d’apparaître sur mon mur est-ce dangereux",
        "mon tableau électrique saute quel professionnel dois-je appeler"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-diagnostiquer-securiser-logement",
        "digest": "sha256:67fb60ae7112fc5e3a83722070698e9bc425d84f72829323e76efe9a91b403c2",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-imaginer-arbitrer-renovation",
      "displayName": "Imaginer et arbitrer une rénovation",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-imaginer-arbitrer-renovation.tar.gz",
      "description": "Skill RenooLab pour transformer une envie, une photo ou un inconfort en scénarios de rénovation comparés avec contraintes, lots et métiers probables.",
      "capabilities": [
        "renovation-ideation",
        "scenario-comparison",
        "trade-planning"
      ],
      "tags": [
        "agent-skill",
        "home-improvement",
        "renovation",
        "design",
        "france",
        "french"
      ],
      "representativeQueries": [
        "propose trois scénarios pour moderniser ma petite salle de bain",
        "comment améliorer le confort thermique de cette maison",
        "j’hésite entre rénover ma terrasse ou créer un coin piscine"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-imaginer-arbitrer-renovation",
        "digest": "sha256:3bb442448238d6d7c6bc4c6013c5c4564a419b344ffb8315f8b6ddb5936ebfe4",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-lancer-entreprise-artisanale",
      "displayName": "Lancer une entreprise artisanale",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-lancer-entreprise-artisanale.tar.gz",
      "description": "Skill RenooLab pour transformer une reconversion ou un projet artisanal en feuille de route vérifiable : offre, statut, assurances, prix, trésorerie et premiers clients.",
      "capabilities": [
        "artisan-business-creation",
        "legal-readiness",
        "insurance-planning",
        "go-to-market"
      ],
      "tags": [
        "agent-skill",
        "business-creation",
        "building-trades",
        "france",
        "french"
      ],
      "representativeQueries": [
        "je veux me mettre à mon compte comme électricien par où commencer",
        "quel statut et quelles assurances prévoir pour lancer mon activité artisanale",
        "construis une feuille de route pour trouver mes premiers clients BTP"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-lancer-entreprise-artisanale",
        "digest": "sha256:4653a7ac298d11f82b12b96729c73e45fd4c2eb7ded8425d05cc6729ee48c19f",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-organiser-chantier-equipe-btp",
      "displayName": "Organiser un chantier et une équipe BTP",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-organiser-chantier-equipe-btp.tar.gz",
      "description": "Skill RenooLab pour structurer les rôles, compétences, coûts, recrutements, sous-traitants, approvisionnements et contrôles qualité d’une entreprise du bâtiment.",
      "capabilities": [
        "btp-workforce-planning",
        "subcontracting",
        "site-operations",
        "quality-control"
      ],
      "tags": [
        "agent-skill",
        "construction",
        "workforce",
        "operations",
        "france",
        "french"
      ],
      "representativeQueries": [
        "dois-je embaucher un apprenti ou prendre un sous-traitant",
        "prépare une fiche de poste pour un compagnon polyvalent",
        "organise les contrôles qualité et les approvisionnements de ce chantier"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-organiser-chantier-equipe-btp",
        "digest": "sha256:d772f976df4c82f9c8cd81704fecd4c8a427965b1b0568f9c30d1f0037e1103d",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-piloter-receptionner-travaux",
      "displayName": "Piloter et réceptionner des travaux",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-piloter-receptionner-travaux.tar.gz",
      "description": "Skill RenooLab pour coordonner un chantier confié, suivre décisions, délais, paiements et preuves, puis préparer la réception et les réserves.",
      "capabilities": [
        "construction-project-management",
        "worksite-monitoring",
        "handover",
        "defect-reserves"
      ],
      "tags": [
        "agent-skill",
        "construction",
        "project-management",
        "handover",
        "france",
        "french"
      ],
      "representativeQueries": [
        "mon chantier est en retard comment reprendre le contrôle",
        "prépare ma visite de réception et la liste des réserves",
        "l’entreprise ne répond plus quelles preuves dois-je rassembler"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-piloter-receptionner-travaux",
        "digest": "sha256:c7aec2b35607fdecf51047d5edf86f93a8abf159db6000ac2cfb2c1783d7d5a3",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-planifier-budgeter-travaux",
      "displayName": "Planifier et budgéter des travaux",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-planifier-budgeter-travaux.tar.gz",
      "description": "Skill RenooLab pour convertir un achat ou un projet de rénovation en risques, cahier des charges, lots, ordre de travaux, budget, aides et prochaines étapes.",
      "capabilities": [
        "renovation-planning",
        "budget-estimation",
        "work-sequencing",
        "permit-and-aid-checklist"
      ],
      "tags": [
        "agent-skill",
        "home-improvement",
        "budget",
        "planning",
        "france",
        "french"
      ],
      "representativeQueries": [
        "combien prévoir pour rénover cette maison et dans quel ordre",
        "analyse les travaux à anticiper avant d’acheter cet appartement",
        "quelles aides et autorisations vérifier pour mon projet de rénovation"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-planifier-budgeter-travaux",
        "digest": "sha256:9793dee4545d65b4ae76ac0a2b4f2ed6fbd14b21451bca4c93ecb5a95447d19d",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:skill:renoolab-trouver-choisir-artisans",
      "displayName": "Trouver et choisir des artisans",
      "type": "application/agent-skills+gzip",
      "url": "https://renoolab.fr/.well-known/agent-skills/packages/v0.5.5/renoolab-trouver-choisir-artisans.tar.gz",
      "description": "Skill RenooLab pour identifier le bon métier, rechercher réellement des professionnels via le MCP et comparer profils, entreprises, offres ou devis sans inventer de résultat.",
      "capabilities": [
        "trade-identification",
        "tradespeople-search",
        "provider-comparison",
        "quote-comparison"
      ],
      "tags": [
        "agent-skill",
        "local-services",
        "tradespeople",
        "renovation",
        "france",
        "french"
      ],
      "representativeQueries": [
        "trouve-moi un plombier fiable autour de Marseille",
        "j’ai une infiltration de toiture quel artisan chercher à Nantes",
        "compare ces deux devis et les profils des entreprises",
        "cherche une équipe pour rénover ma salle de bain à Lyon",
        "je veux choisir un artisan sans passer par une plateforme à commission"
      ],
      "version": "0.5.5",
      "metadata": {
        "license": "Apache-2.0",
        "skillName": "renoolab-trouver-choisir-artisans",
        "digest": "sha256:69bc5e3c576f25ad71502bee5cef1c8e21e72399aac1d2e0feaebda52f22f1aa",
        "packageFormat": "tar+gzip",
        "standard": "agentskills.io",
        "language": "fr-FR",
        "sourceRepository": "https://github.com/mehdimicra/renoolab-agent-skills"
      }
    },
    {
      "identifier": "urn:air:renoolab.fr:a2a:find-artisans-france",
      "displayName": "RenooLab — trouver des artisans en France (A2A)",
      "type": "application/a2a-agent-card+json",
      "description": "Agent A2A officiel RenooLab en lecture seule pour trouver en France des artisans du bâtiment par métier et ville. Il déduit un métier unique depuis un problème de bâtiment pris en charge ou traite un chantier multi-métiers déjà confirmé, sans envoi automatique de contact.",
      "capabilities": [
        "find_artisans_france"
      ],
      "tags": [
        "a2a",
        "artisans",
        "renovation",
        "building-trades",
        "problem-to-trade",
        "france",
        "french",
        "multi-trade"
      ],
      "representativeQueries": [
        "trouve-moi un plombier à Lyon",
        "Une fuite sous mon évier à Marseille",
        "My electrical panel keeps tripping near Aubagne",
        "My roof is leaking around Toulon",
        "je cherche un plombier et un électricien autour de Toulon"
      ],
      "version": "1.0.2",
      "url": "https://a2a.renoolab.fr/.well-known/agent-card.json",
      "metadata": {
        "protocol": "A2A",
        "protocolVersion": "1.0",
        "agentCardUrl": "https://a2a.renoolab.fr/.well-known/agent-card.json",
        "executionUrl": "https://a2a.renoolab.fr/a2a",
        "language": "fr-FR",
        "geographicCoverage": "France"
      }
    }
  ]
}
