Marcel Retraite MCP
Serveur MCP officiel de Marcel IA fournissant 45 outils déterministes pour le calcul fiscal et retraite français, incluant estimation de pension, simulation d'assurance-vie, PEA, PER, IFI, Dutreil et transmission, avec traçabilité complète des règles appliquées.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://marcel-retraite.fr/mcpWhat you can do with it
- Estimer la pension brute et nette par caisse de retraite
- Simuler l'impact fiscal de rachats d'assurance-vie
- Calculer l'assiette et le barème de l'IFI
- Comparer les droits de donation et de succession
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- marcel 1.4.0
- MCP protocol
- 2025-06-18
- Tools
- 45 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
45 advertised
marcel_estimate_pension — Estimer une pension de retraite
Estime la pension de retraite. Entrées : année et mois de naissance, âge de départ, régime (CNAV_AGIRC ou CARRIERE_MIXTE), SAM, trimestres, points Agirc-Arrco, durée requise, année du relevé, trimestres de surcote, nombre d'enfants nés ou élevés, enfants à charge, parts fiscales, nombre de pensionnés, situation du foyer, éléments de carrière libérale, revenu fiscal de référence de l'avis d'imposition (rfr) et de l'avis précédent (rfrPrecedent). En carrière mixte, la caisse complémentaire libérale (caisse) est requise : carmf, cavec, cipav ou carpimko. Sans elle, ou avec une autre caisse, le calcul est refusé. Sans points Agirc-Arrco ni relevé, la complémentaire Agirc-Arrco n'est pas chiffrée : pensionPartielle vaut true, composantesNonChiffrees la nomme, et le net n'est pas calculé. Année de naissance de 1940 à l'année courante moins 16, âge de départ de 55 à 75 ans. Sortie : pension brute, et le net du foyer dans pensionNetMonthly et detailBrutNet lorsque rfr, le nombre de parts et le nombre de pensionnés sont fournis. Sans ces trois entrées, pensionNetMonthly est null. Sans rfrPrecedent, un revenu qui relèverait du taux médian ou du taux normal reste au taux réduit, et ce résultat est indicatif. Trois enfants ou plus : majoration de la pension de base du régime général (CSS art. L351-12 et R351-30). Les champs absents qui reçoivent une valeur de repli sont listés dans champsManquants, avec leur origine. Les règles non appliquées sont dans nonCouvert. La CSG déductible (CGI art. 154 quinquies) est retirée du revenu imposable avant l'abattement de 10 %. La cotisation maladie sur la retraite complémentaire Agirc-Arrco est retenue lorsque le taux de CSG appliqué est le taux médian ou le taux normal, et elle est nulle au taux réduit ou au taux zéro. L'Alsace-Moselle, les non-résidents et l'allocation de solidarité aux personnes âgées restent dans nonCouvert.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"birthYear",
"regime"
],
"properties": {
"rfr": {
"type": "object",
"required": [
"value",
"source",
"year",
"status"
],
"properties": {
"year": {
"type": "integer",
"description": "Année de l'avis d'imposition, distincte de l'année des revenus. Pour une pension versée en 2026, cette année est 2025."
},
"value": {
"type": "number"
},
"source": {
"type": "string",
"const": "tax_notice"
},
"status": {
"type": "string",
"const": "provided"
}
},
"additionalProperties": false
},
"caisse": {
"enum": [
"carmf",
"cavec",
"cipav",
"carpimko"
],
"type": "string",
"description": "Caisse complémentaire libérale en carrière mixte : carmf (médecins), cavec (experts-comptables), cipav, carpimko (auxiliaires médicaux). Requise en CARRIERE_MIXTE, sauf relevé qui la nomme. Une autre caisse n'est pas couverte."
},
"regime": {
"enum": [
"CNAV_AGIRC",
"CARRIERE_MIXTE"
],
"type": "string"
},
"samSaisi": {
"type": "number"
},
"birthYear": {
"type": "integer",
"maximum": 2010,
"minimum": 1940,
"description": "Année de naissance, de 1940 à l'année courante moins 16. Hors bornes, le calcul est refusé. La carrière mixte couvre les générations nées à partir de 1958."
},
"pointsASV": {
"type": "number",
"minimum": 0,
"description": "CARMF : points ASV des médecins conventionnés, lus sur le relevé. Absents : l'ASV n'est pas chiffrée, et nonCouvert le dit."
},
"situation": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Personne seule ou couple en imposition commune. Sert au plafonnement du quotient familial. Absente : 2 parts de référence."
},
"birthMonth": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "Mois de naissance, de 1 à 12. Pour 1965, janvier à mars et avril à décembre n'ont pas le même âge ni la même durée. Absent : le résultat reste indicatif, et le champ figure dans champsManquants."
},
"anneeReleve": {
"type": "integer",
"description": "Année du relevé de carrière. Absente : année courante, valeur et origine dans champsManquants."
},
"nombreParts": {
"type": "number",
"description": "Nombre de parts du foyer. Entrée du net. Absent : le net n'est pas chiffré, et le champ figure dans champsManquants.",
"exclusiveMinimum": 0
},
"pointsAgirc": {
"type": "number",
"minimum": 0,
"description": "Points Agirc-Arrco totaux. 0 est une valeur valide. Absent en carrière mixte, sans relevé : la complémentaire Agirc-Arrco n'est pas chiffrée et la pension est partielle."
},
"dureeRequise": {
"type": "integer",
"description": "Durée d'assurance requise, en trimestres. Absente : durée du calendrier de la génération, valeur et origine dans champsManquants.",
"exclusiveMinimum": 0
},
"pointsCNAVPL": {
"type": "number"
},
"rfrPrecedent": {
"type": "object",
"required": [
"value",
"source",
"year",
"status"
],
"properties": {
"year": {
"type": "integer",
"description": "Année de l'avis d'imposition précédent, distincte de l'année des revenus. Pour une pension versée en 2026, cette année est 2024."
},
"value": {
"type": "number"
},
"source": {
"type": "string",
"const": "tax_notice"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "Revenu fiscal de l'avis précédent. Son année est celle de rfr moins un. À défaut, le champ est ignoré : le résultat reste indicatif, et le taux médian ou normal n'est pas appliqué.",
"additionalProperties": false
},
"trimestresRG": {
"type": "number"
},
"nombreEnfants": {
"type": "integer",
"minimum": 0,
"description": "Nombre d'enfants nés ou élevés. Trois ou plus : majoration de 10 % de la pension de base du régime général (CSS art. L351-12 et R351-30). Absent : 0, indiqué dans champsManquants."
},
"retirementAge": {
"type": "integer",
"maximum": 75,
"minimum": 55,
"description": "Âge de départ, de 55 à 75 ans. Absent : 67 ans, indiqué dans champsManquants."
},
"trimestresLiberal": {
"type": "number"
},
"trimestresSurcote": {
"type": "integer",
"minimum": 0,
"description": "Trimestres de surcote déjà constatés. Absent : 0, indiqué dans champsManquants."
},
"nombreEnfantsACharge": {
"type": "integer",
"minimum": 0,
"description": "Nombre d'enfants à charge, pour la majoration Agirc-Arrco alternative. Absent : 0, indiqué dans champsManquants."
},
"pointsComplementaire": {
"type": "number"
},
"nombrePensionnesFoyer": {
"enum": [
1,
2
],
"type": "number",
"description": "Nombre de pensionnés du foyer, 1 ou 2. Distinct du nombre de parts. Absent : le net n'est pas chiffré."
},
"anneesAffiliationCipav": {
"type": "number"
},
"pensionSeulRevenuFoyer": {
"type": "boolean",
"description": "true lorsque la pension est le seul revenu imposable du foyer. Absent : l'impôt est calculé sur cette seule pension et le net reste indicatif (statutNet)."
}
},
"additionalProperties": false
}{
"title": "Estimer une pension de retraite",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_av — Fiscalité d'un contrat d'assurance-vie
Calcule la fiscalité d'un contrat d'assurance-vie : rachat, avance ou transmission (CGI art. 125-0 A, 990 I, 757 B et 777). Entrées : valeur du contrat, total des versements, ancienneté en années, objet du calcul, et, pour une transmission, primes par âge au versement et bénéficiaires (lien, quote-part). Sortie : montants de rachat, d'avance ou transmis. netRachat est un net de contrat, distinct du net du foyer. Au rachat, les prélèvements sociaux de 17,2 % portent sur la part d'unités de compte lorsque plusValuesUC et plusValuesFondsEuros sont fournis. Sans cette répartition, ils sont calculés sur l'ensemble des gains (majorant) : ceux du fonds en euros sont déjà prélevés chaque année. Le régime de transmission suit l'âge de l'assuré à chaque prime : avant 70 ans, CGI art. 990 I ; à partir de 70 ans, CGI art. 757 B (abattement de 30 500 euros par assuré, partagé au prorata, primes seules taxées), puis CGI art. 777 selon le lien. Sans primesParAge ou beneficiairesTransmission, le calcul de transmission est refusé.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurContrat",
"versementsTotal",
"ancienneteAns",
"objetCalcul"
],
"properties": {
"tmi": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI du foyer en taux décimal (0.30 pour 30 %), lorsqu'elle est fournie. Absente : l'option pour le barème n'est pas chiffrée."
},
"ageAssure": {
"type": "number",
"description": "Âge actuel de l'assuré. Le régime de transmission suit l'âge à chaque prime, pas cet âge."
},
"objetCalcul": {
"enum": [
"rachat",
"transmission",
"rachat_et_transmission",
"avance",
"rachat_vs_avance"
],
"type": "string"
},
"plusValuesUC": {
"type": "number",
"minimum": 0,
"description": "Gains d'unités de compte. Les prélèvements sociaux de 17,2 % portent sur cette part."
},
"primesParAge": {
"type": "array",
"items": {
"type": "object",
"required": [
"montant",
"ageAuVersement"
],
"properties": {
"montant": {
"type": "number",
"minimum": 0
},
"ageAuVersement": {
"type": "number",
"minimum": 0,
"description": "Âge de l'assuré au versement. Avant 70 ans : CGI art. 990 I. À partir de 70 ans : CGI art. 757 B."
}
},
"additionalProperties": false
},
"description": "Primes avec l'âge de l'assuré au versement. Entrée du calcul de transmission. Absente : ce calcul est refusé."
},
"ancienneteAns": {
"type": "number"
},
"montantRachat": {
"type": "number"
},
"valeurContrat": {
"type": "number"
},
"nbBeneficiaires": {
"type": "number",
"description": "Nombre de bénéficiaires. La transmission se calcule à partir de beneficiairesTransmission."
},
"primesAvant2017": {
"type": "number",
"description": "Primes de ce contrat versées avant le 27/09/2017. Absentes : toutes les primes sont traitées comme postérieures à cette date."
},
"versementsTotal": {
"type": "number"
},
"situationFamiliale": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Personne seule ou couple."
},
"primesTotalesAssure": {
"type": "number",
"description": "Primes de tous les contrats de l'assuré encore investies, pour le seuil de 150 000 euros."
},
"plusValuesFondsEuros": {
"type": "number",
"minimum": 0,
"description": "Gains du fonds en euros. Avec plusValuesUC, entrée du calcul lorsque le contrat a des gains. Au rachat, les prélèvements sociaux ne sont pas dus une seconde fois sur cette part."
},
"beneficiairesTransmission": {
"type": "array",
"items": {
"type": "object",
"required": [
"lien",
"part"
],
"properties": {
"id": {
"type": "string"
},
"nom": {
"type": "string"
},
"lien": {
"enum": [
"conjoint",
"pacs",
"enfant",
"parent",
"petit_enfant",
"frere_soeur",
"neveu_niece",
"autre"
],
"type": "string"
},
"part": {
"type": "number",
"minimum": 0,
"description": "Quote-part de la clause. La somme des parts vaut 1."
},
"abattementSuccessoralRestant": {
"type": "number",
"minimum": 0,
"description": "Abattement successoral encore disponible. Absent : abattement légal plein du lien, signalé dans le résultat."
}
},
"additionalProperties": false
},
"description": "Bénéficiaires de la transmission : lien de parenté et quote-part. Absents : le calcul de transmission est refusé."
}
},
"additionalProperties": false
}{
"title": "Fiscalité d'un contrat d'assurance-vie",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_pea — Fiscalité d'une sortie de PEA
Calcule la fiscalité d'une sortie de PEA (CGI art. 157) : clôture, rente, rachat partiel ou comparaison. Entrées : valeur actuelle, total des versements, ancienneté en années, objet du calcul, et éventuellement TMI, âges, rendement et montant du rachat. Sortie : impôt, prélèvements sociaux et net de sortie. Après 5 ans : exonération d'impôt sur le revenu, prélèvements sociaux au taux général du registre, distinct du taux de l'assurance-vie. En rente exonérée d'impôt, ces prélèvements portent sur la fraction d'âge de l'article 158, 6, et la rente nette est après prélèvements sociaux. Sans versementsTotal, les gains ne sont pas estimés.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurPEA",
"versementsTotal",
"ancienneteAns",
"objetCalcul"
],
"properties": {
"tmi": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI du foyer en taux décimal (0.30 pour 30 %), lorsqu'elle est fournie."
},
"ageActuel": {
"type": "integer",
"description": "Âge actuel. Entrée d'une projection ou d'une rente."
},
"valeurPEA": {
"type": "number",
"description": "Valeur actuelle du PEA."
},
"ageRetraite": {
"type": "integer",
"description": "Âge de sortie. Absent, et sans rendement : calcul sur la valeur actuelle, sans projection."
},
"objetCalcul": {
"enum": [
"cloture",
"rente",
"rachat_partiel",
"comparaison_sortie"
],
"type": "string"
},
"ancienneteAns": {
"type": "number",
"minimum": 0,
"description": "Ancienneté du plan en années. Le régime dépend du seuil de 5 ans."
},
"montantRachat": {
"type": "number",
"description": "Montant du retrait. Entrée lorsque objetCalcul vaut rachat_partiel."
},
"rendementAnnuel": {
"type": "number",
"description": "Rendement annuel fourni par l'appelant. Absent : aucune projection à ce taux."
},
"versementsTotal": {
"type": "number",
"minimum": 0,
"description": "Total des versements sur le plan. Absent : les gains ne sont pas calculés."
}
},
"additionalProperties": false
}{
"title": "Fiscalité d'une sortie de PEA",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_cto — Fiscalité d'un compte-titres ordinaire
Calcule, pour une année, la fiscalité d'un compte-titres ordinaire d'une personne physique (CGI art. 200 A, 158, 150-0 A et 150-0 D). Entrées : plus-values, moins-values, dividendes, intérêts, option pour le barème, revenu imposable du foyer hors prélèvement forfaitaire, nombre de parts, situation, revenu fiscal de référence, dispense, moins-values reportables et plus-values de titres acquis avant 2018. Sortie : impôt sur le revenu et prélèvements sociaux, séparés. Par défaut, prélèvement forfaitaire. L'option globale pour le barème est chiffrée lorsque le revenu imposable hors ces revenus et le nombre de parts sont fournis ; sinon le résultat est le forfait et indique que l'option n'est pas chiffrée. Les moins-values s'imputent sur les seules plus-values, avec un report de dix ans.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"annee": {
"type": "integer",
"description": "Année des revenus. Seule 2026 est couverte. Absente : 2026, indiqué dans le résultat."
},
"parts": {
"type": "number",
"description": "Nombre de parts du foyer. Absent : l'option pour le barème n'est pas chiffrée.",
"exclusiveMinimum": 0
},
"interets": {
"type": "number",
"minimum": 0,
"description": "Intérêts et coupons bruts."
},
"situation": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Seul ou couple. Sert à la dispense de prélèvement forfaitaire non libératoire et aux parts de référence du plafonnement du quotient familial. Absente : la dispense n'est pas appréciée, et le plafonnement retient 2 parts de référence."
},
"dividendes": {
"type": "number",
"minimum": 0,
"description": "Dividendes bruts."
},
"plusValues": {
"type": "number",
"minimum": 0,
"description": "Plus-values de cession de l'année, avant imputation des moins-values. Zéro est un gain nul."
},
"moinsValues": {
"type": "number",
"minimum": 0,
"description": "Moins-values de cession de la même année."
},
"dispensePfnl": {
"type": "boolean",
"description": "Dispense de prélèvement forfaitaire non libératoire demandée dans le délai. Absente : le prélèvement est retenu."
},
"optionBareme": {
"type": "boolean",
"description": "Option globale annuelle pour le barème. Absente : prélèvement forfaitaire."
},
"plusValuesAvant2018": {
"type": "array",
"items": {
"type": "object",
"required": [
"montant",
"ansDetention"
],
"properties": {
"montant": {
"type": "number",
"minimum": 0,
"description": "Fraction des plus-values de l'année."
},
"ansDetention": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"description": "Titres acquis avant 2018. L'abattement pour durée de détention s'applique avec l'option pour le barème."
},
"moinsValuesReportables": {
"type": "array",
"items": {
"type": "object",
"required": [
"annee",
"montant"
],
"properties": {
"annee": {
"type": "integer",
"description": "Année de naissance de la moins-value."
},
"montant": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"description": "Moins-values des années antérieures encore reportables, une ligne par année."
},
"revenuImposableHorsPfu": {
"type": "number",
"minimum": 0,
"description": "Revenu imposable du foyer hors dividendes, intérêts et plus-values du prélèvement forfaitaire. Zéro est un revenu nul. Absent : l'option pour le barème n'est pas chiffrée."
},
"revenuFiscalReferenceN2": {
"type": "number",
"minimum": 0,
"description": "Revenu fiscal de référence de l'avant-dernière année, lorsqu'il est connu."
}
},
"additionalProperties": false
}{
"title": "Fiscalité d'un compte-titres ordinaire",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_per_sortie — Fiscalité d'une sortie de PER
Calcule la fiscalité d'une sortie de PER, en capital, en rente, en rente réversible ou en comparaison. Entrées : capital, versements déduits et non déduits, âge de sortie, pension annuelle brute du foyer hors PER, nombre de parts, objet du calcul, et éventuellement les TMI. Sortie : impôt sur le revenu, égal à la différence de barème du foyer avec et sans le flux, et prélèvements sociaux. tmiRetraite est une entrée de comparaison, distincte du taux appliqué à la sortie. Capital : versements déduits imposés comme des pensions, sans abattement de 10 % (BOI-RSA-PENS-30-10-20), versements non déduits exonérés, gains au prélèvement forfaitaire dont les prélèvements sociaux de 18,6 %. Rente : même différence de barème ; prélèvements sociaux de 18,6 % sur la fraction d'âge de toute la rente.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"capitalPER",
"versementsDeduits",
"ageRetraite",
"pensionAnnuelleBrute",
"parts",
"objetCalcul"
],
"properties": {
"parts": {
"type": "number",
"description": "Nombre de parts du foyer.",
"exclusiveMinimum": 0
},
"situation": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Personne seule ou couple soumis à imposition commune. Sert au plafonnement du quotient familial. Absente : 2 parts de référence."
},
"tmiActuel": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI actuelle en taux décimal (0.30 pour 30 %), lorsqu'elle est fournie."
},
"capitalPER": {
"type": "number",
"description": "Capital accumulé dans le PER."
},
"horizonAns": {
"type": "integer"
},
"ageRetraite": {
"type": "integer",
"description": "Âge au moment de la sortie."
},
"objetCalcul": {
"enum": [
"capital",
"rente",
"rente_reversible",
"comparaison"
],
"type": "string"
},
"tmiRetraite": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI à la retraite, en taux décimal. Distincte du taux appliqué à la sortie. Sert à la comparaison avec tmiActuel lorsque les deux sont fournis."
},
"rendementAnnuel": {
"type": "number"
},
"versementsDeduits": {
"type": "number",
"description": "Versements déduits du revenu imposable."
},
"pensionAnnuelleBrute": {
"type": "number",
"minimum": 0,
"description": "Pension annuelle brute du foyer hors PER. L'impôt vaut l'impôt sur le revenu de la pension augmentée du flux, moins l'impôt sur le revenu de la pension seule."
},
"versementsNonDeduits": {
"type": "number",
"minimum": 0,
"description": "Versements non déduits. Absents : 0. Exonérés d'impôt à la sortie en capital. En rente, leur quote-part suit la fraction d'âge pour l'impôt sur le revenu."
},
"tauxReversionConjoint": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Fiscalité d'une sortie de PER",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_ifi — Calcul de l'IFI
Calcule l'IFI (CGI art. 964 à 979) : assiette, barème, décote et plafonnement. Entrées : actifs immobiliers et leur quote-part, passifs, revenu fiscal de référence, impôt sur le revenu estimé, âge. Sortie : IFI dû. Entre 1 300 000 et 1 400 000 euros de patrimoine net taxable, la décote de l'art. 977 (17 500 euros moins 1,25 % du patrimoine) est une ligne séparée, ligneDecote. La quote-part immobilière d'une SCPI est l'entrée quotePartImmo. Le plafonnement utilise le revenu fiscal de référence fourni.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"actifs",
"passifs",
"revenusFiscauxReference",
"irEstime"
],
"properties": {
"age": {
"type": "number"
},
"actifs": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"valeur",
"type"
],
"properties": {
"type": {
"enum": [
"rp",
"locatif",
"sci_is",
"sci_ir",
"scpi",
"autre_immo"
],
"type": "string"
},
"label": {
"type": "string"
},
"valeur": {
"type": "number"
},
"quotePartImmo": {
"type": "number"
}
},
"additionalProperties": false
}
},
"passifs": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"montant",
"deductible"
],
"properties": {
"label": {
"type": "string"
},
"montant": {
"type": "number"
},
"deductible": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"irEstime": {
"type": "number"
},
"revenusFiscauxReference": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Calcul de l'IFI",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_dutreil — Transmission d'entreprise : chemins Dutreil
Calcule quatre chemins de transmission d'entreprise, avec et sans pacte Dutreil (CGI art. 787 B). Entrées : valeur des titres, prix de revient, nombre d'enfants, âge du dirigeant, horizon de cession, durées d'engagement collectif et individuel. Entrées optionnelles du chemin de cession : revenu fiscal de référence hors plus-value, situation seul ou couple, revenus fiscaux de référence de N-1 et de N-2 pour le quotient du II de l'article 223 sexies. Sortie : coût fiscal des chemins A et C. Le chemin A ajoute la contribution exceptionnelle sur les hauts revenus (CGI art. 223 sexies, règle FR.CEHR.2026.001). Sans le revenu hors plus-value, elle est calculée sur la seule plus-value et le résultat le signale. Sans N-1 et N-2, le quotient n'est pas appliqué. La contribution différentielle de l'article 224 s'applique aux revenus de 2026 et n'est pas chiffrée. La donation des titres, sans cession, n'impose pas la plus-value (CGI art. 150-0 A). L'abattement de 75 % réduit la base des droits. Il ne fait pas disparaître la plus-value. Le chemin B et le chemin par holding ont le statut non_couvert : calcul en cours de révision, sans montant. Lorsque l'horizon de cession ne dépasse pas la somme de ces durées, le résultat contient un avertissement de conflit temporel.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurTitres",
"prixRevient",
"nbEnfants",
"ageDirigeant"
],
"properties": {
"eccDuree": {
"type": "number"
},
"eicDuree": {
"type": "number"
},
"nbEnfants": {
"type": "integer"
},
"tmiFrance": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Taux marginal d'imposition en France, en décimal. Cette entrée n'entre pas dans le calcul."
},
"prixRevient": {
"type": "number"
},
"ageDirigeant": {
"type": "integer"
},
"valeurTitres": {
"type": "number"
},
"horizonCession": {
"type": "number"
},
"situationFoyer": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Personne seule ou couple soumis à imposition commune, pour les seuils de la contribution exceptionnelle sur les hauts revenus. Absent : barème de la personne seule."
},
"revenuFiscalReferenceN1": {
"type": "number",
"minimum": 0,
"description": "Revenu fiscal de référence de l'année N-1, pour le quotient du II de l'article 223 sexies. 0 est un revenu nul. Absent : le quotient n'est pas appliqué."
},
"revenuFiscalReferenceN2": {
"type": "number",
"minimum": 0,
"description": "Revenu fiscal de référence de l'année N-2, pour le quotient du II de l'article 223 sexies. 0 est un revenu nul. Absent : le quotient n'est pas appliqué."
},
"revenuFiscalReferenceHorsPlusValue": {
"type": "number",
"minimum": 0,
"description": "Revenu fiscal de référence du foyer hors plus-value de cession. 0 est un revenu nul. Absent : la contribution est calculée sur la seule plus-value."
}
},
"additionalProperties": false
}{
"title": "Transmission d'entreprise : chemins Dutreil",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_donation — Droits d'une donation
Calcule les droits d'une donation : pleine propriété, nue-propriété ou usufruit (CGI art. 777 et 779), donations progressives sur les abattements, ou assurance-vie hors succession (CGI art. 990 I et 757 B). Entrées : mode, valeur du bien, âge du donateur, nombre de donataires, type de donation, lien, donations antérieures, nature du bien, donateurs (1 ou 2). donationsAnterieures en nombre est imputé sur chaque donataire (CGI art. 784). En liste, chaque montant vise un beneficiaire (index à partir de 1, ou tous) et un donateur (1 ou 2). Sans cette précision, l'hypothèse d'imputation est indiquée. donateurs absent : 1. Avec 2, chaque parent transmet la moitié, avec son abattement et son âge. ageDonateurConjoint absent : le même âge, signalé. En assurance-vie hors succession, les gains d'unités de compte et du fonds en euros sont facultatifs. Lorsqu'ils sont fournis, les prélèvements sociaux de 17,2 % sur les unités de compte (CSS art. L136-7) sont déduits avant l'article 990 I. Absents, ces prélèvements ne sont pas déduits et le résultat le dit. La réduction de 50 % de l'article 790 porte sur les droits d'une donation en pleine propriété, depuis le 31 juillet 2011, de titres éligibles à l'article 787 B ou de biens d'entreprise individuelle éligibles à l'article 787 C, par un donateur de moins de 70 ans. Un bien ordinaire n'ouvre pas cette réduction. En donations progressives, comparaison contient la donation immédiate du même montant, les vagues tous les 15 ans et, en cas de décès avant une vague, la succession du reste, sans probabilité de survie. Sortie : la réponse de la route, avec sa base après abattement, ses droits, son traceId et sa version de règles. Le champ avertissement porte : estimation indicative, pas un conseil en investissement.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"mode": {
"enum": [
"DONATION",
"DONATIONS_PROGRESSIVES",
"AV_SUCCESSION"
],
"type": "string",
"description": "DONATION par défaut, DONATIONS_PROGRESSIVES, ou AV_SUCCESSION."
},
"capitalAV": {
"type": "number",
"description": "Capital du contrat d'assurance-vie, en euros. Requis pour le mode assurance-vie hors succession.",
"exclusiveMinimum": 0
},
"donateurs": {
"enum": [
1,
2
],
"type": "number",
"description": "Nombre de donateurs. Absent : 1. Avec 2, chaque parent transmet la moitié de la valeur, avec son abattement et son âge."
},
"horizonAns": {
"type": "integer",
"description": "Horizon en années. Requis pour des donations progressives.",
"exclusiveMinimum": 0
},
"natureBien": {
"enum": [
"ORDINAIRE",
"TITRES_787_B",
"BIENS_EI_787_C"
],
"type": "string",
"description": "ORDINAIRE si absent : pas de réduction de l'article 790. TITRES_787_B ou BIENS_EI_787_C : réduction de 50 % si la donation est en pleine propriété et le donateur a moins de 70 ans."
},
"valeurBien": {
"type": "number",
"description": "Valeur du bien ou du portefeuille à transmettre, en euros. Requis pour une donation et pour des donations progressives.",
"exclusiveMinimum": 0
},
"ageDonateur": {
"type": "number",
"maximum": 120,
"minimum": 0,
"description": "Âge du donateur en années révolues. Requis pour une donation. Sert au barème de l'article 669 et au seuil de 70 ans de l'article 790."
},
"lienParente": {
"enum": [
"LIGNE_DIRECTE",
"PETIT_ENFANT",
"ARRIERE_PETIT_ENFANT",
"CONJOINT",
"FRERE_SOEUR",
"NEVEU_NIECE",
"AUTRE"
],
"type": "string",
"description": "LIGNE_DIRECTE (de parent à enfant), PETIT_ENFANT, ARRIERE_PETIT_ENFANT, CONJOINT, FRERE_SOEUR, NEVEU_NIECE ou AUTRE. Absent : de parent à enfant, abattement de 100 000 euros par donataire. Abattement et barème de l'article 777 propres à chaque lien."
},
"reductionPP": {
"type": "boolean",
"description": "Ancien interrupteur. Ignoré : il ne rétablit ni ne retire la réduction de l'article 790."
},
"plusValuesUC": {
"type": "number",
"minimum": 0,
"description": "Gains d'unités de compte, en euros. Avec plusValuesFondsEuros, les prélèvements sociaux de 17,2 % (CSS art. L136-7) sont déduits avant l'article 990 I. Absents ensemble : ces prélèvements ne sont pas déduits, et le résultat le dit."
},
"typeDonation": {
"enum": [
"PLEINE_PROPRIETE",
"NUE_PROPRIETE",
"USUFRUIT"
],
"type": "string",
"description": "PLEINE_PROPRIETE, NUE_PROPRIETE ou USUFRUIT. Absent : la donation n'est pas traitée comme une pleine propriété au sens de l'article 790."
},
"primesApres70": {
"type": "number",
"minimum": 0,
"description": "Primes versées à partir de 70 ans, en euros. Absentes : 0."
},
"primesAvant70": {
"type": "number",
"minimum": 0,
"description": "Primes versées avant 70 ans, en euros. Absentes : égales au capital."
},
"nombreDonataires": {
"type": "integer",
"description": "Nombre de donataires. Requis pour une donation et pour des donations progressives. La valeur est partagée, puis l'abattement s'applique à chaque part.",
"exclusiveMinimum": 0
},
"ageDonateurConjoint": {
"type": "number",
"maximum": 120,
"minimum": 0,
"description": "Âge du second donateur. Absent avec deux donateurs : le même âge est retenu et signalé. Ignoré avec un seul donateur, et signalé comme non repris."
},
"nombreBeneficiaires": {
"type": "integer",
"description": "Nombre de bénéficiaires du contrat. Absent : nombre de donataires, sinon 1.",
"exclusiveMinimum": 0
},
"donationsAnterieures": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "array",
"items": {
"type": "object",
"required": [
"montant"
],
"properties": {
"montant": {
"type": "number",
"minimum": 0
},
"donateur": {
"enum": [
1,
2
],
"type": "number"
},
"beneficiaire": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "string",
"const": "tous"
}
]
}
},
"additionalProperties": false
}
}
],
"description": "Donations antérieures sur 15 ans (CGI art. 784). Un nombre, en euros, est imputé sur chaque donataire. Une liste précise chaque montant, avec beneficiaire (index à partir de 1, ou tous) et donateur (1 ou 2). Sans beneficiaire, le montant est imputé sur le premier donataire et l'hypothèse est indiquée. Absentes : 0."
},
"plusValuesFondsEuros": {
"type": "number",
"minimum": 0,
"description": "Gains du fonds en euros, en euros. Les prélèvements sociaux ont déjà été prélevés sur cette part. À fournir avec plusValuesUC."
},
"ageUsufruitierConjoint": {
"type": "number",
"maximum": 120,
"minimum": 0,
"description": "Âge du second usufruitier, retenu si ageDonateurConjoint est absent. Si les deux diffèrent, ageDonateurConjoint est retenu et celui-ci est signalé comme non repris."
}
},
"additionalProperties": false
}{
"title": "Droits d'une donation",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_demembrement — Démembrement : usufruit et nue-propriété
Calcule la répartition entre usufruit et nue-propriété selon le barème de l'article 669 du CGI, à partir de l'âge en années révolues de l'usufruitier, puis les droits de donation de la nue-propriété (articles 777 et 779) et l'écart avec une donation en pleine propriété. Entrées : valeur du bien, âge de l'usufruitier, type d'opération, lien de parenté, abattement déjà utilisé, nombre de bénéficiaires, donateurs (1 ou 2). La valeur du bien est le total transmis : elle est répartie en parts égales, l'abattement s'applique à chaque part, et les droits totaux sont la somme des parts. abattementDejaUtilise est le montant déjà consommé sur 15 ans (CGI art. 784), imputé sur chaque bénéficiaire : le même montant est retiré de l'abattement de chacun. Avec deux donateurs, il est aussi retiré chez chaque donateur. Pour viser un seul enfant ou un seul donateur, saisir donationsAnterieures : liste de montants avec beneficiaire (index à partir de 1, ou tous) et donateur (1 ou 2). Sans cette précision, l'hypothèse d'imputation est indiquée. donateurs absent : 1. Avec 2, chaque parent transmet la moitié, avec son abattement et son usufruit. ageUsufruitierConjoint absent : le même âge, signalé. L'usufruit temporaire de l'article 669, II n'est pas ce barème. Sortie : la réponse de la route, avec ses taux, ses valeurs, ses droits par bénéficiaire, son traceId et sa version de règles. Le champ avertissement porte : estimation indicative, pas un conseil en investissement.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurBien",
"ageUsufruitier",
"typeOperation"
],
"properties": {
"donateurs": {
"enum": [
1,
2
],
"type": "number",
"description": "Nombre de donateurs. Absent : 1. Avec 2, chaque parent transmet la moitié de la valeur, avec son abattement de 100 000 euros par enfant et son usufruit."
},
"valeurBien": {
"type": "number",
"description": "Valeur totale de la pleine propriété, en euros. Avec plusieurs bénéficiaires, ce total est réparti en parts égales.",
"exclusiveMinimum": 0
},
"lienParente": {
"enum": [
"enfant",
"petit_enfant",
"arriere_petit_enfant",
"conjoint",
"frere_soeur",
"neveu_niece",
"autre"
],
"type": "string",
"description": "Lien pour l'abattement de l'article 779. Absent : enfant, abattement de 100 000 euros."
},
"typeOperation": {
"enum": [
"DONATION_NP",
"ACQUISITION_DEMEMBREE",
"EVALUATION"
],
"type": "string",
"description": "DONATION_NP calcule les droits sur la nue-propriété. ACQUISITION_DEMEMBREE décrit un achat démembré. EVALUATION ne calcule que la répartition usufruit et nue-propriété."
},
"ageUsufruitier": {
"type": "number",
"maximum": 120,
"minimum": 0,
"description": "Âge en années révolues de l'usufruitier. Le barème de l'article 669 change à 21, 31, 41, 51, 61, 71, 81 et 91 ans."
},
"nombreBeneficiaires": {
"type": "integer",
"description": "Nombre de bénéficiaires. Absent : 1. valeurBien est le total transmis : il est réparti en parts égales, l'abattement s'applique à chaque part, et les droits totaux sont la somme des parts.",
"exclusiveMinimum": 0
},
"donationsAnterieures": {
"type": "array",
"items": {
"type": "object",
"required": [
"montant"
],
"properties": {
"montant": {
"type": "number",
"minimum": 0
},
"donateur": {
"enum": [
1,
2
],
"type": "number"
},
"beneficiaire": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "string",
"const": "tous"
}
]
}
},
"additionalProperties": false
},
"description": "Donations antérieures de moins de 15 ans. Chaque ligne a un montant, un beneficiaire (index à partir de 1, ou tous) et un donateur (1 ou 2). Sans beneficiaire, le montant est imputé sur le premier bénéficiaire et l'hypothèse est indiquée. Sans donateur, il est imputé sur le donateur 1."
},
"abattementDejaUtilise": {
"type": "number",
"minimum": 0,
"description": "Abattement déjà consommé sur 15 ans (CGI art. 784), en euros, imputé sur chaque bénéficiaire : le même montant est retiré de l'abattement de chacun. Avec deux donateurs, il est aussi retiré chez chaque donateur. Absent : 0. Pour viser un seul enfant ou un seul donateur, utiliser donationsAnterieures. Sans cette précision, l'hypothèse d'imputation est indiquée."
},
"ageUsufruitierConjoint": {
"type": "number",
"maximum": 120,
"minimum": 0,
"description": "Âge en années révolues du second donateur. Absent avec deux donateurs : le même âge est retenu et signalé. Ignoré avec un seul donateur, et signalé comme non repris."
}
},
"additionalProperties": false
}{
"title": "Démembrement : usufruit et nue-propriété",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}acheter_louer — Acheter ou louer sa résidence principale
Compare, dans le temps, le patrimoine d'un acheteur de résidence principale et celui d'un locataire. Entrées : prix, apport, loyer annuel, et éventuellement crédit, frais, département, date d'acte, charges, horizon et hypothèses d'évolution. Absents, les taux, la durée, les frais de notaire, la résidence principale, l'évolution des prix et des loyers et le rendement de l'apport prennent les valeurs publiées dans hypothesesVersion et hypotheses (Livret A, taux et durée Banque de France, frais de notaire estimés, prix et loyers constants). Sortie : écart de patrimoine année par année, point_mort (énoncé et limite), coûts en quatre blocs (acquisition, financement, détention, sortie), hors_assurance, a_demander (deux questions au plus) et une grille. Un résultat qui repose sur une hypothèse par défaut est indicatif. La réponse ne contient pas de champ de décision.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"prix": {
"type": "number"
},
"apport": {
"type": "number"
},
"credit": {
"type": "object",
"properties": {
"assures": {
"type": "array",
"items": {
"type": "object",
"required": [
"quotite",
"taux"
],
"properties": {
"taux": {
"type": "number",
"description": "Taux d'assurance de cet assuré, lorsqu'il est fourni."
},
"quotite": {
"type": "number"
}
},
"additionalProperties": false
}
},
"capital": {
"type": "number"
},
"duree_mois": {
"type": "integer"
},
"taux_nominal": {
"type": "number",
"description": "Taux nominal annuel du crédit. Absent : taux Banque de France, inscrit dans hypotheses."
},
"assurance_base": {
"enum": [
"capital_initial",
"capital_restant_du"
],
"type": "string"
},
"quotite_totale": {
"type": "number"
},
"taux_assurance": {
"type": "number",
"description": "Taux d'assurance du crédit, lorsqu'il est fourni. La quotité d'un couple est une entrée distincte."
}
},
"description": "Caractéristiques du crédit. Absentes : taux et durée Banque de France, inscrits dans hypotheses. L'assurance et la quotité d'un couple restent des entrées lorsqu'elles sont connues.",
"additionalProperties": false
},
"detail": {
"enum": [
"compact",
"complet"
],
"type": "string",
"description": "compact : sans échéancier du crédit ni lignes par année. complet : avec l'échéancier. Absent : compact."
},
"travaux": {
"type": [
"number",
"null"
]
},
"date_acte": {
"type": "string",
"description": "Date de l'acte au format AAAA-MM-JJ. Avec le département, le barème DGFiP remplace l'estimation des frais."
},
"departement": {
"type": "string",
"description": "Code département, par exemple 75, 2A, ou 69M pour Lyon."
},
"horizon_max": {
"type": "integer",
"description": "Horizon en années. Absent : 30 ans, et la grille est publiée."
},
"frais_entree": {
"type": [
"number",
"null"
],
"description": "Frais d'acquisition. Absents, et sans département : estimation publiée par le calcul. null : zéro explicite."
},
"loyer_annuel": {
"type": [
"number",
"null"
]
},
"evolution_prix": {
"type": "number",
"description": "Évolution annuelle du prix. Absente : 0, avec +1 % et +2 % dans la grille."
},
"frais_de_vente": {
"type": [
"number",
"null"
]
},
"primo_accedant": {
"type": "boolean",
"description": "true lorsque l'acheteur est primo-accédant."
},
"evolution_loyer": {
"type": "number",
"description": "Évolution annuelle du loyer. Absente : loyer constant, inscrit dans hypotheses."
},
"rendement_apport": {
"type": "number",
"description": "Rendement annuel de l'apport non investi dans le logement. Absent : taux du Livret A, hypothèse de référence sans risque, avec son plafond dans hypotheses."
},
"charges_annuelles": {
"type": [
"number",
"null"
]
},
"frais_acquisition": {
"enum": [
"forfait",
"reels"
],
"type": "string",
"description": "Assiette des frais d'acquisition pour une plus-value hors résidence principale : forfait, ou reels (égal à frais_entree). Sans effet pour une résidence principale."
},
"taxe_fonciere_annuelle": {
"type": [
"number",
"null"
]
},
"charges_locatives_annuelles": {
"type": [
"number",
"null"
]
},
"patrimoine_immobilier_taxable": {
"type": [
"number",
"null"
]
},
"residence_principale_au_moment_de_la_vente": {
"type": "boolean",
"description": "Résidence principale au moment de la vente. Absente pour un logement : le calcul retient la résidence principale et l'inscrit dans hypotheses."
}
},
"additionalProperties": false
}{
"title": "Acheter ou louer sa résidence principale",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_cumul — Cumul emploi-retraite
Calcule le cumul emploi-retraite d'un salarié du régime général : cumul intégral ou plafonné, et écrêtement des pensions (CSS art. L. 161-22 ; à partir du 1er janvier 2027, LFSS 2026, art. 102). Entrées : âge, âge légal, taux plein, liquidation des pensions, pensions brutes mensuelles de base et complémentaire, revenu d'activité brut mensuel, salaire de référence des 3 derniers mois, date d'entrée en jouissance. Sortie : montants bruts mensuels, régime applicable, et totalRetenu, assiette comparée au plafond. Avant 2027, totalRetenu additionne les pensions brutes et l'activité retenue à 98,25 %. À partir de 2027, totalRetenu est le seul revenu d'activité. totalRetenu est null lorsqu'aucun plafond ne s'applique. dateEntreeJouissance sélectionne le droit applicable. Absente : règles en vigueur jusqu'au 31 décembre 2026, avec un texte dans avertissements. Indépendants, fonction publique et régimes spéciaux sont hors de ce calcul.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"age",
"ageLegal",
"tauxPlein",
"pensionsLiquidees",
"pensionBase",
"pensionComplementaire",
"revenuActivite",
"salaireReference3Mois"
],
"properties": {
"age": {
"type": "integer",
"description": "Âge de la personne."
},
"ageLegal": {
"type": "integer",
"description": "Âge légal de départ de la génération, lorsqu'il est connu."
},
"tauxPlein": {
"type": "boolean",
"description": "true lorsque la durée d'assurance requise est atteinte, ou à 67 ans."
},
"pensionBase": {
"type": "number",
"minimum": 0,
"description": "Pension de base brute mensuelle."
},
"revenuActivite": {
"type": "number",
"minimum": 0,
"description": "Revenu d'activité brut mensuel de la reprise."
},
"pensionsLiquidees": {
"type": "boolean",
"description": "true lorsque toutes les pensions, de base et complémentaires, sont liquidées."
},
"dateEntreeJouissance": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date d'entrée en jouissance de la première pension de base, au format AAAA-MM-JJ."
},
"pensionComplementaire": {
"type": "number",
"minimum": 0,
"description": "Pension complémentaire brute mensuelle (Agirc-Arrco)."
},
"salaireReference3Mois": {
"type": "number",
"minimum": 0,
"description": "Moyenne brute mensuelle des 3 derniers mois de salaire avant la liquidation."
}
},
"additionalProperties": false
}{
"title": "Cumul emploi-retraite",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_results — Comparer deux scénarios déjà calculés
Compare deux listes de résultats Marcel déjà calculés. Entrées : scenarioA et scenarioB, chacune une liste de résultats. Sortie : écarts du scénario B moins le scénario A. La réponse ne contient pas de patrimoine net agrégé. Moteurs comparés : pension, assurance-vie, IFI, Dutreil, donation (droitsNets, baseApresAbattement) et démembrement (droitsTotaux, valeurNuePropriete), à moteur égal de chaque côté. Donation : droitsNets est chiffré pour une donation simple ; les donations progressives et l'assurance-vie hors succession ne sont pas comparées. Un moteur au statut blocked n'a pas de delta chiffrable.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"scenarioA",
"scenarioB"
],
"properties": {
"scenarioA": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"scenarioB": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": false
}{
"title": "Comparer deux scénarios déjà calculés",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}optimiser_patrimoine — Marcel Patrimoine
Marcel Patrimoine compare des scénarios de donation ou de démembrement et chiffre leur effet fiscal. Estimation indicative, pas un conseil en investissement. Chaque champ du profil est optionnel ; la réponse contient les scénarios chiffrés, les scénarios écartés, les sujets non couverts, les champs manquants et les avertissements. Elle porte un traceId, le même pour un même profil et une même version de règles, et sa rulesVersion.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"foyer": {
"type": "object",
"properties": {
"age": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Âge de la personne, en années entières, de 0 à 120."
},
"tmi": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Tranche marginale d'imposition actuelle, en décimal : 0.30 pour 30 %."
},
"parts": {
"type": "number",
"description": "Nombre de parts fiscales du foyer. Un nombre strictement positif, par exemple 1, 1,5 ou 2.",
"exclusiveMinimum": 0
},
"nbEnfants": {
"type": "integer",
"minimum": 0,
"description": "Nombre d'enfants."
},
"situation": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Personne seule ou couple."
},
"ageConjoint": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Âge du conjoint, en années entières, de 0 à 120."
},
"revenusProN1": {
"type": "number",
"minimum": 0,
"description": "Revenus professionnels déclarés l'an dernier, en euros."
},
"revenuNetMensuel": {
"type": "number",
"minimum": 0,
"description": "Revenu net mensuel, en euros."
}
},
"description": "Foyer. Chaque champ est optionnel.",
"additionalProperties": false
},
"dettes": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"capitalRestantDu"
],
"properties": {
"type": {
"enum": [
"immobilier",
"lombard",
"autre"
],
"type": "string",
"description": "Nature de la dette. « lombard » pour un crédit adossé à un contrat."
},
"assiette": {
"enum": [
"av",
"immobilier",
"autre"
],
"type": "string",
"description": "Bien qui garantit la dette. « av » lorsque le crédit Lombard est adossé à l'assurance-vie."
},
"echeance": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}(-\\d{2})?$",
"description": "Échéance, AAAA-MM ou AAAA-MM-JJ."
},
"mensualite": {
"type": "number",
"minimum": 0,
"description": "Mensualité, en euros."
},
"capitalRestantDu": {
"type": "number",
"minimum": 0,
"description": "Capital restant dû, en euros."
}
},
"additionalProperties": false
},
"description": "Dettes, dont le crédit Lombard adossé à l'assurance-vie."
},
"retraite": {
"type": "object",
"properties": {
"ageDepart": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Âge prévu de cessation d'activité."
},
"tmiSortieSaisie": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Tranche marginale d'imposition à la retraite, en décimal, si elle est connue."
},
"pensionEstimeeAnnuelle": {
"type": "number",
"minimum": 0,
"description": "Pension annuelle estimée, en euros."
}
},
"description": "Retraite. Chaque champ est optionnel.",
"additionalProperties": false
},
"objectifs": {
"type": "array",
"items": {
"enum": [
"reduire_ir",
"preparer_retraite",
"transmettre",
"liquidite"
],
"type": "string"
},
"description": "Buts du calcul. Au moins un objectif permet de chiffrer. Absents : une question est posée, sans montant."
},
"enveloppes": {
"type": "object",
"properties": {
"av": {
"type": "array",
"items": {
"type": "object",
"required": [
"valeur"
],
"properties": {
"partUC": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Fraction du contrat en unités de compte, entre 0 et 1. Les montants en euros sont montantUC et montantFondsEuros."
},
"valeur": {
"type": "number",
"minimum": 0,
"description": "Valeur actuelle du contrat, en euros."
},
"montantUC": {
"type": "number",
"minimum": 0,
"description": "Montant en unités de compte, en euros."
},
"versements": {
"type": "number",
"minimum": 0,
"description": "Sommes versées sur le contrat, en euros."
},
"plusValuesUC": {
"type": "number",
"minimum": 0,
"description": "Gains des unités de compte, en euros."
},
"primesParAge": {
"type": "array",
"items": {
"type": "object",
"required": [
"montant",
"ageAuVersement"
],
"properties": {
"montant": {
"type": "number",
"minimum": 0,
"description": "Montant de la prime, en euros."
},
"ageAuVersement": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Âge de l'assuré au versement de la prime."
}
},
"additionalProperties": false
},
"description": "Primes avec l'âge de l'assuré au versement."
},
"ancienneteAns": {
"type": "number",
"minimum": 0,
"description": "Ancienneté du contrat, en années."
},
"primesApres70": {
"type": "number",
"minimum": 0,
"description": "Primes versées à partir des 70 ans de l'assuré, en euros."
},
"primesAvant70": {
"type": "number",
"minimum": 0,
"description": "Primes versées avant les 70 ans de l'assuré, en euros."
},
"plusValueLatente": {
"type": "number",
"description": "Plus-value latente du contrat, en euros. Une moins-value est un nombre négatif."
},
"montantFondsEuros": {
"type": "number",
"minimum": 0,
"description": "Montant en fonds euros, en euros."
},
"plusValuesFondsEuros": {
"type": "number",
"minimum": 0,
"description": "Gains du fonds euros, en euros."
}
},
"description": "Contrat d'assurance-vie.",
"additionalProperties": false
},
"description": "Contrats d'assurance-vie."
},
"cto": {
"type": "object",
"required": [
"valeur"
],
"properties": {
"valeur": {
"type": "number",
"minimum": 0,
"description": "Valeur du compte-titres, en euros."
},
"plusValueLatente": {
"type": "number",
"description": "Plus-value latente du compte-titres, en euros."
},
"versementsProgrammesMensuels": {
"type": "number",
"minimum": 0,
"description": "Versements programmés mensuels, en euros."
}
},
"description": "Compte-titres ordinaire.",
"additionalProperties": false
},
"pea": {
"type": "object",
"required": [
"valeur"
],
"properties": {
"valeur": {
"type": "number",
"minimum": 0,
"description": "Valeur actuelle du plan, en euros."
},
"versements": {
"type": "number",
"minimum": 0,
"description": "Total des versements, en euros."
},
"ancienneteAns": {
"type": "number",
"minimum": 0,
"description": "Ancienneté du plan, en années."
},
"plusValueLatente": {
"type": "number",
"description": "Plus-value latente, en euros. Une moins-value est un nombre négatif."
}
},
"description": "PEA.",
"additionalProperties": false
},
"per": {
"type": "object",
"required": [
"valeur"
],
"properties": {
"valeur": {
"type": "number",
"minimum": 0,
"description": "Valeur du PER, en euros."
},
"plusValueLatente": {
"type": "number",
"description": "Plus-value latente du PER, en euros."
},
"versementsDeduits": {
"type": "number",
"minimum": 0,
"description": "Versements déjà déduits, en euros."
},
"versementsNonDeduits": {
"type": "number",
"minimum": 0,
"description": "Versements non déduits, en euros."
}
},
"description": "Plan d'épargne retraite déjà ouvert.",
"additionalProperties": false
},
"peaPme": {
"type": "object",
"required": [
"valeur"
],
"properties": {
"valeur": {
"type": "number",
"minimum": 0,
"description": "Valeur du PEA-PME, en euros."
},
"versements": {
"type": "number",
"minimum": 0,
"description": "Versements sur le PEA-PME, en euros."
},
"plusValueLatente": {
"type": "number",
"description": "Plus-value latente du PEA-PME, en euros."
}
},
"description": "PEA-PME. Sa fiscalité de sortie n'est pas chiffrée.",
"additionalProperties": false
},
"immobilier": {
"type": "array",
"items": {
"type": "object",
"required": [
"residencePrincipale"
],
"properties": {
"valeur": {
"type": "number",
"minimum": 0,
"description": "Valeur du bien, en euros."
},
"bienCommun": {
"type": "boolean",
"description": "true lorsque le bien est commun aux deux membres du couple."
},
"mensualite": {
"type": "number",
"minimum": 0,
"description": "Mensualité du crédit, en euros."
},
"capitalRestantDu": {
"type": "number",
"minimum": 0,
"description": "Capital restant dû du crédit du bien, en euros."
},
"residencePrincipale": {
"type": "boolean",
"description": "true lorsque le bien est la résidence principale."
}
},
"additionalProperties": false
},
"description": "Biens immobiliers."
},
"liquidites": {
"anyOf": [
{
"type": "number",
"minimum": 0,
"description": "Total des liquidités, en euros, lorsque le détail n'est pas connu."
},
{
"type": "object",
"required": [
"total"
],
"properties": {
"total": {
"type": "number",
"minimum": 0,
"description": "Total des liquidités, en euros."
},
"livretA": {
"type": "number",
"minimum": 0,
"description": "Part placée sur un Livret A, en euros. Elle ne dépasse pas le total."
}
},
"additionalProperties": false
}
],
"description": "Liquidités : un montant, ou un total avec la part de Livret A."
},
"titresSociete": {
"type": "object",
"required": [
"valeurTitres",
"prixRevient",
"nbEnfants",
"ageDirigeant"
],
"properties": {
"eccDuree": {
"type": "number",
"minimum": 0,
"description": "Durée de l'engagement collectif, en années."
},
"eicDuree": {
"type": "number",
"minimum": 0,
"description": "Durée de l'engagement individuel, en années."
},
"nbEnfants": {
"type": "integer",
"exclusiveMinimum": 0
},
"prixRevient": {
"type": "number",
"minimum": 0,
"description": "Prix de revient des titres, en euros."
},
"ageDirigeant": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Âge du dirigeant."
},
"valeurTitres": {
"type": "number",
"minimum": 0,
"description": "Valeur des titres de la société, en euros."
},
"horizonCession": {
"type": "number",
"minimum": 0,
"description": "Horizon de cession, en années."
}
},
"description": "Parts de société. Le chiffrage Dutreil n'est pas publié dans cette version.",
"additionalProperties": false
}
},
"description": "Enveloppes détenues. Chaque champ est optionnel.",
"additionalProperties": false
},
"horizonAns": {
"type": "number",
"const": 10,
"description": "Horizon du chiffrage, en années. Seule la valeur 10 est acceptée. Absente : 10 ans."
},
"hypotheses": {
"type": "object",
"properties": {
"rendementAnnuel": {
"type": "number",
"maximum": 1,
"description": "Rendement annuel saisi, strictement supérieur à -1 et au plus égal à 1. Absent : les valorisations restent constantes.",
"exclusiveMinimum": -1
}
},
"description": "Hypothèses explicites. Aucun taux n'est inventé.",
"additionalProperties": false
},
"transmission": {
"type": "object",
"properties": {
"donateurs": {
"enum": [
1,
2
],
"type": "number",
"description": "Nombre de donateurs de la transmission. Absent : 1, sauf si la situation est couple et que le bien est indiqué comme commun."
},
"bienCommun": {
"type": "boolean",
"description": "true lorsque le bien transmis est commun. Avec une situation couple, deux donateurs sont alors retenus."
},
"beneficiaires": {
"type": "array",
"items": {
"type": "object",
"required": [
"lien",
"nombre"
],
"properties": {
"lien": {
"enum": [
"enfant",
"petit_enfant",
"arriere_petit_enfant",
"conjoint",
"frere_soeur",
"neveu_niece",
"autre"
],
"type": "string",
"description": "Lien avec le bénéficiaire."
},
"nombre": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"description": "Personnes qui recevraient une donation."
},
"valeurATransmettre": {
"type": "number",
"minimum": 0,
"description": "Montant que le foyer peut donner, en euros, hors enveloppes bloquées. La dette qui garantit un contrat est déjà déduite du patrimoine net."
},
"donationsAnterieures": {
"type": "array",
"items": {
"type": "object",
"required": [
"montant"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date de la donation, AAAA-MM-JJ."
},
"lien": {
"enum": [
"enfant",
"petit_enfant",
"arriere_petit_enfant",
"conjoint",
"frere_soeur",
"neveu_niece",
"autre",
"ligne_directe"
],
"type": "string",
"description": "Lien entre le donateur et le donataire."
},
"sens": {
"enum": [
"recue",
"consentie"
],
"type": "string",
"description": "Donation reçue ou consentie."
},
"montant": {
"type": "number",
"minimum": 0,
"description": "Montant de la donation antérieure, en euros."
},
"donateur": {
"enum": [
1,
2
],
"type": "number",
"description": "Donateur de la donation antérieure, 1 ou 2. Absent : le donateur 1 lorsque deux donateurs sont retenus."
},
"beneficiaire": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "string",
"const": "tous"
}
],
"description": "Bénéficiaire de la donation antérieure : index à partir de 1, ou tous. Absent : le premier, et l'hypothèse est indiquée."
},
"ancienneteAns": {
"type": "number",
"minimum": 0,
"description": "Ancienneté de la donation, en années."
}
},
"additionalProperties": false
},
"description": "Donations déjà réalisées."
},
"ageUsufruitierConjoint": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Âge en années révolues du second donateur. Absent : l'âge du conjoint, sinon le même âge, signalé."
}
},
"description": "Transmission. Chaque champ est optionnel.",
"additionalProperties": false
},
"dateReference": {
"$ref": "#/properties/transmission/properties/donationsAnterieures/items/properties/date",
"description": "Date de référence des calculs, AAAA-MM-JJ. Absente : la date du jour n'est pas utilisée pour le rappel des donations."
},
"capaciteEpargneMensuelle": {
"type": "number",
"minimum": 0,
"description": "Somme que le foyer peut mettre de côté chaque mois, en euros."
}
},
"description": "Profil patrimonial. Chaque champ est optionnel. Les montants sont en euros, les taux entre 0 et 1, les âges entre 0 et 120.",
"additionalProperties": false
}{
"title": "Marcel Patrimoine",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}validate_results — Vérifier la cohérence de résultats Marcel
Contrôle la cohérence de plusieurs résultats Marcel. Entrée : liste de résultats (moteur, identifiant de trace, statut, version de règles, résultat). Sortie : statut blocked en cas de conflit temporel (TEMPORAL_CONFLICT) ou de moteur blocked, et un avertissement de règle obsolète lorsqu'un résultat cite une règle déjà remplacée, dont CGI.200-A.PFU_30PCT depuis le 1er janvier 2026. Les identifiants de trace ne sont pas vérifiés : un traceId inconnu n'est pas détecté. La réponse le dit dans portee et identifiantsVerifies.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"engine",
"traceId",
"status"
],
"properties": {
"engine": {
"type": "string"
},
"result": {
"type": "object",
"additionalProperties": {}
},
"status": {
"type": "string"
},
"traceId": {
"type": "string"
},
"rulesVersion": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Vérifier la cohérence de résultats Marcel",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}marcel_financial_twin — Projeter un profil patrimonial complet
Calcule la projection patrimoniale d'un profil : revenu à la retraite par source, écart avec l'objectif, chronologie et scénarios. Entrées : profil (année de naissance, revenus, pension brute, revenu fiscal de référence d'avis, parts) et actifs (LMNP, résidence principale, PER, assurance-vie). Sortie : revenu par source, écart, chronologie et audit. Le net de pension est chiffré à partir du brut, du revenu fiscal de référence d'avis et des parts, ou d'un net fourni avec sa provenance ; sinon il est null. Calcul non couvert par les jeux de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"profile"
],
"properties": {
"assets": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"id",
"inputs"
],
"properties": {
"id": {
"type": "string",
"description": "Identifiant unique de l'actif"
},
"type": {
"enum": [
"LMNP",
"RP",
"PER",
"AV"
],
"type": "string",
"description": "Type d'actif"
},
"inputs": {
"type": "object",
"description": "Paramètres de l'actif (prix, loyers, crédit...)",
"additionalProperties": {
"type": "number"
}
}
},
"additionalProperties": false
},
"description": "Actifs patrimoniaux (LMNP, RP, PER, AV). Optionnel."
},
"profile": {
"type": "object",
"required": [
"birthYear"
],
"properties": {
"rfr": {
"type": "object",
"required": [
"value",
"source",
"year",
"status"
],
"properties": {
"year": {
"type": "integer",
"description": "Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."
},
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "tax_notice"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "RFR d'avis d'impôt. Requis avec brut + parts pour un net foyer.",
"additionalProperties": false
},
"rfrYear": {
"type": "integer",
"description": "Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."
},
"rfrValue": {
"type": "number",
"exclusiveMinimum": 0
},
"birthYear": {
"type": "integer",
"maximum": 2005,
"minimum": 1940,
"description": "Année de naissance"
},
"pensionNet": {
"type": "object",
"required": [
"value",
"source",
"status"
],
"properties": {
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "caller_provided"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "Net fourni avec provenance. Alternative : RFR d'avis + brut → fiscaliserFoyer.",
"additionalProperties": false
},
"nombreParts": {
"enum": [
1,
2
],
"type": "number",
"description": "Parts fiscales. Distinct du nombre de pensionnés."
},
"tauxCsgSaisi": {
"enum": [
"exonere",
"reduit",
"median",
"normal"
],
"type": "string"
},
"monthlyIncome": {
"type": "number",
"description": "Revenu mensuel net actuel en euros",
"exclusiveMinimum": 0
},
"estimatedPension": {
"type": "number",
"description": "Net de pension pris en compte seulement avec pensionNetSource=caller_provided.",
"exclusiveMinimum": 0
},
"pensionNetSource": {
"type": "string",
"const": "caller_provided",
"description": "Marque estimatedPension comme flux fourni."
},
"pensionBrutMonthly": {
"type": "number",
"description": "Pension brute de liquidation.",
"exclusiveMinimum": 0
},
"annualTaxableIncome": {
"type": "number",
"description": "Revenu net imposable annuel",
"exclusiveMinimum": 0
},
"retirementTargetAge": {
"type": "integer",
"default": 67,
"maximum": 75,
"minimum": 60,
"description": "Âge cible de retraite"
},
"nombrePensionnesFoyer": {
"enum": [
1,
2
],
"type": "number",
"description": "Pensionnés du foyer. Distinct du nombre de parts."
},
"targetRetirementIncome": {
"type": "number",
"description": "Objectif revenu mensuel à la retraite",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"scenarioLabel": {
"type": "string",
"description": "Label de la simulation pour le snapshot"
}
},
"additionalProperties": false
}{
"title": "Projeter un profil patrimonial complet",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}marcel_find_gap — Mesurer l'écart avec un revenu cible à la retraite
Calcule l'écart entre le revenu projeté à la retraite et un objectif, et l'effort d'épargne mensuel en PER et en assurance-vie qui le comble. Entrées : année de naissance, revenu mensuel, revenu imposable annuel, pension brute ou net fourni avec sa provenance, objectif. Sortie : écart, effort mensuel par enveloppe. Sans net chiffrable, la pension nette est null. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"birthYear",
"monthlyIncome"
],
"properties": {
"rfr": {
"type": "object",
"required": [
"value",
"source",
"year",
"status"
],
"properties": {
"year": {
"type": "integer",
"description": "Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."
},
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "tax_notice"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "RFR d'avis d'impôt. Requis avec brut + parts pour un net foyer.",
"additionalProperties": false
},
"rfrYear": {
"type": "integer",
"description": "Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."
},
"rfrValue": {
"type": "number",
"exclusiveMinimum": 0
},
"birthYear": {
"type": "integer",
"description": "Année de naissance"
},
"pensionNet": {
"type": "object",
"required": [
"value",
"source",
"status"
],
"properties": {
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "caller_provided"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "Net fourni avec provenance. Alternative : RFR d'avis + brut → fiscaliserFoyer.",
"additionalProperties": false
},
"nombreParts": {
"enum": [
1,
2
],
"type": "number",
"description": "Parts fiscales. Distinct du nombre de pensionnés."
},
"tauxCsgSaisi": {
"enum": [
"exonere",
"reduit",
"median",
"normal"
],
"type": "string"
},
"monthlyIncome": {
"type": "number",
"description": "Revenu mensuel net en euros",
"exclusiveMinimum": 0
},
"retirementAge": {
"type": "integer",
"maximum": 75,
"minimum": 60,
"description": "Âge cible de retraite"
},
"existingAssets": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"estimatedMonthlyIncome"
],
"properties": {
"type": {
"type": "string"
},
"estimatedMonthlyIncome": {
"type": "number"
}
},
"additionalProperties": false
},
"description": "Actifs existants et leur revenu mensuel estimé"
},
"estimatedPension": {
"type": "number",
"description": "Net de pension pris en compte seulement avec pensionNetSource=caller_provided.",
"exclusiveMinimum": 0
},
"pensionNetSource": {
"type": "string",
"const": "caller_provided",
"description": "Marque estimatedPension comme flux fourni."
},
"pensionBrutMonthly": {
"type": "number",
"description": "Pension brute de liquidation.",
"exclusiveMinimum": 0
},
"annualTaxableIncome": {
"type": "number",
"description": "Revenu net imposable annuel",
"exclusiveMinimum": 0
},
"nombrePensionnesFoyer": {
"enum": [
1,
2
],
"type": "number",
"description": "Pensionnés du foyer. Distinct du nombre de parts."
},
"targetRetirementIncome": {
"type": "number",
"description": "Objectif de revenu mensuel à la retraite",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Mesurer l'écart avec un revenu cible à la retraite",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}marcel_compare_scenarios — Comparer des scénarios patrimoniaux
Compare plusieurs scénarios d'un même profil : âge de départ, versements PER ou assurance-vie, loyers LMNP. Entrées : profil, actifs, liste de modifications par scénario. Sortie : résultat de chaque scénario et écarts, sans désignation d'une option. Changer l'âge ne recalcule pas la liquidation de la pension. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"base",
"scenarios"
],
"properties": {
"base": {
"type": "object",
"required": [
"monthlyIncome",
"annualTaxableIncome",
"birthYear"
],
"properties": {
"rfr": {
"type": "object",
"required": [
"value",
"source",
"year",
"status"
],
"properties": {
"year": {
"type": "integer",
"description": "Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."
},
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "tax_notice"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "RFR d'avis.",
"additionalProperties": false
},
"birthYear": {
"type": "integer"
},
"pensionNet": {
"type": "object",
"required": [
"value",
"source",
"status"
],
"properties": {
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "caller_provided"
},
"status": {
"type": "string",
"const": "provided"
}
},
"additionalProperties": false
},
"nombreParts": {
"enum": [
1,
2
],
"type": "number"
},
"monthlyIncome": {
"type": "number",
"exclusiveMinimum": 0
},
"retirementAge": {
"type": "integer"
},
"estimatedPension": {
"type": "number",
"description": "Net de pension pris en compte seulement avec pensionNetSource=caller_provided.",
"exclusiveMinimum": 0
},
"pensionNetSource": {
"type": "string",
"const": "caller_provided",
"description": "Marque estimatedPension comme flux fourni."
},
"existingPerMonthly": {
"type": "number"
},
"pensionBrutMonthly": {
"type": "number",
"description": "Brut de liquidation.",
"exclusiveMinimum": 0
},
"annualTaxableIncome": {
"type": "number",
"exclusiveMinimum": 0
},
"nombrePensionnesFoyer": {
"enum": [
1,
2
],
"type": "number"
}
},
"description": "Situation de base — net pension seulement si fiscaliserFoyer ou caller_provided",
"additionalProperties": false
},
"scenarios": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"modification"
],
"properties": {
"label": {
"type": "string",
"description": "Nom du scénario"
},
"modification": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"enum": [
"RETIREMENT_AGE",
"PER_CONTRIBUTION",
"AV_CONTRIBUTION",
"LMNP_LOYERS"
],
"type": "string"
},
"value": {
"type": "number"
}
},
"description": "Modification à appliquer",
"additionalProperties": false
}
},
"additionalProperties": false
},
"description": "Scénarios à comparer"
}
},
"additionalProperties": false
}{
"title": "Comparer des scénarios patrimoniaux",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}marcel_revenue_at_retirement — Calculer le revenu net à la retraite par source
Calcule le revenu mensuel net à la retraite par source : pension, PER, LMNP, assurance-vie, SCPI. Entrées : profil et actifs. Sortie : montant net par source, avec les règles appliquées (barème de l'impôt sur le revenu, prélèvements sociaux, abattements). Calcul non couvert par les jeux de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"pension"
],
"properties": {
"av": {
"type": "object",
"required": [
"capitalAtRetirement"
],
"properties": {
"yearsOfDrawdown": {
"type": "integer",
"default": 10
},
"capitalAtRetirement": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"per": {
"type": "object",
"required": [
"capitalAtRetirement"
],
"properties": {
"capitalAtRetirement": {
"type": "number",
"exclusiveMinimum": 0
},
"yearsOfFractionation": {
"type": "integer",
"default": 10
},
"taxableIncomeAtRetirement": {
"type": "number"
}
},
"additionalProperties": false
},
"lmnp": {
"type": "object",
"required": [
"annualNetIncome"
],
"properties": {
"annualNetIncome": {
"type": "number",
"description": "Revenu LMNP net annuel après charges"
}
},
"additionalProperties": false
},
"scpi": {
"type": "object",
"required": [
"annualDistribution"
],
"properties": {
"annualDistribution": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"pension": {
"type": "object",
"required": [
"monthlyNet"
],
"properties": {
"monthlyNet": {
"type": "number",
"description": "Pension nette mensuelle",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Calculer le revenu net à la retraite par source",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}marcel_simulate_decision — Mesurer l'effet d'une décision sur la trajectoire
Calcule l'effet d'une décision (dépense, retrait, financement) sur la trajectoire patrimoniale, selon la source de financement : assurance-vie, PEA, compte-titres, PER, liquidités, crédit lombard. Entrées : profil, actifs, décision. Sortie : coût fiscal immédiat et effet sur le revenu futur de chaque source. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"profile",
"decision"
],
"properties": {
"assets": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"id",
"inputs"
],
"properties": {
"id": {
"type": "string",
"description": "Identifiant unique — doit contenir le type en minuscules, ex. 'av-1', 'pea-1'"
},
"type": {
"enum": [
"LMNP",
"RP",
"PER",
"AV",
"PEA",
"CTO",
"SCPI"
],
"type": "string",
"description": "Type d'actif"
},
"inputs": {
"type": "object",
"description": "Paramètres de l'actif. valeurActuelle : valeur de l'enveloppe aujourd'hui. versementsCumules : total versé depuis l'ouverture, base non taxable ; l'écart avec valeurActuelle est le gain imposable. Sans versementsCumules, la base est reconstituée par capitalisation et baseFiscale vaut ESTIMATED. Sans versementsCumules ni capitalInitial, l'imposition n'est pas calculée et la réponse est une erreur. openingYear : année d'ouverture du contrat, telle que fournie ; elle fixe l'ancienneté fiscale (assurance-vie : 8 ans, PEA : 5 ans), reprise dans le champ detail de chaque option. Autres champs : versementMensuel, tauxRendementAnnuel, liquidationYear, startYear, capitalInitial lorsque valeurActuelle est inconnue.",
"additionalProperties": {
"type": "number"
}
}
},
"additionalProperties": false
},
"description": "Actifs patrimoniaux détenus"
},
"fiscal": {
"type": "object",
"properties": {
"tmi": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI du foyer en taux décimal (0.30 pour 30 %), lorsqu'elle est connue. Requise pour un retrait de PER : absente, la réponse est une erreur 400."
},
"couple": {
"type": "boolean",
"description": "Situation de couple — double l'abattement AV"
},
"anciennete": {
"type": "object",
"description": "Ancienneté par enveloppe en années, lorsque openingYear est absent des entrées de l'actif. Avec openingYear, l'ancienneté est calculée par le moteur.",
"additionalProperties": {
"type": "number"
}
},
"liquidites": {
"type": "number",
"description": "Liquidités disponibles hors enveloppes"
}
},
"description": "Contexte fiscal pour le calcul des retraits",
"additionalProperties": false
},
"lombard": {
"type": "object",
"properties": {
"tauxAnnuel": {
"type": "number",
"default": 0.042,
"description": "Taux annuel du crédit lombard"
},
"composition": {
"type": "object",
"description": "Composition du nantissement : { ACTIONS, OBLIGATAIRE, FONDS_EUROS, DIVERSIFIE, MONETAIRE } — détermine la quotité de financement",
"additionalProperties": {
"type": "number"
}
},
"dureeAnnees": {
"type": "integer",
"description": "Durée du crédit en années. Par défaut, alignée sur l'horizon jusqu'à la retraite pour rester comparable aux cessions. Une durée différente rend la comparaison invalide et déclenche un avertissement."
},
"portefeuilleNanti": {
"type": "number",
"description": "Valeur du portefeuille apporté en garantie"
}
},
"description": "Option de financement par nantissement de portefeuille — à inclure pour comparer avec les cessions",
"additionalProperties": false
},
"profile": {
"type": "object",
"required": [
"birthYear"
],
"properties": {
"rfr": {
"type": "object",
"required": [
"value",
"source",
"year",
"status"
],
"properties": {
"year": {
"type": "integer",
"description": "Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."
},
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "tax_notice"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "RFR d'avis d'impôt. Requis avec brut + parts pour un net foyer.",
"additionalProperties": false
},
"rfrYear": {
"type": "integer",
"description": "Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."
},
"rfrValue": {
"type": "number",
"exclusiveMinimum": 0
},
"birthYear": {
"type": "integer",
"maximum": 2005,
"minimum": 1940,
"description": "Année de naissance"
},
"pensionNet": {
"type": "object",
"required": [
"value",
"source",
"status"
],
"properties": {
"value": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"const": "caller_provided"
},
"status": {
"type": "string",
"const": "provided"
}
},
"description": "Net fourni avec provenance. Alternative : RFR d'avis + brut → fiscaliserFoyer.",
"additionalProperties": false
},
"nombreParts": {
"enum": [
1,
2
],
"type": "number",
"description": "Parts fiscales. Distinct du nombre de pensionnés."
},
"tauxCsgSaisi": {
"enum": [
"exonere",
"reduit",
"median",
"normal"
],
"type": "string"
},
"monthlyIncome": {
"type": "number",
"description": "Revenu mensuel net actuel en euros",
"exclusiveMinimum": 0
},
"estimatedPension": {
"type": "number",
"description": "Net de pension pris en compte seulement avec pensionNetSource=caller_provided.",
"exclusiveMinimum": 0
},
"pensionNetSource": {
"type": "string",
"const": "caller_provided",
"description": "Marque estimatedPension comme flux fourni."
},
"pensionBrutMonthly": {
"type": "number",
"description": "Pension brute de liquidation.",
"exclusiveMinimum": 0
},
"annualTaxableIncome": {
"type": "number",
"description": "Revenu net imposable annuel",
"exclusiveMinimum": 0
},
"retirementTargetAge": {
"type": "integer",
"default": 67,
"maximum": 75,
"minimum": 60,
"description": "Âge cible de retraite"
},
"nombrePensionnesFoyer": {
"enum": [
1,
2
],
"type": "number",
"description": "Pensionnés du foyer. Distinct du nombre de parts."
},
"targetRetirementIncome": {
"type": "number",
"description": "Objectif revenu mensuel à la retraite",
"exclusiveMinimum": 0
}
},
"description": "Profil du foyer. Le net de pension est chiffré à partir du brut, du revenu fiscal de référence d'avis et des parts, ou d'un net fourni avec sa provenance ; sinon il est null.",
"additionalProperties": false
},
"decision": {
"type": "object",
"required": [
"type",
"label"
],
"properties": {
"type": {
"enum": [
"PURCHASE",
"PROPERTY_BUY",
"PROPERTY_SELL",
"EXTRA_SAVINGS",
"RETIREMENT_AGE",
"DONATION",
"CAREER_CHANGE"
],
"type": "string",
"description": "Type de décision. PURCHASE = achat consommé (véhicule, voyage). PROPERTY_BUY = acquisition immobilière. EXTRA_SAVINGS = effort d'épargne supplémentaire. RETIREMENT_AGE = changement d'âge de départ. DONATION = transmission anticipée."
},
"year": {
"type": "integer",
"description": "Année d'exécution"
},
"label": {
"type": "string",
"description": "Libellé de la décision, ex. 'Véhicule' ou 'Résidence secondaire'"
},
"amount": {
"type": "number",
"description": "Montant de l'opération en euros"
},
"params": {
"type": "object",
"description": "Paramètres spécifiques. PROPERTY_BUY : apport, emprunt, dureeCredit, tauxCredit, loyersAnnuels (si locatif), chargesAnnuelles. DONATION : nombreBeneficiaires.",
"additionalProperties": {}
},
"targetAge": {
"type": "integer",
"description": "Pour RETIREMENT_AGE : nouvel âge de départ"
},
"monthlyAmount": {
"type": "number",
"description": "Pour EXTRA_SAVINGS : montant mensuel supplémentaire"
}
},
"description": "Décision à simuler",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Mesurer l'effet d'une décision sur la trajectoire",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_rachat — Calculer un rachat de trimestres
Calcule le coût d'un rachat de trimestres (versement pour la retraite) au barème de la CNAV 2026 et le gain de pension correspondant. Entrées : âge, revenu, nombre de trimestres, option. Sortie : coût brut, coût après déduction, gain de pension annuel. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ageRachat",
"revenuAnnuelMoyen",
"option",
"nbTrimestres"
],
"properties": {
"option": {
"enum": [
"taux_seul",
"taux_et_duree"
],
"type": "string",
"description": "taux_seul : améliore le taux ; taux_et_duree : allonge aussi la durée"
},
"ageRachat": {
"type": "integer",
"maximum": 66,
"minimum": 20,
"description": "Âge au moment du versement"
},
"nbTrimestres": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "Nombre de trimestres à racheter"
},
"trimestresRequis": {
"type": "integer",
"description": "Durée requise pour la génération (défaut 172)"
},
"revenuAnnuelMoyen": {
"type": "number",
"description": "Revenu annuel moyen — détermine la tranche A/B/C",
"exclusiveMinimum": 0
},
"salaireAnnuelMoyen": {
"type": "number",
"description": "Salaire moyen (mode proxy si pension inconnue)",
"exclusiveMinimum": 0
},
"trimestresManquants": {
"type": "integer",
"minimum": 0,
"description": "Trimestres manquants pour le taux plein"
},
"pensionAnnuelleEstimee": {
"type": "number",
"description": "Pension annuelle estimée (mode exact)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Calculer un rachat de trimestres",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_per — Calculer la déduction d'un versement PER
Calcule le disponible fiscal d'un versement PER (CGI art. 163 quatervicies), la part déductible, l'effet sur l'impôt sur le revenu et l'imposition de la part déduite à la sortie. Entrées : revenus professionnels, versement, tranche d'entrée, hypothèse de sortie. Sortie : disponible, part déductible, effet à l'entrée et à la sortie. La capitalisation n'est pas projetée. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"versement",
"revenusProN1",
"tmiEntree"
],
"properties": {
"tmiEntree": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI actuelle en décimal (ex: 0.30)"
},
"versement": {
"type": "number",
"description": "Montant versé sur le PER",
"exclusiveMinimum": 0
},
"revenusProN1": {
"type": "number",
"description": "Revenus professionnels N-1",
"exclusiveMinimum": 0
},
"tmiSortieSaisie": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI estimée à la retraite (prioritaire)"
},
"pensionEstimeeAnnuelle": {
"type": "number",
"description": "Pension annuelle pour estimation de la TMI de sortie",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Calculer la déduction d'un versement PER",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_remuneration — Comparer les rémunérations d'un dirigeant de SASU
Compare les voies de rémunération d'un dirigeant de SASU (salaire, dividende, mixte) pour un même bénéfice engagé. Entrées : bénéfice, niveaux de salaire, objectif, allocation chômage éventuelle. Sortie : net, droits à retraite et protection sociale de chaque voie. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"beneficeDisponible"
],
"properties": {
"objectif": {
"enum": [
"NET_IMMEDIAT",
"DROITS_RETRAITE",
"PROTECTION_SOCIALE",
"PRESERVER_ARE",
"EQUILIBRE"
],
"type": "string",
"description": "Objectif déclaré pour l'ordre d'affichage (défaut EQUILIBRE)"
},
"situation": {
"type": "object",
"properties": {
"areMensuelle": {
"type": "number",
"description": "Allocation chômage mensuelle en cours"
},
"areMoisRestants": {
"type": "integer",
"description": "Mois de droits restants"
},
"trimestresAcquis": {
"type": "integer",
"description": "Trimestres déjà validés"
},
"trimestresRequis": {
"type": "integer",
"description": "Trimestres nécessaires au taux plein"
}
},
"additionalProperties": false
},
"eligiblePme": {
"type": "boolean",
"description": "Éligible au taux réduit PME 15 % (défaut true)"
},
"partsFiscales": {
"type": "number",
"description": "Parts fiscales (défaut 1)"
},
"beneficeDisponible": {
"type": "number",
"description": "Bénéfice avant IS disponible dans la société",
"exclusiveMinimum": 0
},
"autresRevenusImposables": {
"type": "number",
"description": "Autres revenus imposables du foyer"
}
},
"additionalProperties": false
}{
"title": "Comparer les rémunérations d'un dirigeant de SASU",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_chemin — Comparer des chemins de sortie de trésorerie
Compare, pour un même bénéfice engagé, trois chemins : conserver en société, sortir en dividende, sortir en salaire, puis placer et sortir. Entrées : bénéfice, actif, rendement, horizon. Sortie : prélèvements de chaque étape et net final de chaque chemin. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"beneficeDisponible",
"actif",
"rendementAnnuel",
"horizonAnnees"
],
"properties": {
"actif": {
"enum": [
"ETF_CAPITALISANT",
"ACTION_UE",
"ACTION_HORS_UE"
],
"type": "string",
"description": "Classe d'actif"
},
"eligiblePme": {
"type": "boolean",
"description": "Éligible au taux réduit PME (défaut true)"
},
"horizonAnnees": {
"type": "integer",
"description": "Horizon de placement en années",
"exclusiveMinimum": 0
},
"rendementAnnuel": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Performance annuelle attendue (ex: 0.07)"
},
"beneficeDisponible": {
"type": "number",
"description": "Bénéfice avant IS disponible",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Comparer des chemins de sortie de trésorerie",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_allocation — Comparer un même actif dans plusieurs enveloppes
Compare le capital net après fiscalité d'un même actif détenu en PEA, assurance-vie, compte-titres personnel, compte-titres de société ou holding, à rendement identique. Entrées : montant, rendement, horizon, enveloppes candidates. Sortie : capital net par enveloppe et règles appliquées. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"asset",
"candidates",
"objective"
],
"properties": {
"asset": {
"type": "object",
"required": [
"type",
"expectedReturn",
"amount",
"horizonYears"
],
"properties": {
"type": {
"type": "string",
"description": "Type d'actif : ETF_CAPITALISANT, ACTION_UE, SCPI, etc."
},
"amount": {
"type": "number",
"description": "Capital initial",
"exclusiveMinimum": 0
},
"horizonYears": {
"type": "integer",
"description": "Horizon en années",
"exclusiveMinimum": 0
},
"expectedReturn": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Rendement annuel attendu (ex: 0.07)"
}
},
"additionalProperties": false
},
"objective": {
"enum": [
"CAPITALISATION",
"REVENU_RETRAITE",
"CONSOMMATION",
"TRANSMISSION"
],
"type": "string",
"description": "Objectif patrimonial"
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"required": [
"entityType",
"accountType"
],
"properties": {
"tmi": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI du détenteur en taux décimal, seulement si la personne la donne. Requise pour SCPI_PERSO et PER_VS_AV : absente, l'API répond 400."
},
"tauxIS": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Taux IS pour les sociétés"
},
"entityType": {
"enum": [
"PERSON",
"HOLDING",
"SASU"
],
"type": "string",
"description": "Type de détenteur"
},
"accountType": {
"type": "string",
"description": "PEA, AV, CTO, CTO_SOCIETE, CAPI_IS"
},
"openingYear": {
"type": "integer",
"description": "Année d'ouverture (important pour AV et PEA)"
},
"tmiRetraite": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "TMI à la retraite, requise pour PER_VS_AV. Distincte de la TMI actuelle."
}
},
"additionalProperties": false
},
"minItems": 2,
"description": "Véhicules à comparer — minimum 2"
},
"situationFamiliale": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Abattement assurance-vie après 8 ans. seul : 4 600 euros, couple : 9 200 euros. Sans ce champ, l'abattement n'est pas appliqué."
}
},
"additionalProperties": false
}{
"title": "Comparer un même actif dans plusieurs enveloppes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}registre_reglementaire — Lire une règle du registre à une date
Lit le registre réglementaire de Marcel : la règle en vigueur à une date, avec sa version, sa source officielle et sa valeur. Entrées : famille de règle (PFU_GENERAL, PS_GENERAL, IS_TAUX_NORMAL, PASS…), date. Sortie : règle, valeur, source, dates d'effet. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"family"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date au format YYYY-MM-DD (défaut : aujourd'hui)"
},
"family": {
"type": "string",
"description": "Famille de règle : PFU_GENERAL, PS_GENERAL, IS_TAUX_NORMAL, IS_TAUX_REDUIT, PER_DEDUCTION_ENTREE, PEA_PLAFOND, AV_ABATTEMENT, PASS, etc."
}
},
"additionalProperties": false
}{
"title": "Lire une règle du registre à une date",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_pv_immo_ir — Calculer une plus-value immobilière des particuliers
Calcule la plus-value immobilière imposable à l'impôt sur le revenu (particulier ou SCI à l'IR) : abattements pour durée de détention (CGI art. 150 VC), exonération de la résidence principale, frais d'acquisition au forfait de 7,5 %. Entrées : prix d'achat, prix de vente, durée, nature du bien, frais. Sortie : plus-value brute, abattements, impôt et prélèvements sociaux. Calcul non couvert par les jeux de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"prixAcquisition",
"prixCession",
"anneesDetention"
],
"properties": {
"prixCession": {
"type": "number",
"description": "Prix de vente en euros"
},
"anneesDetention": {
"type": "integer",
"description": "Durée de détention en années entières"
},
"prixAcquisition": {
"type": "number",
"description": "Prix d'achat du bien en euros"
},
"travauxNonDeduits": {
"type": "number",
"description": "Travaux majorant le prix d'acquisition"
},
"residencePrincipale": {
"type": "boolean",
"description": "Résidence principale — exonération totale si true"
},
"fraisAcquisitionReels": {
"type": "number",
"description": "Frais réels si connus (sinon forfait 7,5%)"
}
},
"additionalProperties": false
}{
"title": "Calculer une plus-value immobilière des particuliers",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_sci_ir_vs_is — Comparer une SCI à l'IR et à l'IS
Compare, pour un même bien, mêmes loyers et même horizon, une SCI à l'impôt sur le revenu et une SCI à l'impôt sur les sociétés. Entrées : prix, loyers, charges, crédit, horizon, tranche. Sortie : cash-flow net annuel, imposition à la cession et capital net de chaque régime. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"prixAcquisition",
"valeurTerrain",
"loyersBruts",
"chargesAnnuelles",
"horizonAnnees",
"tmiAssocie"
],
"properties": {
"tauxIS": {
"type": "number",
"description": "Taux IS (défaut 0.25)"
},
"tmiAssocie": {
"type": "number",
"description": "TMI de l'associé (ex: 0.30)"
},
"loyersBruts": {
"type": "number"
},
"horizonAnnees": {
"type": "integer"
},
"valeurTerrain": {
"type": "number",
"description": "Dont terrain non amortissable"
},
"prixAcquisition": {
"type": "number"
},
"chargesAnnuelles": {
"type": "number"
},
"dureeAmortissement": {
"type": "number",
"description": "Durée amortissement bâtiment (défaut 30 ans)"
}
},
"additionalProperties": false
}{
"title": "Comparer une SCI à l'IR et à l'IS",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_marchand_biens — Calculer une opération de marchand de biens
Calcule le résultat d'une opération de marchand de biens : droits de mutation réduits avec engagement de revente (CGI art. 1115), impôt sur les sociétés au taux réduit et au taux normal, TVA sur marge (CGI art. 268) ou sur le prix total. Entrées : prix d'achat, travaux, prix de vente, régime de TVA, éligibilité au taux réduit. Sortie : frais, bénéfice, impôt, net. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"prixAchat",
"prixVente"
],
"properties": {
"travaux": {
"type": "number"
},
"prixAchat": {
"type": "number"
},
"prixVente": {
"type": "number"
},
"regimeTVA": {
"enum": [
"SANS_TVA",
"TVA_MARGE",
"TVA_TOTALE"
],
"type": "string"
},
"eligiblePME": {
"type": "boolean"
},
"autresCharges": {
"type": "number"
},
"sortieDividende": {
"type": "boolean"
},
"engagementRevente": {
"type": "boolean",
"description": "DMTO réduit 0,715% si true (défaut true)"
}
},
"additionalProperties": false
}{
"title": "Calculer une opération de marchand de biens",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_immo_espagne — Comparer deux détentions d'un bien en Espagne
Compare deux façons d'investir en Espagne depuis la trésorerie d'une SASU française : distribution puis achat en nom propre, ou prêt en compte courant à une filiale espagnole. Applique la convention France-Espagne. Entrées : trésorerie, prix, loyers, horizon, tranche. Sortie : coût d'entrée, flux annuels et net de chaque option, optionNetLePlusEleve (libellé de l'option au net le plus élevé, sans recommandation) et optionNetLePlusEleveFaisable (false si cette option n'est pas faisable telle quelle). Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tresorerieSASU",
"prixAchat",
"loyersBrutsAn",
"chargesAnnuelles",
"prixRevente",
"horizonAnnees",
"tmiFrance"
],
"properties": {
"tauxPret": {
"type": "number",
"description": "Taux prêt inter-entreprises (défaut 0.04)"
},
"prixAchat": {
"type": "number"
},
"tmiFrance": {
"type": "number",
"description": "TMI France (ex: 0.30)"
},
"prixRevente": {
"type": "number"
},
"horizonAnnees": {
"type": "integer"
},
"loyersBrutsAn": {
"type": "number"
},
"tresorerieSASU": {
"type": "number"
},
"chargesAnnuelles": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Comparer deux détentions d'un bien en Espagne",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_sci_multi — Répartir la fiscalité d'une SCI entre associés
Calcule la fiscalité d'une SCI à l'impôt sur le revenu pour chaque associé (2 à 5) : quote-part du résultat foncier, impôt et prélèvements sociaux selon la tranche de chacun, déficit foncier dans la limite de l'article 156. Entrées : loyers, charges, intérêts, associés. Sortie : résultat et fiscalité par associé. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"loyersBruts",
"chargesDeductibles",
"associes"
],
"properties": {
"associes": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"quotePart",
"tmi"
],
"properties": {
"id": {
"type": "string"
},
"tmi": {
"type": "number",
"description": "TMI en décimal (ex: 0.30)"
},
"quotePart": {
"type": "number",
"description": "Quote-part en décimal (ex: 0.50)"
}
},
"additionalProperties": false
},
"maxItems": 5,
"minItems": 2
},
"loyersBruts": {
"type": "number"
},
"interetsEmprunt": {
"type": "number"
},
"chargesDeductibles": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Répartir la fiscalité d'une SCI entre associés",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_mere_fille — Comparer trois chemins de remontée d'un dividende
Compare trois chemins pour un dividende de filiale : personne physique, holding de droit commun, holding au régime mère-fille (CGI art. 145 et 216), avec contrôle de l'éligibilité. Entrées : dividende, détention, durée, taux d'impôt sur les sociétés. Sortie : net de chaque chemin et quote-part de frais et charges. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"dividendeBrut",
"tauxDetention",
"dureeDetentionAns"
],
"properties": {
"tauxISMere": {
"type": "number"
},
"dividendeBrut": {
"type": "number"
},
"societeExclue": {
"type": "boolean"
},
"tauxDetention": {
"type": "number",
"description": "Détention mère dans fille (ex: 0.80)"
},
"dureeDetentionAns": {
"type": "number"
},
"tmiPersonnePhysique": {
"type": "number",
"description": "Sans effet : le chemin personne physique est au prélèvement forfaitaire."
},
"engagementConservation": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"title": "Comparer trois chemins de remontée d'un dividende",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_cession_titres_vs_actifs — Comparer la cession des titres et des actifs
Compare la vente d'une société par cession de titres (prélèvement forfaitaire, ou barème progressif avec abattement pour durée, CGI art. 150-0 D) et par cession d'actifs (impôt sur les sociétés puis distribution), contribution sur les hauts revenus comprise (CGI art. 223 sexies). Entrées : prix de vente, prix d'acquisition, durée, année d'acquisition, revenu hors plus-value, parts, situation du foyer, revenu fiscal de référence hors plus-value, valeur comptable. Sans année d'acquisition, revenu, parts, situation ou revenu fiscal de référence, le calcul est refusé avec les questions à poser. Sortie : imposition et net vendeur de chaque chemin. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"prixVente",
"prixAcquisition",
"dureeDetentionAns"
],
"properties": {
"tauxIS": {
"type": "number"
},
"prixVente": {
"type": "number"
},
"tmiCedant": {
"type": "number",
"description": "Ignoré : le barème part de revenuImposableHorsPV et de partsFiscales. Accepté pour compatibilité."
},
"eligiblePME": {
"type": "boolean"
},
"partsFiscales": {
"type": "number",
"description": "Requis. Parts de quotient familial.",
"exclusiveMinimum": 0
},
"situationFoyer": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Requis. Seuils de la contribution sur les hauts revenus."
},
"prixAcquisition": {
"type": "number"
},
"anneeAcquisition": {
"type": "integer",
"description": "Requis. Année d'acquisition des titres. À partir de 2018, pas d'abattement pour durée au barème. Absente : refus, avec la question à poser."
},
"dureeDetentionAns": {
"type": "number"
},
"valeurComptableNette": {
"type": "number",
"description": "VNC actifs (défaut 0)"
},
"revenuImposableHorsPV": {
"type": "number",
"minimum": 0,
"description": "Requis. Revenu imposable du foyer hors plus-value. L'impôt au barème est la différence avec et sans la plus-value."
},
"revenuFiscalReferenceHorsPlusValue": {
"type": "number",
"minimum": 0,
"description": "Requis. Revenu fiscal de référence hors plus-value, pour la contribution sur les hauts revenus."
}
},
"additionalProperties": false
}{
"title": "Comparer la cession des titres et des actifs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_obo — Calculer le financement d'un OBO
Calcule un OBO (rachat de ses titres par une holding) : annuité, dividende remonté au régime mère-fille, taux de couverture de la dette, amortissement année par année et test de résistance. Entrées : valeur, apport, dette, taux, durée, dividendes. Sortie : tableau, couverture et viabilité du financement. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurOpCo",
"apportPersonnel",
"detteBancaire",
"tauxDette",
"dureeDette",
"dividendeBrutAnnuel",
"prixAcquisitionTitres",
"dureeDetentionTitresAns",
"tmiDirigeant"
],
"properties": {
"tauxDette": {
"type": "number",
"description": "Taux annuel (ex: 0.04)"
},
"dureeDette": {
"type": "integer"
},
"tauxStress": {
"type": "number",
"description": "Facteur stress (ex: 0.80 = -20%, défaut 0.80)"
},
"valeurOpCo": {
"type": "number"
},
"tmiDirigeant": {
"type": "number"
},
"detteBancaire": {
"type": "number"
},
"apportPersonnel": {
"type": "number"
},
"dividendeBrutAnnuel": {
"type": "number"
},
"prixAcquisitionTitres": {
"type": "number"
},
"dureeDetentionTitresAns": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Calculer le financement d'un OBO",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_donation_partage — Calculer une donation-partage
Calcule les droits d'une donation-partage au barème de l'article 777 avec les abattements de l'article 779, en pleine propriété, nue-propriété (barème de l'article 669) ou usufruit. Entrées : valeur, donataires, lien, âge du donateur, type, donations antérieures. Sortie : base, abattement et droits. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurPatrimoine",
"ageDonateur",
"typeDonation",
"beneficiaires"
],
"properties": {
"ageDonateur": {
"type": "integer"
},
"typeDonation": {
"enum": [
"PLEINE_PROPRIETE",
"NUE_PROPRIETE",
"USUFRUIT"
],
"type": "string"
},
"beneficiaires": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"lienParente"
],
"properties": {
"id": {
"type": "string"
},
"handicap": {
"type": "boolean"
},
"partRecue": {
"type": "number",
"description": "Part en euros de la valeur en pleine propriété. Somme égale à la valeur. En nue-propriété ou en usufruit, la part taxée suit le barème de l'article 669. Absente ou 0 pour tous : répartition égale."
},
"quotePart": {
"type": "number",
"description": "Part en fraction de la valeur, entre 0 et 1. À saisir pour chacun, somme égale à 1. Ne pas combiner avec partRecue."
},
"lienParente": {
"enum": [
"enfant",
"conjoint_pacs",
"petit_enfant",
"arriere_petit_enfant",
"frere_soeur",
"neveu_niece",
"autre"
],
"type": "string"
},
"abattementDejaUtilise": {
"type": "number"
}
},
"additionalProperties": false
},
"minItems": 1
},
"valeurPatrimoine": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Calculer une donation-partage",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_succession — Calculer des droits de succession
Calcule les droits de succession au barème de l'article 777, avec les abattements de l'article 779, le rappel des donations de moins de 15 ans (art. 784) et l'exonération du conjoint survivant (art. 796-0 bis). Entrées : actif, passif, héritiers et liens. Sortie : part et droits de chaque héritier. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"actifBrut",
"heritiers"
],
"properties": {
"passif": {
"type": "number",
"description": "Dettes et frais funéraires. Absent : 0, le forfait de 1 500 euros de frais funéraires (CGI art. 775) n'est pas déduit."
},
"actifBrut": {
"type": "number"
},
"heritiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"lienParente"
],
"properties": {
"id": {
"type": "string"
},
"handicap": {
"type": "boolean"
},
"partRecue": {
"type": "number",
"description": "Part reçue en euros de l'actif net. Somme égale à l'actif net. Absente ou 0 pour tous : répartition égale, sauf avec un conjoint ou partenaire de PACS, dont la part est alors demandée."
},
"quotePart": {
"type": "number",
"description": "Part en fraction de la valeur, entre 0 et 1. À saisir pour chacun, somme égale à 1. Ne pas combiner avec partRecue."
},
"lienParente": {
"enum": [
"enfant",
"conjoint_pacs",
"petit_enfant",
"arriere_petit_enfant",
"frere_soeur",
"neveu_niece",
"autre"
],
"type": "string"
},
"abattementDejaUtilise": {
"type": "number"
}
},
"additionalProperties": false
},
"minItems": 1
}
},
"additionalProperties": false
}{
"title": "Calculer des droits de succession",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_transmission — Comparer trois modes de transmission
Compare la donation en pleine propriété, la donation de la nue-propriété et la succession pour un même patrimoine. Entrées : valeur, âge, héritiers, donateurs (1 ou 2). Avec 2, chaque parent transmet la moitié avec ses abattements et son âge. Les parts sont en pleine propriété ; en nue-propriété, la part taxée suit le barème de l'article 669. Sortie : droits de chaque mode, écarts, modalitesDroitsLesPlusBas (plusieurs en cas d'égalité) et détail par donateur. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurPatrimoine",
"ageDonateur",
"heritiers"
],
"properties": {
"donateurs": {
"enum": [
1,
2
],
"type": "number",
"description": "Nombre de donateurs. Absent : 1. Avec 2, chaque parent transmet la moitié."
},
"heritiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"lienParente"
],
"properties": {
"id": {
"type": "string"
},
"partRecue": {
"type": "number",
"description": "Part en euros de la valeur en pleine propriété, tous donateurs confondus. Somme égale à la valeur. Absente ou 0 pour tous : répartition égale."
},
"quotePart": {
"type": "number",
"description": "Part en fraction de la valeur, entre 0 et 1. À saisir pour chacun, somme égale à 1. Ne pas combiner avec partRecue."
},
"lienParente": {
"enum": [
"enfant",
"conjoint_pacs",
"petit_enfant",
"arriere_petit_enfant",
"frere_soeur",
"neveu_niece",
"autre"
],
"type": "string"
}
},
"additionalProperties": false
},
"minItems": 1
},
"ageDonateur": {
"type": "integer"
},
"valeurPatrimoine": {
"type": "number"
},
"ageDonateurConjoint": {
"type": "integer",
"description": "Âge du second donateur. Absent avec deux donateurs : le même âge, signalé."
}
},
"additionalProperties": false
}{
"title": "Comparer trois modes de transmission",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_immo_portugal — Comparer deux détentions d'un bien au Portugal
Compare deux façons d'investir au Portugal depuis la trésorerie d'une SASU française : distribution puis achat en nom propre, ou prêt en compte courant à une filiale portugaise. Applique la convention France-Portugal. Entrées : trésorerie, prix, loyers, horizon, tranche. Sortie : coût d'entrée, flux annuels et net de chaque option, optionNetLePlusEleve (libellé de l'option au net le plus élevé, sans recommandation) et optionNetLePlusEleveFaisable (false si cette option n'est pas faisable telle quelle). Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tresorerieSASU",
"prixAchat",
"loyersBrutsAn",
"chargesAnnuelles",
"prixRevente",
"horizonAnnees",
"tmiFrance"
],
"properties": {
"tauxPret": {
"type": "number",
"description": "Taux prêt inter-entreprises (défaut 0.04)"
},
"prixAchat": {
"type": "number"
},
"tmiFrance": {
"type": "number",
"description": "TMI France (ex: 0.30)"
},
"prixRevente": {
"type": "number"
},
"horizonAnnees": {
"type": "integer"
},
"loyersBrutsAn": {
"type": "number"
},
"tresorerieSASU": {
"type": "number",
"description": "Trésorerie SASU nette d'IS"
},
"chargesAnnuelles": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Comparer deux détentions d'un bien au Portugal",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_immo_belgique — Comparer deux détentions d'un bien en Belgique
Compare deux façons d'investir en Belgique depuis une SASU française : imposition sur le revenu cadastral, droits d'enregistrement régionaux, exonération de la plus-value des particuliers après 5 ans, prélèvements sociaux français. Applique la convention France-Belgique. Entrées : trésorerie, prix, région, loyers, horizon. Sortie : coûts, flux et net de chaque option, optionNetLePlusEleve (libellé de l'option au net le plus élevé, sans recommandation) et optionNetLePlusEleveFaisable (false si cette option n'est pas faisable telle quelle). Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tresorerieSASU",
"prixAchat",
"loyersBrutsAn",
"chargesAnnuelles",
"prixRevente",
"horizonAnnees",
"tmiFrance"
],
"properties": {
"region": {
"enum": [
"WALLONIE",
"BRUXELLES",
"FLANDRE"
],
"type": "string",
"description": "Région belge (défaut WALLONIE)"
},
"tauxPret": {
"type": "number"
},
"prixAchat": {
"type": "number"
},
"tmiFrance": {
"type": "number"
},
"prixRevente": {
"type": "number"
},
"horizonAnnees": {
"type": "integer"
},
"loyersBrutsAn": {
"type": "number"
},
"tresorerieSASU": {
"type": "number"
},
"chargesAnnuelles": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Comparer deux détentions d'un bien en Belgique",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_immo_grece — Comparer deux détentions d'un bien en Grèce
Compare deux façons d'investir en Grèce depuis une SASU française : barème locatif progressif, suspension de l'imposition des plus-values des particuliers, filiale sans cette suspension, prélèvements sociaux français. Applique la convention France-Grèce. Entrées : trésorerie, prix, loyers, horizon. Sortie : coûts, flux et net de chaque option, optionNetLePlusEleve (libellé de l'option au net le plus élevé, sans recommandation) et optionNetLePlusEleveFaisable (false si cette option n'est pas faisable telle quelle). Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tresorerieSASU",
"prixAchat",
"loyersBrutsAn",
"chargesAnnuelles",
"prixRevente",
"horizonAnnees",
"tmiFrance"
],
"properties": {
"tauxPret": {
"type": "number",
"description": "Taux prêt inter-entreprises (défaut 0.04)"
},
"prixAchat": {
"type": "number"
},
"tmiFrance": {
"type": "number",
"description": "TMI France (ex: 0.30)"
},
"prixRevente": {
"type": "number"
},
"horizonAnnees": {
"type": "integer"
},
"loyersBrutsAn": {
"type": "number"
},
"tresorerieSASU": {
"type": "number"
},
"chargesAnnuelles": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Comparer deux détentions d'un bien en Grèce",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_immo_italie — Comparer deux détentions d'un bien en Italie
Compare deux façons d'investir en Italie depuis une SASU française : cedolare secca sur les loyers des particuliers, exonération de la plus-value après 5 ans, impôt sur les sociétés d'une filiale. Applique la convention France-Italie. Entrées : trésorerie, prix, loyers, horizon. Sortie : coûts, flux et net de chaque option, optionNetLePlusEleve (libellé de l'option au net le plus élevé, sans recommandation) et optionNetLePlusEleveFaisable (false si cette option n'est pas faisable telle quelle). Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tresorerieSASU",
"prixAchat",
"loyersBrutsAn",
"chargesAnnuelles",
"prixRevente",
"horizonAnnees",
"tmiFrance"
],
"properties": {
"tauxPret": {
"type": "number"
},
"prixAchat": {
"type": "number"
},
"tmiFrance": {
"type": "number"
},
"prixRevente": {
"type": "number"
},
"horizonAnnees": {
"type": "integer"
},
"loyersBrutsAn": {
"type": "number"
},
"regimeCedolare": {
"enum": [
"NORMALE",
"REDUITE",
"IRPEF"
],
"type": "string",
"description": "NORMALE=21%, REDUITE=10% (conventionné), IRPEF=barème"
},
"tresorerieSASU": {
"type": "number"
},
"chargesAnnuelles": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Comparer deux détentions d'un bien en Italie",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_immo_saint_barth — Comparer deux détentions d'un bien à Saint-Barthélemy
Compare deux façons d'investir à Saint-Barthélemy depuis une SASU française, pour un résident fiscal de France : détention directe ou via une société locale, soumise à l'impôt français sur les sociétés. La résidence fiscale à Saint-Barthélemy est hors calcul. Entrées : trésorerie, prix, loyers, horizon. Sortie : coûts, flux et net de chaque option, optionNetLePlusEleve (libellé de l'option au net le plus élevé, sans recommandation) et optionNetLePlusEleveFaisable (false si cette option n'est pas faisable telle quelle). Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tresorerieSASU",
"prixAchat",
"loyersBrutsAn",
"chargesAnnuelles",
"prixRevente",
"horizonAnnees",
"tmiFrance"
],
"properties": {
"tauxPret": {
"type": "number"
},
"prixAchat": {
"type": "number"
},
"tmiFrance": {
"type": "number"
},
"prixRevente": {
"type": "number"
},
"horizonAnnees": {
"type": "integer"
},
"loyersBrutsAn": {
"type": "number"
},
"tresorerieSASU": {
"type": "number"
},
"chargesAnnuelles": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Comparer deux détentions d'un bien à Saint-Barthélemy",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_immo_uk — Comparer deux détentions d'un bien au Royaume-Uni
Compare deux façons d'investir au Royaume-Uni depuis une SASU française : droits d'acquisition des non-résidents, impôt sur les loyers, impôt sur la plus-value résidentielle, impôt britannique sur les sociétés, retenue à la source sur dividendes (convention de 2008). Entrées en livres sterling avec le taux de change. Sortie : coûts, flux et net de chaque option, optionNetLePlusEleve (libellé de l'option au net le plus élevé, sans recommandation) et optionNetLePlusEleveFaisable (false si cette option n'est pas faisable telle quelle). Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tresorerieSASU",
"prixAchatGBP",
"tauxEURGBP",
"loyersBrutsAnGBP",
"chargesAnnuellesGBP",
"prixReventeGBP",
"horizonAnnees",
"tmiFrance"
],
"properties": {
"tauxPret": {
"type": "number"
},
"tmiFrance": {
"type": "number"
},
"tauxEURGBP": {
"type": "number",
"description": "Taux de change EUR/GBP (ex: 0.86)"
},
"prixAchatGBP": {
"type": "number",
"description": "Prix d'achat en livres sterling"
},
"horizonAnnees": {
"type": "integer"
},
"prixReventeGBP": {
"type": "number"
},
"tresorerieSASU": {
"type": "number"
},
"loyersBrutsAnGBP": {
"type": "number"
},
"chargesAnnuellesGBP": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Comparer deux détentions d'un bien au Royaume-Uni",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_apport_cession — Calculer un apport-cession
Compare quatre scénarios d'apport-cession (CGI art. 150-0 B ter) : cession directe, réinvestissement au minimum légal, réinvestissement total, transmission par donation des titres. Entrées : valeur, prix de revient, taux de réinvestissement, horizon, rendement. Sortie : impôt reporté, coût de chaque scénario et valeur temps du report. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurCession",
"prixRevient"
],
"properties": {
"horizonAns": {
"type": "integer",
"description": "Horizon de placement en années (défaut 10)"
},
"prixRevient": {
"type": "number",
"description": "Prix de revient (coût d'acquisition)"
},
"valeurCession": {
"type": "number",
"description": "Valeur de cession des titres"
},
"rendementAnnuel": {
"type": "number",
"description": "Rendement annuel net de la trésorerie en report (défaut 0.05)"
},
"tauxReinvestissement": {
"type": "number",
"maximum": 1,
"minimum": 0.6,
"description": "Taux réinvestissement (min 0.60, défaut 0.60)"
}
},
"additionalProperties": false
}{
"title": "Calculer un apport-cession",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_remuneration_per — Comparer quatre rémunérations de dirigeant avec PER
Compare quatre rémunérations d'un dirigeant de SASU : salaire seul, dividende seul, salaire et dividende, salaire, dividende et PER. Entrées : bénéfice, répartition, versement PER, tranche. Sortie : net immédiat, droits à retraite et capital retraite de chaque stratégie. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"beneficeAvantIS",
"tmi"
],
"properties": {
"tmi": {
"type": "number",
"description": "TMI réel du dirigeant (ex: 0.41)"
},
"perVersement": {
"type": "number",
"description": "Versement PER annuel. Optionnel : le moteur applique son défaut."
},
"rendementPER": {
"type": "number",
"description": "Rendement annuel net du PER (défaut 0.04)"
},
"salaireChoisi": {
"type": "number",
"description": "Salaire brut choisi pour les stratégies C et D. Optionnel : le moteur applique son défaut."
},
"beneficeAvantIS": {
"type": "number",
"description": "Bénéfice SASU avant IS"
},
"horizonRetraiteAns": {
"type": "integer",
"description": "Horizon retraite pour capitalisation PER (défaut 20 ans)"
}
},
"additionalProperties": false
}{
"title": "Comparer quatre rémunérations de dirigeant avec PER",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}simulate_av_strategie — Calculer des rachats partiels d'assurance-vie
Calcule une suite de rachats partiels d'assurance-vie qui utilisent l'abattement annuel de l'article 125-0 A (contrat de 8 ans ou plus, personne seule ou couple), avec le même calcul de rachat que la sortie simple. Entrées : valeur, versements, ancienneté, situation, gains par support. Sortie : rachats par année, impôt, prélèvements sociaux et net. Calcul couvert par des cas de référence Marcel : résultat indicatif.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"valeurContrat",
"versementsTotal",
"ancienneteAns"
],
"properties": {
"tmi": {
"type": "number",
"description": "TMI du foyer (ex: 0.41)"
},
"maxAnnees": {
"type": "integer",
"description": "Horizon max de simulation (defaut 20)"
},
"tauxAvance": {
"type": "number",
"description": "Taux annuel de l'avance alternative (defaut 0.04)"
},
"plusValuesUC": {
"type": "number",
"minimum": 0,
"description": "Gains d'unités de compte. Prélèvements sociaux de 17,2 % sur cette part seulement."
},
"ancienneteAns": {
"type": "number",
"description": "Anciennete du contrat en annees"
},
"valeurContrat": {
"type": "number",
"description": "Valeur de rachat actuelle"
},
"dureeAvanceAns": {
"type": "number",
"description": "Duree de l'avance alternative (defaut 3)"
},
"versementsTotal": {
"type": "number",
"description": "Total des primes versees"
},
"plafondGainsAnnuel": {
"type": "number",
"description": "Plafond de gains vise par an (defaut = abattement legal)"
},
"situationFamiliale": {
"enum": [
"seul",
"couple"
],
"type": "string",
"description": "Personne seule ou couple."
},
"plusValuesFondsEuros": {
"type": "number",
"minimum": 0,
"description": "Gains du fonds en euros. Avec plusValuesUC, même contrôle qu'au rachat."
}
},
"additionalProperties": false
}{
"title": "Calculer des rachats partiels d'assurance-vie",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1628 ms
- 95th percentile latency
- 1628 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1628 ms · metadata changed · 45 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http marcel-retraite-mcp https://marcel-retraite.fr/mcpCodex
codex mcp add marcel-retraite-mcp --url https://marcel-retraite.fr/mcpCursor
{
"mcpServers": {
"marcel-retraite-mcp": {
"url": "https://marcel-retraite.fr/mcp"
}
}
}Cline
{
"mcpServers": {
"marcel-retraite-mcp": {
"type": "streamableHttp",
"url": "https://marcel-retraite.fr/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"marcel-retraite-mcp": {
"type": "http",
"url": "https://marcel-retraite.fr/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http marcel-retraite-mcp https://marcel-retraite.fr/mcpClaude Desktop
{
"mcpServers": {
"marcel-retraite-mcp": {
"url": "https://marcel-retraite.fr/mcp"
}
}
}Windsurf
{
"mcpServers": {
"marcel-retraite-mcp": {
"serverUrl": "https://marcel-retraite.fr/mcp"
}
}
}Let your agent find its tools
Find servers like Marcel Retraite MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Marcel Retraite MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.