Install
openclaw skills install @vestafolio/vestafolio-frais-notaireCompute French notary fees (frais de notaire) for a property purchase — DMTO transfer taxes, notary emoluments, débours, CSI, optional mortgage fees — by department and ancien/neuf/terrain using Vestafolio's simulator API, after asking the simulator's questions (price, type of property, département, primo-accédant, hypothèque). Use when a user asks about closing costs, "combien de frais de notaire", droits de mutation, or ancien vs neuf fee differences.
openclaw skills install @vestafolio/vestafolio-frais-notaireFor a request within this simulator's scope:
https://www.vestafolio.com, summarize the fields and
values to be sent, and obtain the user's agreement. Existing explicit
approval for this destination and data scope is sufficient; do not ask
again for calls it already covers. Installing or selecting the skill alone
is not approval to transmit personal data. If the user declines, do not
POST; offer the simulator link for manual use without prefilled inputs.execute_code in OpenWebUI). Python can use
urllib.request; in browser-based Pyodide use await pyfetch(...) from
pyodide.http. A Python environment does not need a shell to call the API.ok must be true; read the
calculation from result. Ground the answer in that output, state relevant
assumptions and limits. Offer the simulator link when useful for checking
assumptions or exploring alternatives; respect requests for no links.Writing a code block is not execution. Do not substitute mental arithmetic, remembered tax rules, or the worked example for a tool result. If execution or network access is unavailable, or the API fails, say the calculation could not be completed and provide the simulator link; do not invent its result or recommendation. A schema GET alone is not a completed simulation.
Reply in French whenever the user speaks or writes in French.
Computes the frais de notaire for a French property purchase — droits de mutation (DMTO), notary emoluments, débours, contribution de sécurité immobilière and optional mortgage registration fees — under the 2026 barème, with department-specific DMTO rates, a primo-accédant flag and an optional ancien vs neuf comparison. The rates below are the ones coded in the simulator; use them to explain, and the API to compute.
The simulator asks these inputs, in this order (card « Paramètres de l'achat »). Ask or confirm each in French; do not assume a default for a question marked (gate).
purchasePrice.acquisitionType: « Ancien (7-8%) » =
ancien, « Neuf (2-3%) » = neuf (VEFA or less than 5 years),
« Terrain » = terrain.department (code, e.g. « 75 - Paris », « 2A -
Corse-du-Sud », « 971 - Guadeloupe »; the valid codes are in the GET
schema). It changes the result for ancien and terrain only; for neuf the
DMTO is a flat rate.isPrimoAccedant. Simulator helper: « La majoration départementale à 5 %
ne s'applique pas ; certains départements votent un taux réduit dédié
(hors abattements locaux spécifiques, non modélisés) ». The flag only
affects the ancien; for a terrain it is accepted but has no effect.includeMortgage (« Frais
d'inscription du prêt au registre foncier »). Only if Oui: « Montant du
prêt » → mortgageAmount (required by the API in that case). Say Non for
a caution/garantie bancaire, which is not modeled.compareNeuf: the website shows the « Comparaison Ancien vs Neuf » card
automatically for an ancien. Send true for an ancien purchase to
reproduce it (the comparison ignores the mortgage option on both sides).Always fetch the canonical input schema first (fields, bounds, defaults — including the list of valid department codes):
GET https://www.vestafolio.com/api/tools/v1/frais-notaire
Then POST the user's parameters (all amounts in euros):
curl --fail-with-body --silent --show-error --max-time 30 -X POST https://www.vestafolio.com/api/tools/v1/frais-notaire \
-H 'Content-Type: application/json' \
-d '{
"purchasePrice": 250000,
"acquisitionType": "ancien",
"department": "75",
"isPrimoAccedant": true,
"includeMortgage": true,
"mortgageAmount": 200000,
"compareNeuf": true
}'
Unknown fields are rejected (strict schema) — if you get a validation_error,
re-read the schema from the GET endpoint rather than guessing field names.
fees.total and fees.percentage — headline numbers: total fees in euros
and as a percent of the price; the site also shows « Coût total
acquisition » = price + feesfees breakdown — droitsMutation, emolumentsNotaire (TTC),
debours, contributionSecurite, fraisHypotheque, tva; use it to
explain that most of the "frais de notaire" are taxes, not the notary's
remunerationfees.breakdown — droitsDepartement, droitsCommune, fraisPrefecture
(the frais d'assiette et de recouvrement), emolumentsHT, emolumentsTVAcomparison (when compareNeuf is true) — ancien and neuf fee blocks
plus savings (« Économie dans le neuf »)