Exact French income tax, URSSAF micro-entrepreneur and gross-to-net salary calculations (x402)
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Converts a French private-sector gross salary to net pay (salaire brut → net) for a full-time permanent contract (CDI) in mainland France, 2026 rules: employee contributions, net pay before tax, net taxable pay, optional income tax withholding (prélèvement à la source), general employer reduction (RGDU), employer contributions and total employer cost. Monthly or annual amounts. Use when a user asks for the net salary from a gross salary in France, the total cost of an employee for the employer, or the amount of employer and employee social contributions. Deterministic code, no LLM: uses URSSAF's official payroll engine (modele-social). Official 2026 rates re-applied by hand in tests, official RGDU formula and example, and 15 cases checked on the official URSSAF salary simulator. Not supported (refused for free with HTTP 422): fixed-term or temporary contracts (CDD, intérim), part-time, overtime, incomplete months, apprentices and interns, company officers (SAS president), Alsace-Moselle, overseas departments, salaries below the full-time minimum wage (SMIC), years other than those listed. Price: 0.005 USDC per successful call, paid with x402 over MCP. Missing or invalid fields are reported for free with the questions to ask the user; you never pay for an error. Returns JSON (also in structuredContent): calculateur, resultat, detail (step by step), hypotheses, bareme (version, effective date, sources), estimation_indicative, avertissement, lien_verification. Full output schema and a real example: list_france_calculators.
Year. Supported: 2026.
mois (monthly gross salary) or annee (annual gross salary).
Company headcount band: moins_de_5 (under 5), de_5_a_10, de_11_a_19, de_20_a_49, de_50_a_149, de_150_a_249, 250_et_plus.
Gross salary in EUR for the period (monthly or annual, see periode), including bonuses paid in the period.
true if the employee has executive status (cadre).
Required. Special situations that apply, or [] if none: cdd (fixed-term or temporary contract), temps_partiel (part-time), heures_supplementaires (overtime this period), mois_incomplet (incomplete month, absence, sick leave), apprenti_stagiaire (apprentice or intern), dirigeant_assimile_salarie (company officer), alsace_moselle, outre_mer (overseas department), prevoyance_avec_part_salariale (provident scheme with employee share), avantages_en_nature (benefits in kind), exoneration_specifique (specific employer exemption), deduction_forfaitaire_specifique (specific flat-rate deduction). Any listed situation is refused for free (HTTP 422).
Monthly employer share of the company health insurance (mutuelle), in EUR (0 if none).
Monthly employee share of the company health insurance (mutuelle) on the payslip, in EUR (0 if none).
Required if periode = mois: payroll month 1 to 12.
Optional: workplace accident insurance rate (taux AT/MP) of the establishment, in percent. If omitted, the national average (2.08 %) is used; it only affects employer cost.
Optional: employee income tax withholding rate (taux de prélèvement à la source), in percent. If given, the withholding and net pay after tax are returned.
Required if the company has 11 or more employees: transport levy rate (versement mobilité) of the workplace municipality, in percent (0 if none).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http tax-payroll https://tax.francestack.fr/mcp
Converts a French private-sector gross salary to net pay (salaire brut → net) for a full-time permanent contract (CDI) in mainland France, 2026 rules: employee contributions, net pay before tax, net taxable pay, optional income tax withholding (prélèvement à la source), general employer reduction (RGDU), employer contributions and total employer cost. Monthly or annual amounts. Use when a user asks for the net salary from a gross salary in France, the total cost of an employee for the employer, or the amount of employer and employee social contributions. Deterministic code, no LLM: uses URSSAF's official payroll engine (modele-social). Official 2026 rates re-applied by hand in tests, official RGDU formula and example, and 15 cases checked on the official URSSAF salary simulator. Not supported (refused for free with HTTP 422): fixed-term or temporary contracts (CDD, intérim), part-time, overtime, incomplete months, apprentices and interns, company officers (SAS president), Alsace-Moselle, overseas departments, salaries below the full-time minimum wage (SMIC), years other than those listed. Price: 0.005 USDC per successful call, paid with x402 over MCP. Missing or invalid fields are reported for free with the questions to ask the user; you never pay for an error. Returns JSON (also in structuredContent): calculateur, resultat, detail (step by step), hypotheses, bareme (version, effective date, sources), estimation_indicative, avertissement, lien_verification. Full output schema and a real example: list_france_calculators.
| Argument | Type | Description |
|---|---|---|
| mois | integer | Required if periode = mois: payroll month 1 to 12. |
| annee* | integer | Year. Supported: 2026. |
| periode* | string | mois (monthly gross salary) or annee (annual gross salary). |
| effectif* | string | Company headcount band: moins_de_5 (under 5), de_5_a_10, de_11_a_19, de_20_a_49, de_50_a_149, de_150_a_249, 250_et_plus. |
| salaire_brut* | number | Gross salary in EUR for the period (monthly or annual, see periode), including bonuses paid in the period. |
| statut_cadre* | boolean | true if the employee has executive status (cadre). |
| cas_particuliers* | array | Required. Special situations that apply, or [] if none: cdd (fixed-term or temporary contract), temps_partiel (part-time), heures_supplementaires (overtime this period), mois_incomplet (incomplete month, absence, sick leave), apprenti_stagiaire (apprentice or intern), dirigeant_assimile_salarie (company officer), alsace_moselle, outre_mer (overseas department), prevoyance_avec_part_salariale (provident scheme with employee share), avantages_en_nature (benefits in kind), exoneration_specifique (specific employer exemption), deduction_forfaitaire_specifique (specific flat-rate deduction). Any listed situation is refused for free (HTTP 422). |
| taux_atmp_pourcent | number | Optional: workplace accident insurance rate (taux AT/MP) of the establishment, in percent. If omitted, the national average (2.08 %) is used; it only affects employer cost. |
| mutuelle_part_patronale* | number | Monthly employer share of the company health insurance (mutuelle), in EUR (0 if none). |
| mutuelle_part_salariale* | number | Monthly employee share of the company health insurance (mutuelle) on the payslip, in EUR (0 if none). |
| taux_prelevement_source_pourcent | number | Optional: employee income tax withholding rate (taux de prélèvement à la source), in percent. If given, the withholding and net pay after tax are returned. |
| taux_versement_mobilite_pourcent | number | Required if the company has 11 or more employees: transport levy rate (versement mobilité) of the workplace municipality, in percent (0 if none). |
{
"type": "object",
"required": [
"salaire_brut",
"periode",
"annee",
"statut_cadre",
"effectif",
"mutuelle_part_salariale",
"mutuelle_part_patronale",
"cas_particuliers"
],
"properties": {
"mois": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "Required if periode = mois: payroll month 1 to 12."
},
"annee": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Year. Supported: 2026."
},
"periode": {
"enum": [
"mois",
"annee"
],
"type": "string",
"description": "mois (monthly gross salary) or annee (annual gross salary)."
},
"effectif": {
"enum": [
"moins_de_5",
"de_5_a_10",
"de_11_a_19",
"de_20_a_49",
"de_50_a_149",
"de_150_a_249",
"250_et_plus"
],
"type": "string",
"description": "Company headcount band: moins_de_5 (under 5), de_5_a_10, de_11_a_19, de_20_a_49, de_50_a_149, de_150_a_249, 250_et_plus."
},
"salaire_brut": {
"type": "number",
"maximum": 1000000,
"description": "Gross salary in EUR for the period (monthly or annual, see periode), including bonuses paid in the period.",
"exclusiveMinimum": 0
},
"statut_cadre": {
"type": "boolean",
"description": "true if the employee has executive status (cadre)."
},
"cas_particuliers": {
"type": "array",
"items": {
"enum": [
"cdd",
"temps_partiel",
"heures_supplementaires",
"mois_incomplet",
"apprenti_stagiaire",
"dirigeant_assimile_salarie",
"alsace_moselle",
"outre_mer",
"prevoyance_avec_part_salariale",
"avantages_en_nature",
"exoneration_specifique",
"deduction_forfaitaire_specifique"
],
"type": "string"
},
"maxItems": 12,
"description": "Required. Special situations that apply, or [] if none: cdd (fixed-term or temporary contract), temps_partiel (part-time), heures_supplementaires (overtime this period), mois_incomplet (incomplete month, absence, sick leave), apprenti_stagiaire (apprentice or intern), dirigeant_assimile_salarie (company officer), alsace_moselle, outre_mer (overseas department), prevoyance_avec_part_salariale (provident scheme with employee share), avantages_en_nature (benefits in kind), exoneration_specifique (specific employer exemption), deduction_forfaitaire_specifique (specific flat-rate deduction). Any listed situation is refused for free (HTTP 422)."
},
"taux_atmp_pourcent": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "Optional: workplace accident insurance rate (taux AT/MP) of the establishment, in percent. If omitted, the national average (2.08 %) is used; it only affects employer cost."
},
"mutuelle_part_patronale": {
"type": "number",
"maximum": 1000,
"minimum": 0,
"description": "Monthly employer share of the company health insurance (mutuelle), in EUR (0 if none)."
},
"mutuelle_part_salariale": {
"type": "number",
"maximum": 1000,
"minimum": 0,
"description": "Monthly employee share of the company health insurance (mutuelle) on the payslip, in EUR (0 if none)."
},
"taux_prelevement_source_pourcent": {
"type": "number",
"maximum": 60,
"minimum": 0,
"description": "Optional: employee income tax withholding rate (taux de prélèvement à la source), in percent. If given, the withholding and net pay after tax are returned."
},
"taux_versement_mobilite_pourcent": {
"type": "number",
"maximum": 5,
"minimum": 0,
"description": "Required if the company has 11 or more employees: transport levy rate (versement mobilité) of the workplace municipality, in percent (0 if none)."
}
},
"additionalProperties": false
}Computes French personal income tax (impôt sur le revenu, IR) for a tax household: number of tax shares (parts, quotient familial), gross tax on the official DGFiP progressive scale, family-quotient cap, décote, net tax payable, average rate and marginal rate (TMI). Income years 2024, 2025. Input: household net taxable income, or declared salaries (the 10% deduction is applied). Use when a user asks how much French income tax a household pays, its marginal tax bracket (TMI), its number of tax shares, or the effect of marriage or children on the tax. Deterministic code, no LLM, exact decimal arithmetic. Matches all 7,095 values of the official DGFiP tax tables (brochure pratique 2025 and 2026) to the euro, and 15 cases checked on the official impots.gouv.fr simulator. Not supported (refused for free with HTTP 422): non-residents, overseas departments, alternating-custody children, extra half-shares (disability, veterans, box L), exceptional income taxed with the quotient system, tax credits and reductions, incomes above the high-income contribution thresholds (CEHR/CDHR). Price: 0.005 USDC per successful call, paid with x402 over MCP. Missing or invalid fields are reported for free with the questions to ask the user; you never pay for an error. Returns JSON (also in structuredContent): calculateur, resultat, detail (step by step), hypotheses, bareme (version, effective date, sources), estimation_indicative, avertissement, lien_verification. Full output schema and a real example: list_france_calculators.
| Argument | Type | Description |
|---|---|---|
| parent_isole | boolean | Required if single or divorced with at least one child: true if the parent lives alone with the children, without a partner (box T, parent isolé). |
| annee_revenus* | integer | Income year (année des revenus), e.g. 2025 for the return filed in 2026. Supported: 2024, 2025. |
Computes what a French micro-entrepreneur (auto-entrepreneur, micro-entreprise) pays to URSSAF for a month, quarter or year: social contributions (with or without ACRE), vocational training contribution (CFP), chamber tax (taxe pour frais de chambre), optional flat-rate income tax (versement libératoire), total to pay and net income. Years 2025, 2026, all six activity categories (sales, commercial or craft services, liberal professions SSI or CIPAV). Use when a user asks how much URSSAF contributions an auto-entrepreneur owes on a given turnover, what the ACRE reduction changes, or how much remains as net income. Deterministic code, no LLM, exact decimal arithmetic. Cross-checked on 2,000 cases against URSSAF's official engine (modele-social) and on 15 cases from the official URSSAF simulator. Not supported (refused for free with HTTP 422): mixed activities, furnished rentals and holiday lets, overseas departments, Alsace-Moselle craftspeople, periods straddling the end of ACRE, ACRE in 2025, minimum-contribution option, exit from the micro regime. CFE, VAT and business expenses are not included. Price: 0.005 USDC per successful call, paid with x402 over MCP. Missing or invalid fields are reported for free with the questions to ask the user; you never pay for an error. Returns JSON (also in structuredContent): calculateur, resultat, detail (step by step), hypotheses, bareme (version, effective date, sources), estimation_indicative, avertissement, lien_verification. Full output schema and a real example: list_france_calculators.
| Argument | Type | Description |
|---|---|---|
| acre* | boolean | true if the entrepreneur was granted ACRE (reduced contribution rates for business creators). |
| mois | integer | Required if periode = mois: month number 1 to 12. |
| annee |
Free. Lists every available French tax and payroll calculator with its MCP tool name, price, input schema, example input, real example output and unsupported cases. Call it first if you are unsure which tool fits the user’s question.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.
| cas_particuliers* | array | Required. Special situations that apply, or [] if none: enfant_residence_alternee (alternating custody), invalidite_ou_ancien_combattant (disability or veteran card), personne_invalide_a_charge (disabled dependant), case_L (lived alone and raised a child alone 5+ years), enfant_majeur_marie_ou_charge_de_famille (attached married adult child), deces_conjoint_dans_annee (spouse died during the year), domicile_outre_mer (overseas department), non_resident, revenus_exceptionnels_ou_differes (exceptional or deferred income). Any listed situation is refused for free (HTTP 422). |
| enfants_a_charge* | integer | Number of dependent children fully or mainly in the household (minors, or adult children attached to the tax household). Do not count alternating-custody children. |
| salaires_declares | array | Alternative to revenu_net_imposable: net taxable salaries declared by each filer in EUR, before the 10% standard deduction (one value, or two for a married/PACS couple). Salaries only; for other income use revenu_net_imposable. |
| situation_familiale* | string | Marital status on 31 December of the income year: celibataire (single), divorce_separe (divorced or separated), marie_pacse (married or civil partnership, joint return), veuf (widowed). |
| nombre_parts_declare | number | Optional cross-check: number of tax shares shown on the tax return or notice. If it differs from the computed number, the request is refused for free (HTTP 422). |
| revenu_net_imposable | number | Household net taxable income in EUR (revenu net imposable, after all allowances, as shown on the tax notice). Give either this field or salaires_declares. |
| nombre_declarants_65_ans_ou_plus | integer | Required with salaires_declares: number of filers aged 65 or over on 31 December of the income year (0, 1 or 2), for the elderly allowance. |
{
"type": "object",
"required": [
"annee_revenus",
"situation_familiale",
"enfants_a_charge",
"cas_particuliers"
],
"properties": {
"parent_isole": {
"type": "boolean",
"description": "Required if single or divorced with at least one child: true if the parent lives alone with the children, without a partner (box T, parent isolé)."
},
"annee_revenus": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Income year (année des revenus), e.g. 2025 for the return filed in 2026. Supported: 2024, 2025."
},
"cas_particuliers": {
"type": "array",
"items": {
"enum": [
"enfant_residence_alternee",
"invalidite_ou_ancien_combattant",
"personne_invalide_a_charge",
"case_L",
"enfant_majeur_marie_ou_charge_de_famille",
"deces_conjoint_dans_annee",
"domicile_outre_mer",
"non_resident",
"revenus_exceptionnels_ou_differes"
],
"type": "string"
},
"maxItems": 9,
"description": "Required. Special situations that apply, or [] if none: enfant_residence_alternee (alternating custody), invalidite_ou_ancien_combattant (disability or veteran card), personne_invalide_a_charge (disabled dependant), case_L (lived alone and raised a child alone 5+ years), enfant_majeur_marie_ou_charge_de_famille (attached married adult child), deces_conjoint_dans_annee (spouse died during the year), domicile_outre_mer (overseas department), non_resident, revenus_exceptionnels_ou_differes (exceptional or deferred income). Any listed situation is refused for free (HTTP 422)."
},
"enfants_a_charge": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "Number of dependent children fully or mainly in the household (minors, or adult children attached to the tax household). Do not count alternating-custody children."
},
"salaires_declares": {
"type": "array",
"items": {
"type": "number",
"maximum": 100000000,
"minimum": 0
},
"maxItems": 2,
"minItems": 1,
"description": "Alternative to revenu_net_imposable: net taxable salaries declared by each filer in EUR, before the 10% standard deduction (one value, or two for a married/PACS couple). Salaries only; for other income use revenu_net_imposable."
},
"situation_familiale": {
"enum": [
"celibataire",
"divorce_separe",
"marie_pacse",
"veuf"
],
"type": "string",
"description": "Marital status on 31 December of the income year: celibataire (single), divorce_separe (divorced or separated), marie_pacse (married or civil partnership, joint return), veuf (widowed)."
},
"nombre_parts_declare": {
"type": "number",
"maximum": 30,
"minimum": 1,
"multipleOf": 0.25,
"description": "Optional cross-check: number of tax shares shown on the tax return or notice. If it differs from the computed number, the request is refused for free (HTTP 422)."
},
"revenu_net_imposable": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Household net taxable income in EUR (revenu net imposable, after all allowances, as shown on the tax notice). Give either this field or salaires_declares."
},
"nombre_declarants_65_ans_ou_plus": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "Required with salaires_declares: number of filers aged 65 or over on 31 December of the income year (0, 1 or 2), for the elderly allowance."
}
},
"additionalProperties": false
}| integer |
| Calendar year of the period. Supported: 2025, 2026. |
| periode* | string | Declaration period: mois (month), trimestre (calendar quarter) or annee (calendar year). |
| activite* | string | Activity category: vente_marchandises_commercant (sale of goods, restaurants, lodging by a trader), vente_marchandises_artisan (resale of goods by a craftsperson), prestations_services_commercant (commercial services, BIC), prestations_services_artisan (craft services, BIC), liberale_non_reglementee (other services or non-regulated liberal profession, BNC), liberale_reglementee_cipav (regulated liberal profession under CIPAV, BNC). |
| trimestre | integer | Required if periode = trimestre: calendar quarter 1 to 4. |
| cas_particuliers* | array | Required. Special situations that apply, or [] if none: activite_mixte (several activity categories), location_meublee (furnished rental, holiday let, B&B), outre_mer (overseas department), alsace_moselle (craftsperson in Alsace or Moselle), double_immatriculation_cci_cma (registered with both CCI and CMA), cotisations_minimales (minimum contributions option), conjoint_collaborateur (collaborating spouse), sortie_regime_micro (turnover ceilings exceeded two years in a row). Any listed situation is refused for free (HTTP 422). |
| chiffre_affaires* | number | Turnover excluding VAT actually collected during the period, in EUR (chiffre d’affaires encaissé). |
| date_debut_activite* | string | Business start date (YYYY-MM-DD). Determines the ACRE period and the first-year chamber tax exemption. |
| versement_liberatoire* | boolean | true if the entrepreneur opted for the flat-rate income tax paid with contributions (versement libératoire). |
| chiffre_affaires_n_moins_2_superieur_5000 | boolean | Required for trade and craft activities after the first calendar year: true if turnover two years before was at least EUR 5,000 (otherwise the chamber tax is not due). |
{
"type": "object",
"required": [
"activite",
"chiffre_affaires",
"periode",
"annee",
"date_debut_activite",
"acre",
"versement_liberatoire",
"cas_particuliers"
],
"properties": {
"acre": {
"type": "boolean",
"description": "true if the entrepreneur was granted ACRE (reduced contribution rates for business creators)."
},
"mois": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "Required if periode = mois: month number 1 to 12."
},
"annee": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Calendar year of the period. Supported: 2025, 2026."
},
"periode": {
"enum": [
"mois",
"trimestre",
"annee"
],
"type": "string",
"description": "Declaration period: mois (month), trimestre (calendar quarter) or annee (calendar year)."
},
"activite": {
"enum": [
"vente_marchandises_commercant",
"vente_marchandises_artisan",
"prestations_services_commercant",
"prestations_services_artisan",
"liberale_non_reglementee",
"liberale_reglementee_cipav"
],
"type": "string",
"description": "Activity category: vente_marchandises_commercant (sale of goods, restaurants, lodging by a trader), vente_marchandises_artisan (resale of goods by a craftsperson), prestations_services_commercant (commercial services, BIC), prestations_services_artisan (craft services, BIC), liberale_non_reglementee (other services or non-regulated liberal profession, BNC), liberale_reglementee_cipav (regulated liberal profession under CIPAV, BNC)."
},
"trimestre": {
"type": "integer",
"maximum": 4,
"minimum": 1,
"description": "Required if periode = trimestre: calendar quarter 1 to 4."
},
"cas_particuliers": {
"type": "array",
"items": {
"enum": [
"activite_mixte",
"location_meublee",
"outre_mer",
"alsace_moselle",
"double_immatriculation_cci_cma",
"cotisations_minimales",
"conjoint_collaborateur",
"sortie_regime_micro"
],
"type": "string"
},
"maxItems": 8,
"description": "Required. Special situations that apply, or [] if none: activite_mixte (several activity categories), location_meublee (furnished rental, holiday let, B&B), outre_mer (overseas department), alsace_moselle (craftsperson in Alsace or Moselle), double_immatriculation_cci_cma (registered with both CCI and CMA), cotisations_minimales (minimum contributions option), conjoint_collaborateur (collaborating spouse), sortie_regime_micro (turnover ceilings exceeded two years in a row). Any listed situation is refused for free (HTTP 422)."
},
"chiffre_affaires": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Turnover excluding VAT actually collected during the period, in EUR (chiffre d’affaires encaissé)."
},
"date_debut_activite": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Business start date (YYYY-MM-DD). Determines the ACRE period and the first-year chamber tax exemption."
},
"versement_liberatoire": {
"type": "boolean",
"description": "true if the entrepreneur opted for the flat-rate income tax paid with contributions (versement libératoire)."
},
"chiffre_affaires_n_moins_2_superieur_5000": {
"type": "boolean",
"description": "Required for trade and craft activities after the first calendar year: true if turnover two years before was at least EUR 5,000 (otherwise the chamber tax is not due)."
}
},
"additionalProperties": false
}