Skip to main content
Glama

Estimer une pension de retraite

marcel_estimate_pension
Read-onlyIdempotent

Estime la pension de retraite, toutes sources de pension (base et complémentaire). Porte sur le montant de pension mensuel ; le revenu à la retraite qui agrège d'autres actifs déjà connus (PER, LMNP, assurance-vie, SCPI) en plus d'une pension fournie en entrée relève de marcel_revenue_at_retirement ; pour l'écart avec un objectif, voir marcel_find_gap ; pour une projection chronologique d'un profil avec actifs, marcel_financial_twin. 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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "birthYear": "<birthYear>",
      "regime": "<regime>"
    },
    "name": "marcel_estimate_pension"
  }
}

Input Schema

NameRequiredDescriptionDefault
rfrNo
caisseNoCaisse 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.
regimeYes
samSaisiNo
birthYearYesAnné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.
pointsASVNoCARMF : points ASV des médecins conventionnés, lus sur le relevé. Absents : l'ASV n'est pas chiffrée, et nonCouvert le dit.
situationNoPersonne seule ou couple en imposition commune. Sert au plafonnement du quotient familial. Absente : 2 parts de référence.
birthMonthNoMois 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.
anneeReleveNoAnnée du relevé de carrière. Absente : année courante, valeur et origine dans champsManquants.
nombrePartsNoNombre de parts du foyer. Entrée du net. Absent : le net n'est pas chiffré, et le champ figure dans champsManquants.
pointsAgircNoPoints 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.
dureeRequiseNoDurée d'assurance requise, en trimestres. Absente : durée du calendrier de la génération, valeur et origine dans champsManquants.
pointsCNAVPLNo
rfrPrecedentNoRevenu 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é.
trimestresRGNo
nombreEnfantsNoNombre 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.
retirementAgeNoÂge de départ, de 55 à 75 ans. Absent : 67 ans, indiqué dans champsManquants.
trimestresLiberalNo
trimestresSurcoteNoTrimestres de surcote déjà constatés. Absent : 0, indiqué dans champsManquants.
nombreEnfantsAChargeNoNombre d'enfants à charge, pour la majoration Agirc-Arrco alternative. Absent : 0, indiqué dans champsManquants.
pointsComplementaireNo
nombrePensionnesFoyerNoNombre de pensionnés du foyer, 1 ou 2. Distinct du nombre de parts. Absent : le net n'est pas chiffré.
anneesAffiliationCipavNo
pensionSeulRevenuFoyerNotrue 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).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / pointsASV
      Added value: +{
      +  "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.",
      +  "minimum": 0,
      +  "type": "number"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / pensionSeulRevenuFoyer
      Added value: +{
      +  "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).",
      +  "type": "boolean"
      +}
  3. Changed8 schema fields changed
    • addedInput schema / properties / birthYear / description
      Added value: +"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."
    • addedInput schema / properties / birthYear / maximum
      Added value: +2010
    • addedInput schema / properties / birthYear / minimum
      Added value: +1940
    • addedInput schema / properties / caisse
      Added value: +{
      +  "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.",
      +  "enum": [
      +    "carmf",
      +    "cavec",
      +    "cipav",
      +    "carpimko"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / pointsAgirc / description
      Previous value: -"Points Agirc-Arrco totaux. 0 est une valeur valide."New value: +"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."
    • addedInput schema / properties / retirementAge / description
      Added value: +"Âge de départ, de 55 à 75 ans. Absent : 67 ans, indiqué dans champsManquants."
    • addedInput schema / properties / retirementAge / maximum
      Added value: +75
    • addedInput schema / properties / retirementAge / minimum
      Added value: +55
  4. Changed9 schema fields changed
    • addedInput schema / properties / anneeReleve
      Added value: +{
      +  "description": "Année du relevé de carrière. Absente : année courante, valeur et origine dans champsManquants.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / birthMonth / description
      Previous value: -"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."New value: +"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."
    • addedInput schema / properties / dureeRequise
      Added value: +{
      +  "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,
      +  "type": "integer"
      +}
    • addedInput schema / properties / nombreEnfants
      Added value: +{
      +  "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.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / nombreEnfantsACharge
      Added value: +{
      +  "description": "Nombre d'enfants à charge, pour la majoration Agirc-Arrco alternative. Absent : 0, indiqué dans champsManquants.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / nombreParts
      Added value: +{
      +  "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,
      +  "type": "number"
      +}
    • addedInput schema / properties / nombrePensionnesFoyer
      Added value: +{
      +  "description": "Nombre de pensionnés du foyer, 1 ou 2. Distinct du nombre de parts. Absent : le net n'est pas chiffré.",
      +  "enum": [
      +    1,
      +    2
      +  ],
      +  "type": "number"
      +}
    • addedInput schema / properties / situation
      Added value: +{
      +  "description": "Personne seule ou couple en imposition commune. Sert au plafonnement du quotient familial. Absente : 2 parts de référence.",
      +  "enum": [
      +    "seul",
      +    "couple"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / trimestresSurcote
      Added value: +{
      +  "description": "Trimestres de surcote déjà constatés. Absent : 0, indiqué dans champsManquants.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
  5. Changed5 schema fields changed
    • changedInput schema / properties / birthMonth / description
      Previous value: -"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. Sans mois, le résultat reste indicatif."New value: +"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."
    • changedInput schema / properties / pointsAgirc / description
      Previous value: -"Points Agirc-Arrco totaux. 0 est une valeur valide, pas une donnée manquante."New value: +"Points Agirc-Arrco totaux. 0 est une valeur valide."
    • changedInput schema / properties / rfr / properties / year / description
      Previous value: -"Année de l'avis d'imposition, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2025."New value: +"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."
    • changedInput schema / properties / rfrPrecedent / description
      Previous value: -"Revenu fiscal de l'avis précédent. Son année est celle de rfr moins un. Sinon ignoré : indicatif, et le taux médian ou normal n'est pas appliqué."New value: +"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é."
    • changedInput schema / properties / rfrPrecedent / properties / year / description
      Previous value: -"Année de l'avis d'imposition précédent, pas celle des revenus. Pour une pension versée en 2026, elle vaut 2024."New value: +"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."
  6. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds substantial behavior: refusal semantics for missing or uncovered caisse, partial-result signaling (pensionPartielle=true, composantesNonChiffrees), null pensionNetMonthly when rfr/parts/pensionnés are absent, 'indicatif' status without rfrPrecedent, fallback provenance via champsManquants and gaps via nonCouvert. It even discloses the CSG/maladie contribution rules and the boundary exclusions (Alsace-Moselle, non-résidents, ASPA).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and sibling routing are correctly front-loaded, but the middle is one enormous run-on sentence reciting twenty-plus input names that the schema already documents, which dilutes the high-value rules (refusal, partial results, net dependencies) buried after it. Structuring the inputs list as a pointer to the schema would make every remaining sentence earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 24-parameter, no-output-schema, highly regulated tool this is unusually complete: preconditions, refusal paths, partial-result flags, legal basis (CSS L351-12/R351-30, CGI 154 quinquies) and explicit exclusions are all present. What is only partially covered is the return shape — pensionNetMonthly, detailBrutNet, champsManquants and nonCouvert are named but the full output surface is not described, and with no output schema that is the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 24 parameters and only 67% schema coverage, the description compensates by enumerating the input set and, more usefully, stating cross-parameter dependencies the schema only states piecewise: net requires the trio rfr + nombreParts + nombrePensionnés, and CARRIERE_MIXTE requires a named caisse or is refused. Some of the enumeration is redundant with existing schema descriptions (birth year bounds, caisse enum), which keeps it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Estime la pension de retraite') and immediately delimits scope ('toutes sources de pension (base et complémentaire)'). It then names the three sibling tools it is NOT (marcel_revenue_at_retirement, marcel_find_gap, marcel_financial_twin) with the discriminating condition for each, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use-this-vs-alternative routing: aggregating other known assets (PER, LMNP, assurance-vie, SCPI) goes to marcel_revenue_at_retirement, gap-to-target to marcel_find_gap, chronological projection to marcel_financial_twin. It also states hard preconditions ('En carrière mixte, la caisse ... est requise ... Sans elle, ou avec une autre caisse, le calcul est refusé'), which is genuine use guidance rather than inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.