Gross-to-Net Salary Calculator (Germany & UK)

Net pay to the cent, every deduction and the employer's cost for Germany and the UK, computed with…

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
83%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,732Tokens (tool definitions)
~14.9 KBTypical response size
Significant attention impact (5.26% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "salary-net": {
      "url": "https://syntropicapi.com/mcp/salary-net/mcp"
    }
  }
}

Remote endpoints

https://syntropicapi.com/mcp/salary-net/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢calculate_net_salary(country, year, period, de, uk, ...)

Computes net pay from gross pay for one pay period with the country's official payroll algorithm. Returns every employee deduction and employer contribution as a line with the rule applied and its source, the employer's total cost, annualised figures and the assumptions made.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "enum": [
        "DE",
        "UK",
        "GB"
      ],
      "title": "Country",
      "description": "DE or UK (GB is accepted as UK)"
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2000,
      "title": "Year",
      "description": "Tax year. UK: the year the tax year starts in (2026 = 2026-27)",
      "default": 2026
    },
    "period": {
      "type": "string",
      "enum": [
        "year",
        "month",
        "week",
        "day",
        "fortnight",
        "four_weeks"
      ],
      "title": "Period",
      "description": "Pay period of the amount: year, month, week, day (DE only), fortnight or four_weeks (UK only)",
      "default": "month"
    },
    "de": {
      "anyOf": [
        {
          "properties": {
            "tax_class": {
              "type": "integer",
              "maximum": 6,
              "minimum": 1,
              "title": "Tax Class",
              "description": "Steuerklasse 1-6 (I single, II single parent, III/V married split, IV married, VI second job)",
              "default": 1
            },
            "state": {
              "type": "string",
              "maxLength": 2,
              "minLength": 2,
              "title": "State",
              "description": "Bundesland code of the workplace: BW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN, ST, SH, TH (church-tax rate; SN = Saxony care-insurance split)",
              "default": "NW"
            },
            "church": {
              "type": "boolean",
              "title": "Church",
              "description": "Member of a church that levies church tax",
              "default": false
            },
            "children": {
              "type": "integer",
              "maximum": 20,
              "minimum": 0,
              "title": "Children",
              "description": "Children under 25: care-insurance discounts from the 2nd child and, by default, the child allowances",
              "default": 0
            },
            "child_allowances": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 20,
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Child Allowances",
              "description": "Kinderfreibeträge on the tax card in 0.5 steps (default: children); 0.5 per child when the parents split them"
            },
            "parent": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Parent",
              "description": "Has ever had a child, so no childless surcharge in care insurance (default: children > 0)"
            },
            "birth_year": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 2015,
                  "minimum": 1900
                },
                {
                  "type": "null"
                }
              ],
              "title": "Birth Year",
              "description": "Year of birth: childless surcharge only from 23, age relief from 65; 67+ is rejected"
            },
            "health_insurance": {
              "type": "string",
              "enum": [
                "statutory",
                "private"
              ],
              "title": "Health Insurance",
              "description": "Only statutory health insurance is supported so far",
              "default": "statutory"
            },
            "health_insurance_addon_rate": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 10,
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Health Insurance Addon Rate",
              "description": "The fund's add-on rate (Zusatzbeitrag) in %, e.g. 2.9; default the official average of the year"
            },
            "factor": {
              "anyOf": [
                {
                  "type": "number",
                  "exclusiveMaximum": 1,
                  "exclusiveMinimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Factor",
              "description": "Faktorverfahren factor for tax class IV, three decimals (e.g. 0.912)"
            },
            "annual_tax_allowance": {
              "type": "number",
              "maximum": 1000000,
              "minimum": 0,
              "title": "Annual Tax Allowance",
              "description": "Tax allowance (Freibetrag) on the tax card, EUR per year",
              "default": 0
            }
          },
          "additionalProperties": false,
          "type": "object",
          "title": "DEProfileIn"
        },
        {
          "type": "null"
        }
      ],
      "description": "German profile (used when country is DE)"
    },
    "uk": {
      "anyOf": [
        {
          "properties": {
            "region": {
              "type": "string",
              "enum": [
                "england",
                "northern-ireland",
                "scotland",
                "wales"
              ],
              "title": "Region",
              "description": "Where the employee lives for income tax (Scotland and Wales set their own rates)",
              "default": "england"
            },
            "tax_code": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 12
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tax Code",
              "description": "PAYE tax code, e.g. 1257L, S1257L, C1257L, K475, BR, D0, NT, 0T, '1257L M1' (default: 1257L with the region's prefix)"
            },
            "ni_category": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "H",
                "J",
                "M",
                "V",
                "Z"
              ],
              "title": "Ni Category",
              "description": "National Insurance category letter (A standard, B reduced, C over State Pension age, H apprentice <25, J deferred, M under 21, V veteran, Z under 21 deferred)",
              "default": "A"
            },
            "period_number": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 52,
                  "minimum": 1
                },
                {
                  "type": "null"
                }
              ],
              "title": "Period Number",
              "description": "Tax week or month number for the cumulative basis; omit for a stand-alone (week 1/month 1) period"
            },
            "previous_pay": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 100000000,
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Previous Pay",
              "description": "Taxable pay in this tax year before this period (cumulative basis)"
            },
            "previous_tax": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 100000000,
                  "minimum": -10000000
                },
                {
                  "type": "null"
                }
              ],
              "title": "Previous Tax",
              "description": "Tax deducted in this tax year before this period (cumulative basis)"
            }
          },
          "additionalProperties": false,
          "type": "object",
          "title": "UKProfileIn"
        },
        {
          "type": "null"
        }
      ],
      "description": "UK profile (used when country is UK)"
    },
    "gross": {
      "type": "number",
      "maximum": 10000000,
      "exclusiveMinimum": 0,
      "title": "Gross",
      "description": "Gross pay for the period, in EUR (DE) or GBP (UK)",
      "examples": [
        4500
      ]
    }
  },
  "required": [
    "country",
    "gross"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "title": "Country",
      "description": "DE or UK"
    },
    "year": {
      "type": "integer",
      "title": "Year",
      "description": "Tax year (UK: year the tax year starts)"
    },
    "tax_year": {
      "type": "string",
      "title": "Tax Year",
      "description": "Tax year label, e.g. 2026 or 2026-27"
    },
    "period": {
      "type": "string",
      "title": "Period",
      "description": "Pay period of all amounts"
    },
    "currency": {
      "type": "string",
      "title": "Currency",
      "description": "EUR or GBP"
    },
    "gross": {
      "type": "number",
      "title": "Gross",
      "description": "Gross pay for the period"
    },
    "net": {
      "type": "number",
      "title": "Net",
      "description": "Net pay: gross minus all employee deductions"
    },
    "employee_deductions": {
      "type": "number",
      "title": "Employee Deductions",
      "description": "Sum of the employee lines"
    },
    "employer_contributions": {
      "type": "number",
      "title": "Employer Contributions",
      "description": "Sum of the employer lines"
    },
    "employer_cost": {
      "type": "number",
      "title": "Employer Cost",
      "description": "Gross plus employer contributions"
    },
    "deduction_rate": {
      "type": "number",
      "title": "Deduction Rate",
      "description": "Employee deductions in % of gross"
    },
    "annual": {
      "properties": {
        "gross": {
          "type": "number",
          "title": "Gross",
          "description": "Gross × periods per year"
        },
        "net": {
          "type": "number",
          "title": "Net",
          "description": "Net × periods per year"
        },
        "employer_cost": {
          "type": "number",
          "title": "Employer Cost",
          "description": "Employer cost × periods per year"
        }
      },
      "type": "object",
      "required": [
        "gross",
        "net",
        "employer_cost"
      ],
      "title": "Annual",
      "description": "The period's figures scaled to a year (periods per year × amount)"
    },
    "lines": {
      "items": {
        "properties": {
          "key": {
            "type": "string",
            "title": "Key",
            "description": "income_tax, solidarity_surcharge, church_tax, health_insurance, care_insurance, pension_insurance, unemployment_insurance, insolvency_levy, national_insurance"
          },
          "label": {
            "type": "string",
            "title": "Label",
            "description": "Name of the deduction in the country's terms"
          },
          "amount": {
            "type": "number",
            "title": "Amount",
            "description": "Amount for the period (negative = refund on the UK cumulative basis)"
          },
          "payer": {
            "type": "string",
            "enum": [
              "employee",
              "employer"
            ],
            "title": "Payer",
            "description": "Who bears it: employee (deducted from gross) or employer (on top)"
          },
          "rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate",
            "description": "Rate in % of base, where a single rate applies"
          },
          "base": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base",
            "description": "Amount the rate applies to (after contribution ceilings) or taxable pay"
          },
          "rule": {
            "type": "string",
            "title": "Rule",
            "description": "The rule applied, in words"
          },
          "source": {
            "type": "string",
            "title": "Source",
            "description": "Official source of the rule and rate"
          }
        },
        "type": "object",
        "required": [
          "key",
          "label",
          "amount",
          "payer",
          "rule",
          "source"
        ],
        "title": "Line"
      },
      "type": "array",
      "title": "Lines",
      "description": "Every deduction and contribution with rule and source"
    },
    "profile": {
      "additionalProperties": true,
      "type": "object",
      "title": "Profile",
      "description": "The profile as applied, including defaults that were filled in"
    },
    "notes": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Notes",
      "description": "Assumptions and what is not included"
    },
    "sources": {
      "items": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "license": {
            "type": "string",
            "title": "License"
          }
        },
        "type": "object",
        "required": [
          "name",
          "url",
          "license"
        ],
        "title": "Source"
      },
      "type": "array",
      "title": "Sources",
      "description": "Official publications used"
    },
    "disclaimer": {
      "type": "string",
      "title": "Disclaimer"
    }
  },
  "required": [
    "country",
    "year",
    "tax_year",
    "period",
    "currency",
    "gross",
    "net",
    "employee_deductions",
    "employer_contributions",
    "employer_cost",
    "deduction_rate",
    "annual",
    "lines",
    "profile",
    "notes",
    "sources",
    "disclaimer"
  ],
  "title": "NetOut",
  "x-fastmcp-top-level-schema": "NetOut"
}
🟢calculate_gross_salary(country, year, period, de, uk, ...)

Finds the smallest gross pay (to the cent) whose net pay reaches the target, by bisection over the same engine as /net. Returns the full breakdown for that gross pay and the remaining difference to the target.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "enum": [
        "DE",
        "UK",
        "GB"
      ],
      "title": "Country",
      "description": "DE or UK (GB is accepted as UK)"
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2000,
      "title": "Year",
      "description": "Tax year. UK: the year the tax year starts in (2026 = 2026-27)",
      "default": 2026
    },
    "period": {
      "type": "string",
      "enum": [
        "year",
        "month",
        "week",
        "day",
        "fortnight",
        "four_weeks"
      ],
      "title": "Period",
      "description": "Pay period of the amount: year, month, week, day (DE only), fortnight or four_weeks (UK only)",
      "default": "month"
    },
    "de": {
      "anyOf": [
        {
          "properties": {
            "tax_class": {
              "type": "integer",
              "maximum": 6,
              "minimum": 1,
              "title": "Tax Class",
              "description": "Steuerklasse 1-6 (I single, II single parent, III/V married split, IV married, VI second job)",
              "default": 1
            },
            "state": {
              "type": "string",
              "maxLength": 2,
              "minLength": 2,
              "title": "State",
              "description": "Bundesland code of the workplace: BW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN, ST, SH, TH (church-tax rate; SN = Saxony care-insurance split)",
              "default": "NW"
            },
            "church": {
              "type": "boolean",
              "title": "Church",
              "description": "Member of a church that levies church tax",
              "default": false
            },
            "children": {
              "type": "integer",
              "maximum": 20,
              "minimum": 0,
              "title": "Children",
              "description": "Children under 25: care-insurance discounts from the 2nd child and, by default, the child allowances",
              "default": 0
            },
            "child_allowances": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 20,
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Child Allowances",
              "description": "Kinderfreibeträge on the tax card in 0.5 steps (default: children); 0.5 per child when the parents split them"
            },
            "parent": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Parent",
              "description": "Has ever had a child, so no childless surcharge in care insurance (default: children > 0)"
            },
            "birth_year": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 2015,
                  "minimum": 1900
                },
                {
                  "type": "null"
                }
              ],
              "title": "Birth Year",
              "description": "Year of birth: childless surcharge only from 23, age relief from 65; 67+ is rejected"
            },
            "health_insurance": {
              "type": "string",
              "enum": [
                "statutory",
                "private"
              ],
              "title": "Health Insurance",
              "description": "Only statutory health insurance is supported so far",
              "default": "statutory"
            },
            "health_insurance_addon_rate": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 10,
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Health Insurance Addon Rate",
              "description": "The fund's add-on rate (Zusatzbeitrag) in %, e.g. 2.9; default the official average of the year"
            },
            "factor": {
              "anyOf": [
                {
                  "type": "number",
                  "exclusiveMaximum": 1,
                  "exclusiveMinimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Factor",
              "description": "Faktorverfahren factor for tax class IV, three decimals (e.g. 0.912)"
            },
            "annual_tax_allowance": {
              "type": "number",
              "maximum": 1000000,
              "minimum": 0,
              "title": "Annual Tax Allowance",
              "description": "Tax allowance (Freibetrag) on the tax card, EUR per year",
              "default": 0
            }
          },
          "additionalProperties": false,
          "type": "object",
          "title": "DEProfileIn"
        },
        {
          "type": "null"
        }
      ],
      "description": "German profile (used when country is DE)"
    },
    "uk": {
      "anyOf": [
        {
          "properties": {
            "region": {
              "type": "string",
              "enum": [
                "england",
                "northern-ireland",
                "scotland",
                "wales"
              ],
              "title": "Region",
              "description": "Where the employee lives for income tax (Scotland and Wales set their own rates)",
              "default": "england"
            },
            "tax_code": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 12
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tax Code",
              "description": "PAYE tax code, e.g. 1257L, S1257L, C1257L, K475, BR, D0, NT, 0T, '1257L M1' (default: 1257L with the region's prefix)"
            },
            "ni_category": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "H",
                "J",
                "M",
                "V",
                "Z"
              ],
              "title": "Ni Category",
              "description": "National Insurance category letter (A standard, B reduced, C over State Pension age, H apprentice <25, J deferred, M under 21, V veteran, Z under 21 deferred)",
              "default": "A"
            },
            "period_number": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 52,
                  "minimum": 1
                },
                {
                  "type": "null"
                }
              ],
              "title": "Period Number",
              "description": "Tax week or month number for the cumulative basis; omit for a stand-alone (week 1/month 1) period"
            },
            "previous_pay": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 100000000,
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Previous Pay",
              "description": "Taxable pay in this tax year before this period (cumulative basis)"
            },
            "previous_tax": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 100000000,
                  "minimum": -10000000
                },
                {
                  "type": "null"
                }
              ],
              "title": "Previous Tax",
              "description": "Tax deducted in this tax year before this period (cumulative basis)"
            }
          },
          "additionalProperties": false,
          "type": "object",
          "title": "UKProfileIn"
        },
        {
          "type": "null"
        }
      ],
      "description": "UK profile (used when country is UK)"
    },
    "net": {
      "type": "number",
      "maximum": 5000000,
      "exclusiveMinimum": 0,
      "title": "Net",
      "description": "Target net pay for the period, in EUR (DE) or GBP (UK)",
      "examples": [
        3000
      ]
    }
  },
  "required": [
    "country",
    "net"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "title": "Country",
      "description": "DE or UK"
    },
    "year": {
      "type": "integer",
      "title": "Year",
      "description": "Tax year (UK: year the tax year starts)"
    },
    "tax_year": {
      "type": "string",
      "title": "Tax Year",
      "description": "Tax year label, e.g. 2026 or 2026-27"
    },
    "period": {
      "type": "string",
      "title": "Period",
      "description": "Pay period of all amounts"
    },
    "currency": {
      "type": "string",
      "title": "Currency",
      "description": "EUR or GBP"
    },
    "gross": {
      "type": "number",
      "title": "Gross",
      "description": "Gross pay for the period"
    },
    "net": {
      "type": "number",
      "title": "Net",
      "description": "Net pay: gross minus all employee deductions"
    },
    "employee_deductions": {
      "type": "number",
      "title": "Employee Deductions",
      "description": "Sum of the employee lines"
    },
    "employer_contributions": {
      "type": "number",
      "title": "Employer Contributions",
      "description": "Sum of the employer lines"
    },
    "employer_cost": {
      "type": "number",
      "title": "Employer Cost",
      "description": "Gross plus employer contributions"
    },
    "deduction_rate": {
      "type": "number",
      "title": "Deduction Rate",
      "description": "Employee deductions in % of gross"
    },
    "annual": {
      "properties": {
        "gross": {
          "type": "number",
          "title": "Gross",
          "description": "Gross × periods per year"
        },
        "net": {
          "type": "number",
          "title": "Net",
          "description": "Net × periods per year"
        },
        "employer_cost": {
          "type": "number",
          "title": "Employer Cost",
          "description": "Employer cost × periods per year"
        }
      },
      "type": "object",
      "required": [
        "gross",
        "net",
        "employer_cost"
      ],
      "title": "Annual",
      "description": "The period's figures scaled to a year (periods per year × amount)"
    },
    "lines": {
      "items": {
        "properties": {
          "key": {
            "type": "string",
            "title": "Key",
            "description": "income_tax, solidarity_surcharge, church_tax, health_insurance, care_insurance, pension_insurance, unemployment_insurance, insolvency_levy, national_insurance"
          },
          "label": {
            "type": "string",
            "title": "Label",
            "description": "Name of the deduction in the country's terms"
          },
          "amount": {
            "type": "number",
            "title": "Amount",
            "description": "Amount for the period (negative = refund on the UK cumulative basis)"
          },
          "payer": {
            "type": "string",
            "enum": [
              "employee",
              "employer"
            ],
            "title": "Payer",
            "description": "Who bears it: employee (deducted from gross) or employer (on top)"
          },
          "rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate",
            "description": "Rate in % of base, where a single rate applies"
          },
          "base": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base",
            "description": "Amount the rate applies to (after contribution ceilings) or taxable pay"
          },
          "rule": {
            "type": "string",
            "title": "Rule",
            "description": "The rule applied, in words"
          },
          "source": {
            "type": "string",
            "title": "Source",
            "description": "Official source of the rule and rate"
          }
        },
        "type": "object",
        "required": [
          "key",
          "label",
          "amount",
          "payer",
          "rule",
          "source"
        ],
        "title": "Line"
      },
      "type": "array",
      "title": "Lines",
      "description": "Every deduction and contribution with rule and source"
    },
    "profile": {
      "additionalProperties": true,
      "type": "object",
      "title": "Profile",
      "description": "The profile as applied, including defaults that were filled in"
    },
    "notes": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Notes",
      "description": "Assumptions and what is not included"
    },
    "sources": {
      "items": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "license": {
            "type": "string",
            "title": "License"
          }
        },
        "type": "object",
        "required": [
          "name",
          "url",
          "license"
        ],
        "title": "Source"
      },
      "type": "array",
      "title": "Sources",
      "description": "Official publications used"
    },
    "disclaimer": {
      "type": "string",
      "title": "Disclaimer"
    },
    "target_net": {
      "type": "number",
      "title": "Target Net",
      "description": "The net pay that was asked for"
    },
    "difference": {
      "type": "number",
      "title": "Difference",
      "description": "net - target_net (0 when the target is reachable to the cent)"
    }
  },
  "required": [
    "country",
    "year",
    "tax_year",
    "period",
    "currency",
    "gross",
    "net",
    "employee_deductions",
    "employer_contributions",
    "employer_cost",
    "deduction_rate",
    "annual",
    "lines",
    "profile",
    "notes",
    "sources",
    "disclaimer",
    "target_net",
    "difference"
  ],
  "title": "GrossOut",
  "x-fastmcp-top-level-schema": "GrossOut"
}
🟢compare_net_salaries(scenarios)

Runs up to 8 gross-to-net scenarios and returns them side by side: net, deductions, employer cost and the split into income tax and social contributions. Amounts stay in each country's currency (no FX conversion).

Input Schema

{
  "type": "object",
  "properties": {
    "scenarios": {
      "items": {
        "properties": {
          "country": {
            "type": "string",
            "enum": [
              "DE",
              "UK",
              "GB"
            ],
            "title": "Country",
            "description": "DE or UK (GB is accepted as UK)"
          },
          "year": {
            "type": "integer",
            "maximum": 2100,
            "minimum": 2000,
            "title": "Year",
            "description": "Tax year. UK: the year the tax year starts in (2026 = 2026-27)",
            "default": 2026
          },
          "period": {
            "type": "string",
            "enum": [
              "year",
              "month",
              "week",
              "day",
              "fortnight",
              "four_weeks"
            ],
            "title": "Period",
            "description": "Pay period of the amount: year, month, week, day (DE only), fortnight or four_weeks (UK only)",
            "default": "month"
          },
          "de": {
            "anyOf": [
              {
                "properties": {
                  "tax_class": {
                    "type": "integer",
                    "maximum": 6,
                    "minimum": 1,
                    "title": "Tax Class",
                    "description": "Steuerklasse 1-6 (I single, II single parent, III/V married split, IV married, VI second job)",
                    "default": 1
                  },
                  "state": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2,
                    "title": "State",
                    "description": "Bundesland code of the workplace: BW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN, ST, SH, TH (church-tax rate; SN = Saxony care-insurance split)",
                    "default": "NW"
                  },
                  "church": {
                    "type": "boolean",
                    "title": "Church",
                    "description": "Member of a church that levies church tax",
                    "default": false
                  },
                  "children": {
                    "type": "integer",
                    "maximum": 20,
                    "minimum": 0,
                    "title": "Children",
                    "description": "Children under 25: care-insurance discounts from the 2nd child and, by default, the child allowances",
                    "default": 0
                  },
                  "child_allowances": {
                    "anyOf": [
                      {
                        "type": "number",
                        "maximum": 20,
                        "minimum": 0
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Child Allowances",
                    "description": "Kinderfreibeträge on the tax card in 0.5 steps (default: children); 0.5 per child when the parents split them"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Parent",
                    "description": "Has ever had a child, so no childless surcharge in care insurance (default: children > 0)"
                  },
                  "birth_year": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "maximum": 2015,
                        "minimum": 1900
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Birth Year",
                    "description": "Year of birth: childless surcharge only from 23, age relief from 65; 67+ is rejected"
                  },
                  "health_insurance": {
                    "type": "string",
                    "enum": [
                      "statutory",
                      "private"
                    ],
                    "title": "Health Insurance",
                    "description": "Only statutory health insurance is supported so far",
                    "default": "statutory"
                  },
                  "health_insurance_addon_rate": {
                    "anyOf": [
                      {
                        "type": "number",
                        "maximum": 10,
                        "minimum": 0
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Health Insurance Addon Rate",
                    "description": "The fund's add-on rate (Zusatzbeitrag) in %, e.g. 2.9; default the official average of the year"
                  },
                  "factor": {
                    "anyOf": [
                      {
                        "type": "number",
                        "exclusiveMaximum": 1,
                        "exclusiveMinimum": 0
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Factor",
                    "description": "Faktorverfahren factor for tax class IV, three decimals (e.g. 0.912)"
                  },
                  "annual_tax_allowance": {
                    "type": "number",
                    "maximum": 1000000,
                    "minimum": 0,
                    "title": "Annual Tax Allowance",
                    "description": "Tax allowance (Freibetrag) on the tax card, EUR per year",
                    "default": 0
                  }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "DEProfileIn"
              },
              {
                "type": "null"
              }
            ],
            "description": "German profile (used when country is DE)"
          },
          "uk": {
            "anyOf": [
              {
                "properties": {
                  "region": {
                    "type": "string",
                    "enum": [
                      "england",
                      "northern-ireland",
                      "scotland",
                      "wales"
                    ],
                    "title": "Region",
                    "description": "Where the employee lives for income tax (Scotland and Wales set their own rates)",
                    "default": "england"
                  },
                  "tax_code": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 12
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Tax Code",
                    "description": "PAYE tax code, e.g. 1257L, S1257L, C1257L, K475, BR, D0, NT, 0T, '1257L M1' (default: 1257L with the region's prefix)"
                  },
                  "ni_category": {
                    "type": "string",
                    "enum": [
                      "A",
                      "B",
                      "C",
                      "H",
                      "J",
                      "M",
                      "V",
                      "Z"
                    ],
                    "title": "Ni Category",
                    "description": "National Insurance category letter (A standard, B reduced, C over State Pension age, H apprentice <25, J deferred, M under 21, V veteran, Z under 21 deferred)",
                    "default": "A"
                  },
                  "period_number": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "maximum": 52,
                        "minimum": 1
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Period Number",
                    "description": "Tax week or month number for the cumulative basis; omit for a stand-alone (week 1/month 1) period"
                  },
                  "previous_pay": {
                    "anyOf": [
                      {
                        "type": "number",
                        "maximum": 100000000,
                        "minimum": 0
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Previous Pay",
                    "description": "Taxable pay in this tax year before this period (cumulative basis)"
                  },
                  "previous_tax": {
                    "anyOf": [
                      {
                        "type": "number",
                        "maximum": 100000000,
                        "minimum": -10000000
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Previous Tax",
                    "description": "Tax deducted in this tax year before this period (cumulative basis)"
                  }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "UKProfileIn"
              },
              {
                "type": "null"
              }
            ],
            "description": "UK profile (used when country is UK)"
          },
          "gross": {
            "type": "number",
            "maximum": 10000000,
            "exclusiveMinimum": 0,
            "title": "Gross",
            "description": "Gross pay for the period, in EUR (DE) or GBP (UK)",
            "examples": [
              4500
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "country",
          "gross"
        ],
        "title": "NetIn"
      },
      "type": "array",
      "maxItems": 8,
      "minItems": 1,
      "title": "Scenarios",
      "description": "Up to 8 gross-to-net scenarios"
    }
  },
  "required": [
    "scenarios"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "rows": {
      "items": {
        "properties": {
          "label": {
            "type": "string",
            "title": "Label",
            "description": "Country, tax year and main profile setting"
          },
          "country": {
            "type": "string",
            "title": "Country"
          },
          "tax_year": {
            "type": "string",
            "title": "Tax Year"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "period": {
            "type": "string",
            "title": "Period"
          },
          "gross": {
            "type": "number",
            "title": "Gross"
          },
          "net": {
            "type": "number",
            "title": "Net"
          },
          "employee_deductions": {
            "type": "number",
            "title": "Employee Deductions"
          },
          "employer_cost": {
            "type": "number",
            "title": "Employer Cost"
          },
          "deduction_rate": {
            "type": "number",
            "title": "Deduction Rate"
          },
          "annual_net": {
            "type": "number",
            "title": "Annual Net"
          },
          "income_tax": {
            "type": "number",
            "title": "Income Tax",
            "description": "Income/wage tax plus surcharges (solidarity, church)"
          },
          "social_contributions": {
            "type": "number",
            "title": "Social Contributions",
            "description": "Employee social insurance or National Insurance"
          }
        },
        "type": "object",
        "required": [
          "label",
          "country",
          "tax_year",
          "currency",
          "period",
          "gross",
          "net",
          "employee_deductions",
          "employer_cost",
          "deduction_rate",
          "annual_net",
          "income_tax",
          "social_contributions"
        ],
        "title": "CompareRow"
      },
      "type": "array",
      "title": "Rows"
    },
    "notes": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Notes"
    },
    "disclaimer": {
      "type": "string",
      "title": "Disclaimer"
    }
  },
  "required": [
    "rows",
    "notes",
    "disclaimer"
  ],
  "title": "CompareOut",
  "x-fastmcp-top-level-schema": "CompareOut"
}
🟢get_payroll_parameters(country, year)

Allowances, tax bands, contribution rates and ceilings the engine uses for the country and year, each with its official source.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "enum": [
        "DE",
        "UK",
        "GB"
      ],
      "title": "Country",
      "description": "DE or UK (GB is accepted)"
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2000,
      "title": "Year",
      "description": "Tax year (UK: start year, 2026 = 2026-27)",
      "default": 2026
    }
  },
  "required": [
    "country"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "title": "Country"
    },
    "year": {
      "type": "integer",
      "title": "Year"
    },
    "tax_year": {
      "type": "string",
      "title": "Tax Year"
    },
    "currency": {
      "type": "string",
      "title": "Currency"
    },
    "parameters": {
      "items": {
        "properties": {
          "key": {
            "type": "string",
            "title": "Key"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "value": {
            "type": "number",
            "title": "Value"
          },
          "unit": {
            "type": "string",
            "title": "Unit"
          },
          "source": {
            "type": "string",
            "title": "Source"
          }
        },
        "type": "object",
        "required": [
          "key",
          "label",
          "value",
          "unit",
          "source"
        ],
        "title": "ParameterRow"
      },
      "type": "array",
      "title": "Parameters"
    }
  },
  "required": [
    "country",
    "year",
    "tax_year",
    "currency",
    "parameters"
  ],
  "title": "ParametersOut",
  "x-fastmcp-top-level-schema": "ParametersOut"
}
🟢list_salary_countries

Coverage: which countries and tax years are available, which pay periods and profile fields they accept, the official test data each engine is checked against, and which countries are planned next.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "countries": {
      "items": {
        "properties": {
          "country": {
            "type": "string",
            "title": "Country",
            "description": "Country code"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "planned"
            ],
            "title": "Status"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "years": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Years",
            "description": "Supported tax years (UK: start year)"
          },
          "periods": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Periods"
          },
          "profile_fields": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Profile Fields"
          },
          "conformance": {
            "type": "string",
            "title": "Conformance",
            "description": "Ground truth the engine is tested against"
          }
        },
        "type": "object",
        "required": [
          "country",
          "name",
          "status",
          "currency",
          "years",
          "periods",
          "profile_fields",
          "conformance"
        ],
        "title": "CountryInfo"
      },
      "type": "array",
      "title": "Countries"
    }
  },
  "required": [
    "countries"
  ],
  "title": "CountriesOut",
  "x-fastmcp-top-level-schema": "CountriesOut"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools