{"version":1,"tools":[{"name":"start_email_verification","operation_id":"startEmailVerification","description":"Valide l’email sans révéler l’existence d’un compte. Si accepted_by_provider, attendre le lien puis interroger getEmailVerification. Si skipped_by_configuration, aucun email n’est envoyé et status=verified autorise le tarif. Un nouvel envoi exige une nouvelle Idempotency-Key.","input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"channel":{"type":"string","enum":["chatgpt","claude","mistral","google"]}},"required":["email"],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"POST","path":"/api/ucp/v1/email-verifications","path_parameters":[],"query_parameters":[],"body_parameters":["email","channel"],"requires_idempotency_key":true}},{"name":"get_email_verification","operation_id":"getEmailVerification","description":"Vérifie si le lien reçu par email a été validé.","input_schema":{"type":"object","properties":{"verification_id":{"type":"string"}},"required":["verification_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/email-verifications/{verification_id}","path_parameters":["verification_id"],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"list_insurance_products","operation_id":"listInsuranceProducts","description":"","input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/products","path_parameters":[],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"list_covered_jobs","operation_id":"listCoveredJobs","description":"","input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/covered-jobs","path_parameters":[],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"list_coverage_areas","operation_id":"listCoverageAreas","description":"","input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/coverage-areas","path_parameters":[],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"get_wemind_experience","operation_id":"getWemindExperience","description":"Informations officielles : services et expérience Wemind — À appeler avant de répondre sur ce qui distingue Wemind au-delà des garanties : accompagnement humain, communauté, services membres et Prix Juste. Renvoie des faits officiels et leurs conditions, pas des avis indépendants.","input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/wemind-experience","path_parameters":[],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"start_health_offer_recommendation","operation_id":"startHealthOfferRecommendation","description":"Démarre un conseil mutuelle persistant fondé sur les garanties Wemind. Poser exactement la prochaine question renvoyée et ne jamais demander de diagnostic médical.","input_schema":{"type":"object","properties":{"birthdate":{"type":"string","format":"date"},"company_legal_status":{"type":"string","enum":["SASU","SAS","Micro-entreprise","EI","EIRL","EURL","SARL"]},"situation":{"type":"string","enum":["solo","entreprise"],"description":"solo pour un indépendant ou dirigeant seul ; entreprise pour un dirigeant avec des salariés."},"entreprise_coverage_choice":{"type":"string","enum":["dirigeant","equipe"],"description":"Obligatoire si situation vaut entreprise."},"director_status":{"type":"string","enum":["salaried","unpaid"]},"convention_collective":{"type":"string","enum":["SYNTEC","Organismes de formation","Portage salarial","AUTRE","Aucune"]}},"required":["birthdate","company_legal_status","situation"],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"POST","path":"/api/ucp/v1/health-offer-recommendations","path_parameters":[],"query_parameters":[],"body_parameters":["birthdate","company_legal_status","situation","entreprise_coverage_choice","director_status","convention_collective"],"requires_idempotency_key":true}},{"name":"get_health_offer_recommendation","operation_id":"getHealthOfferRecommendation","description":"Relit le conseil conservé, ses besoins et raisons. Distinguer l’offre recommandée du choix du client. Si availability vaut refresh_required, conserver cette restitution historique mais recommencer le conseil avant tout nouveau tarif.","input_schema":{"type":"object","properties":{"recommendation_id":{"type":"string"}},"required":["recommendation_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/health-offer-recommendations/{recommendation_id}","path_parameters":["recommendation_id"],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"answer_health_offer_question","operation_id":"answerHealthOfferQuestion","description":"Enregistre une réponse à la question courante. Quand le statut devient recommended, annoncer explicitement le nom de l’offre avant de proposer le devis.","input_schema":{"type":"object","properties":{"recommendation_id":{"type":"string"},"question_id":{"type":"string"},"option_ids":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string"}}},"required":["recommendation_id","question_id","option_ids"],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"PATCH","path":"/api/ucp/v1/health-offer-recommendations/{recommendation_id}/answers","path_parameters":["recommendation_id"],"query_parameters":[],"body_parameters":["question_id","option_ids"],"requires_idempotency_key":false}},{"name":"list_insurance_quotes","operation_id":"listInsuranceQuotes","description":"Retrouve les simulations liées à l’email validé pour reprendre un parcours interrompu.","input_schema":{"type":"object","properties":{"email_verification_id":{"type":"string"}},"required":["email_verification_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/quotes","path_parameters":[],"query_parameters":["email_verification_id"],"body_parameters":[],"requires_idempotency_key":false}},{"name":"create_insurance_quote","operation_id":"createInsuranceQuote","description":"Tarifie sans connexion. Avec health, transmettre health_offer_recommendation_id du conseil terminé. Sans email_verification_id, démarre la validation ; retenter après verified, sauf validation automatique. Restituer garanties, cotisation totale puis contexte Wemind utile.","input_schema":{"type":"object","properties":{"products":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["health","rcp"]}},"email":{"type":"string","format":"email"},"email_verification_id":{"type":"string","description":"Optionnel au premier appel ; requis pour obtenir le tarif après validation."},"channel":{"type":"string","enum":["chatgpt","claude","mistral","google"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"phone_number":{"type":"string","description":"Numéro nécessaire pour poursuivre jusqu’à la signature sur Wemind."},"birthdate":{"type":"string","format":"date"},"country_code":{"type":"string","enum":["FR"]},"zipcode":{"type":"string","pattern":"^\\d{5}$"},"situation":{"type":"string","enum":["solo","entreprise"],"description":"solo pour un indépendant ou dirigeant seul ; entreprise pour un dirigeant avec des salariés."},"company_legal_status":{"type":"string","enum":["SASU","SAS","Micro-entreprise","EI","EIRL","EURL","SARL"]},"director_status":{"type":"string","enum":["salaried","unpaid"],"description":"Obligatoire pour une SAS ou SASU."},"convention_collective":{"type":"string","enum":["SYNTEC","Organismes de formation","Portage salarial","AUTRE","Aucune"]},"entreprise_convention_autre_nom":{"type":"string"},"entreprise_coverage_choice":{"type":"string","enum":["dirigeant","equipe"],"description":"Obligatoire si situation vaut entreprise."},"employees_count":{"type":"integer","minimum":1},"salaries_average_age":{"type":"integer","minimum":18,"maximum":70},"company_zipcode":{"type":"string","pattern":"^\\d{5}$"},"birth_country":{"type":"string"},"marital_status":{"type":"string","enum":["Célibataire","Marié(e)","Pacsé(e)","Concubinage","Divorcé(e)","Veuf(ve)"]},"has_partner":{"type":"boolean"},"job_id":{"type":"integer"},"annual_turnover":{"type":"integer","minimum":0},"annual_gross_income":{"type":"integer","minimum":0},"cover_partner":{"type":"boolean"},"partner_birthdate":{"type":"string","format":"date"},"children_count":{"type":"integer","minimum":0,"maximum":10},"children_birthdates":{"type":"array","maxItems":10,"items":{"type":"string","format":"date"}},"rcp_no_claim":{"type":"boolean"},"rcp_no_financial_results":{"type":"boolean"},"rcp_no_limitation_clause":{"type":"boolean"},"rcp_correct_infos":{"type":"boolean"},"rcp_host_data_for_clients":{"type":"boolean"},"rcp_backup_clause":{"type":"boolean"},"health_offer_recommendation_id":{"type":"string","description":"Obligatoire si products contient health. Identifiant du conseil terminé pour conserver les besoins et tarifer l’offre annoncée."}},"required":["products","email","first_name","last_name","phone_number","birthdate","country_code","zipcode","situation","company_legal_status"],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"POST","path":"/api/ucp/v1/quotes","path_parameters":[],"query_parameters":[],"body_parameters":["products","email","email_verification_id","channel","first_name","last_name","phone_number","birthdate","country_code","zipcode","situation","company_legal_status","director_status","convention_collective","entreprise_convention_autre_nom","entreprise_coverage_choice","employees_count","salaries_average_age","company_zipcode","birth_country","marital_status","has_partner","job_id","annual_turnover","annual_gross_income","cover_partner","partner_birthdate","children_count","children_birthdates","rcp_no_claim","rcp_no_financial_results","rcp_no_limitation_clause","rcp_correct_infos","rcp_host_data_for_clients","rcp_backup_clause","health_offer_recommendation_id"],"requires_idempotency_key":true}},{"name":"create_health_quote_comparison","operation_id":"createHealthQuoteComparison","description":"Compare trois offres après un conseil terminé : health_offer_recommendation_id obligatoire. Sans email_verification_id, démarre la validation ; retenter après verified, sauf validation automatique. Restituer garanties, cotisations totales puis contexte Wemind utile.","input_schema":{"type":"object","properties":{"products":{"type":"array","minItems":1,"items":{"type":"string","enum":["health","rcp"]}},"email":{"type":"string","format":"email"},"email_verification_id":{"type":"string","description":"Optionnel au premier appel ; requis pour obtenir les tarifs après validation."},"channel":{"type":"string","enum":["chatgpt","claude","mistral","google"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"phone_number":{"type":"string","description":"Numéro nécessaire pour poursuivre jusqu’à la signature sur Wemind."},"birthdate":{"type":"string","format":"date"},"country_code":{"type":"string","enum":["FR"]},"zipcode":{"type":"string","pattern":"^\\d{5}$"},"situation":{"type":"string","enum":["solo","entreprise"],"description":"solo pour un indépendant ou dirigeant seul ; entreprise pour un dirigeant avec des salariés."},"company_legal_status":{"type":"string","enum":["SASU","SAS","Micro-entreprise","EI","EIRL","EURL","SARL"]},"director_status":{"type":"string","enum":["salaried","unpaid"]},"convention_collective":{"type":"string","enum":["SYNTEC","Organismes de formation","Portage salarial","AUTRE","Aucune"]},"entreprise_convention_autre_nom":{"type":"string"},"entreprise_coverage_choice":{"type":"string","enum":["dirigeant","equipe"],"description":"Obligatoire si situation vaut entreprise."},"employees_count":{"type":"integer","minimum":1},"salaries_average_age":{"type":"integer","minimum":18,"maximum":70},"company_zipcode":{"type":"string","pattern":"^\\d{5}$"},"birth_country":{"type":"string"},"marital_status":{"type":"string","enum":["Célibataire","Marié(e)","Pacsé(e)","Concubinage","Divorcé(e)","Veuf(ve)"]},"has_partner":{"type":"boolean"},"job_id":{"type":"integer"},"annual_turnover":{"type":"integer","minimum":0},"annual_gross_income":{"type":"integer","minimum":0},"cover_partner":{"type":"boolean"},"partner_birthdate":{"type":"string","format":"date"},"children_count":{"type":"integer","minimum":0,"maximum":10},"children_birthdates":{"type":"array","maxItems":10,"items":{"type":"string","format":"date"}},"rcp_no_claim":{"type":"boolean"},"rcp_no_financial_results":{"type":"boolean"},"rcp_no_limitation_clause":{"type":"boolean"},"rcp_correct_infos":{"type":"boolean"},"rcp_host_data_for_clients":{"type":"boolean"},"rcp_backup_clause":{"type":"boolean"},"health_offer_recommendation_id":{"type":"string","description":"Identifiant obligatoire du conseil mutuelle terminé pour conserver les besoins exprimés."}},"required":["products","email","first_name","last_name","phone_number","birthdate","country_code","zipcode","situation","company_legal_status","health_offer_recommendation_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"POST","path":"/api/ucp/v1/quote-comparisons","path_parameters":[],"query_parameters":[],"body_parameters":["products","email","email_verification_id","channel","first_name","last_name","phone_number","birthdate","country_code","zipcode","situation","company_legal_status","director_status","convention_collective","entreprise_convention_autre_nom","entreprise_coverage_choice","employees_count","salaries_average_age","company_zipcode","birth_country","marital_status","has_partner","job_id","annual_turnover","annual_gross_income","cover_partner","partner_birthdate","children_count","children_birthdates","rcp_no_claim","rcp_no_financial_results","rcp_no_limitation_clause","rcp_correct_infos","rcp_host_data_for_clients","rcp_backup_clause","health_offer_recommendation_id"],"requires_idempotency_key":true}},{"name":"get_health_quote_comparison","operation_id":"getHealthQuoteComparison","description":"","input_schema":{"type":"object","properties":{"comparison_id":{"type":"string"}},"required":["comparison_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/quote-comparisons/{comparison_id}","path_parameters":["comparison_id"],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"get_insurance_quote","operation_id":"getInsuranceQuote","description":"Relit la simulation. Si un parcours est déjà préparé, links contient resume_checkout vers la prochaine étape Wemind.","input_schema":{"type":"object","properties":{"quote_id":{"type":"string"}},"required":["quote_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/quotes/{quote_id}","path_parameters":["quote_id"],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}},{"name":"update_insurance_quote","operation_id":"updateInsuranceQuote","description":"","input_schema":{"type":"object","properties":{"quote_id":{"type":"string"},"products":{"type":"array","items":{"type":"string","enum":["health","rcp"]}},"email":{"type":"string","format":"email"},"email_verification_id":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"phone_number":{"type":"string"},"birthdate":{"type":"string","format":"date"},"country_code":{"type":"string","enum":["FR"]},"zipcode":{"type":"string","pattern":"^\\d{5}$"},"situation":{"type":"string","enum":["solo","entreprise"]},"company_legal_status":{"type":"string"},"director_status":{"type":"string","enum":["salaried","unpaid"]},"convention_collective":{"type":"string","enum":["SYNTEC","Organismes de formation","Portage salarial","AUTRE","Aucune"]},"entreprise_convention_autre_nom":{"type":"string"},"entreprise_coverage_choice":{"type":"string","enum":["dirigeant","equipe"]},"employees_count":{"type":"integer","minimum":1},"salaries_average_age":{"type":"integer","minimum":18,"maximum":70},"company_zipcode":{"type":"string","pattern":"^\\d{5}$"},"birth_country":{"type":"string"},"marital_status":{"type":"string","enum":["Célibataire","Marié(e)","Pacsé(e)","Concubinage","Divorcé(e)","Veuf(ve)"]},"has_partner":{"type":"boolean"},"annual_turnover":{"type":"integer","minimum":0},"annual_gross_income":{"type":"integer","minimum":0},"cover_partner":{"type":"boolean"},"partner_birthdate":{"type":"string","format":"date"},"children_count":{"type":"integer","minimum":0,"maximum":10},"children_birthdates":{"type":"array","items":{"type":"string","format":"date"}},"health_offer_recommendation_id":{"type":"string","description":"Obligatoire avec health ; identifiant du conseil mutuelle terminé."}},"required":["quote_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"PATCH","path":"/api/ucp/v1/quotes/{quote_id}","path_parameters":["quote_id"],"query_parameters":[],"body_parameters":["products","email","email_verification_id","first_name","last_name","phone_number","birthdate","country_code","zipcode","situation","company_legal_status","director_status","convention_collective","entreprise_convention_autre_nom","entreprise_coverage_choice","employees_count","salaries_average_age","company_zipcode","birth_country","marital_status","has_partner","annual_turnover","annual_gross_income","cover_partner","partner_birthdate","children_count","children_birthdates","health_offer_recommendation_id"],"requires_idempotency_key":true}},{"name":"explain_health_coverage","operation_id":"explainHealthCoverage","description":"Relit le référentiel Wemind attaché au devis. Reprendre exactement la ligne, la valeur et les conditions ; ne pas promettre de montant versé. Si handover existe, redonner ce lien sans recréer le checkout.","input_schema":{"type":"object","properties":{"quote_id":{"type":"string"},"care":{"type":"string","minLength":2,"maxLength":500}},"required":["quote_id","care"],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"POST","path":"/api/ucp/v1/quotes/{quote_id}/coverage-explanations","path_parameters":["quote_id"],"query_parameters":[],"body_parameters":["care"],"requires_idempotency_key":false}},{"name":"create_insurance_checkout","operation_id":"createInsuranceCheckout","description":"Dès que l’utilisateur choisit une offre, créez le transfert sans seconde confirmation. Envoyez quote_id ou quote_comparison_id avec offer_name. Ne relancez pas la comparaison. Donnez immédiatement handover_url. Un nouvel appel pour le même devis reprend le checkout actif.","input_schema":{"type":"object","properties":{"quote_id":{"type":"string","description":"Identifiant du devis choisi lorsqu’il est encore disponible."},"quote_comparison_id":{"type":"string","description":"Identifiant de la comparaison persistée."},"offer_name":{"type":"string","description":"Nom exact choisi, par exemple Niveau 1."}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":false},"request":{"method":"POST","path":"/api/ucp/v1/checkouts","path_parameters":[],"query_parameters":[],"body_parameters":["quote_id","quote_comparison_id","offer_name"],"requires_idempotency_key":true}},{"name":"get_insurance_checkout","operation_id":"getInsuranceCheckout","description":"Relit l’adhésion et renvoie le prochain lien sans recommencer la simulation. Sa date limite figure dans next_action.expires_at et ne dépasse pas la validité du devis ou du checkout.","input_schema":{"type":"object","properties":{"checkout_id":{"type":"string"}},"required":["checkout_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true},"request":{"method":"GET","path":"/api/ucp/v1/checkouts/{checkout_id}","path_parameters":["checkout_id"],"query_parameters":[],"body_parameters":[],"requires_idempotency_key":false}}]}