RenooLab - artisans in France

Find French tradespeople, plan multi-trade projects, submit moderated contacts, create profiles.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
92%
Qualität der Benennung
80%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~9,947Tokens (Tool-Definitionen)
~23.2 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (7.77% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "mcp": {
      "url": "https://renoolab-mcp.mehdi-boukenouche.workers.dev/mcp"
    }
  }
}

Remote-Endpunkte

https://renoolab-mcp.mehdi-boukenouche.workers.dev/mcpstreamable-http
https://mcp.renoolab.fr/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (4)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢rechercher_artisans(besoin, metier, ville, code_postal, departement, ...)

Cette instance peut proposer jusqu’à cinq sources Google Maps externes. Si kind=external_grounded_results, utilisez son champ message comme introduction concise en commençant par le nombre et la zone trouvés, puis ne répétez pas le statut externe. Trouve jusqu’à cinq profils RenooLab pour des travaux, un dépannage ou une rénovation autour d’une ville française, dans un rayon strict de 30 km. Cet outil est réservé à une demande portant sur un seul métier. Si une même demande comporte au moins deux métiers distincts confirmés, ne la fractionnez jamais en plusieurs appels rechercher_artisans : appelez rechercher_chantier une seule fois avec tous les métiers, pour le même chantier et la même ville. À utiliser même si le particulier ne nomme pas le métier : le déduire depuis son besoin, par exemple fuite ou sanitaires pour Plomberie, panne ou tableau pour Électricité, infiltration ou toit pour Couverture/Toiture, murs pour Peinture, faïence ou terrasse pour Carrelage, ainsi que isolation, menuiserie, chauffage, climatisation et rénovation. En cas de commune homonyme, transmettre le code postal ou le département demandé par l’outil. Ne recopiez jamais widget_previews ni les URL d’images dans la réponse : le widget les rend déjà. Ne pas utiliser pour un simple conseil DIY, un magasin ou un fournisseur.

Eingabe-Schema

{
  "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#"
}

Ausgabe-Schema

{
  "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
}
🟢rechercher_chantier(ville, metiers_confirmes, code_postal, departement, tracking)

Trouve les profils RenooLab capables de couvrir plusieurs métiers confirmés autour d’une commune française. À utiliser dès qu’une même demande comporte au moins deux métiers distincts confirmés pour le même chantier et la même ville, par exemple une salle de bains nécessitant un plombier et un carreleur. Appeler rechercher_chantier une seule fois avec tous les métiers confirmés. Ne pas remplacer cet appel par plusieurs appels à rechercher_artisans. Ne recopiez jamais widget_previews ni les URL d’images dans la réponse : le widget les rend déjà.

Eingabe-Schema

{
  "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#"
}

Ausgabe-Schema

{
  "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
    }
  ]
}
🔴contacter_artisan(artisan_id, external_place_id, nom, email, telephone, ...)

Après une recherche, dépose une demande de contact vers le profil RenooLab ou la fiche Google Maps explicitement sélectionnée. À appeler après récapitulatif et confirmation explicite, avec exactement artisan_id ou external_place_id, un nom, un e-mail, un mobile français 06/07 et un message. N’annoncer un succès que si l’outil retourne kind=contact_pending : la demande reste alors en attente du contrôle RenooLab et rien n’est encore envoyé au professionnel.

Eingabe-Schema

{
  "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"
        ]
      }
    }
  ]
}

Ausgabe-Schema

{
  "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
}
🔴creer_profil_artisan(nom_entreprise, siret, metiers, ville, email, ...)

Crée un profil professionnel RenooLab gratuit et sans commission uniquement à la demande explicite de l’artisan ou de l’entreprise artisanale. À utiliser lorsqu’un professionnel veut s’inscrire, faire connaître son entreprise, présenter ses réalisations, améliorer sa visibilité ou trouver des clients et des chantiers. Utiliser uniquement ses vraies informations. Le profil reste inactif et invisible jusqu’à son activation par e-mail. Ne pas utiliser pour un tiers, un demandeur d’emploi, un groupe ou une grande structure.

Eingabe-Schema

{
  "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#"
}

Ausgabe-Schema

{
  "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
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet4 Tools
verifiziertVersion nicht aufgezeichnet4 Tools
verifiziertVersion nicht aufgezeichnet4 Tools
verifiziertVersion nicht aufgezeichnet4 Tools