MCP 服务器

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

com.syntropicapi/salary-net
商业与运营 金融与投资 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Calculates gross-to-net and net-to-gross salaries for Germany and the UK, including deductions, employer costs and payroll parameters.

calculate_gross_salary
Net to gross: the gross pay needed for a target net
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.
只读 幂等
输入模式
{'type': 'object', 'required': ['country', 'net'], 'properties': {'de': {'anyOf': [{'type': 'object', 'title': 'DEProfileIn', 'properties': {'state': {'type': 'string', 'title': 'State', 'default': 'NW', 'maxLength': 2, 'minLength': 2, '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)'}, 'church': {'type': 'boolean', 'title': 'Church', 'default': False, 'description': 'Member of a church that levies church tax'}, 'factor': {'anyOf': [{'type': 'number', 'exclusiveMaximum': 1.0, 'exclusiveMinimum': 0.0}, {'type': 'null'}], 'title': 'Factor', 'description': 'Faktorverfahren factor for tax class IV, three decimals (e.g. 0.912)'}, 'parent': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Parent', 'description': 'Has ever had a child, so no childless surcharge in care insurance (default: children > 0)'}, 'children': {'type': 'integer', 'title': 'Children', 'default': 0, 'maximum': 20.0, 'minimum': 0.0, 'description': 'Children under 25: care-insurance discounts from the 2nd child and, by default, the child allowances'}, 'tax_class': {'type': 'integer', 'title': 'Tax Class', 'default': 1, 'maximum': 6.0, 'minimum': 1.0, 'description': 'Steuerklasse 1-6 (I single, II single parent, III/V married split, IV married, VI second job)'}, 'birth_year': {'anyOf': [{'type': 'integer', 'maximum': 2015.0, 'minimum': 1900.0}, {'type': 'null'}], 'title': 'Birth Year', 'description': 'Year of birth: childless surcharge only from 23, age relief from 65; 67+ is rejected'}, 'child_allowances': {'anyOf': [{'type': 'number', 'maximum': 20.0, 'minimum': 0.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'}, 'health_insurance': {'enum': ['statutory', 'private'], 'type': 'string', 'title': 'Health Insurance', 'default': 'statutory', 'description': 'Only statutory health insurance is supported so far'}, 'annual_tax_allowance': {'type': 'number', 'title': 'Annual Tax Allowance', 'default': 0, 'maximum': 1000000.0, 'minimum': 0.0, 'description': 'Tax allowance (Freibetrag) on the tax card, EUR per year'}, 'health_insurance_addon_rate': {'anyOf': [{'type': 'number', 'maximum': 10.0, 'minimum': 0.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"}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'German profile (used when country is DE)'}, 'uk': {'anyOf': [{'type': 'object', 'title': 'UKProfileIn', 'properties': {'region': {'enum': ['england', 'northern-ireland', 'scotland', 'wales'], 'type': 'string', 'title': 'Region', 'default': 'england', 'description': 'Where the employee lives for income tax (Scotland and Wales set their own rates)'}, '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': {'enum': ['A', 'B', 'C', 'H', 'J', 'M', 'V', 'Z'], 'type': 'string', 'title': 'Ni Category', 'default': 'A', '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)'}, 'previous_pay': {'anyOf': [{'type': 'number', 'maximum': 100000000.0, 'minimum': 0.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.0, 'minimum': -10000000.0}, {'type': 'null'}], 'title': 'Previous Tax', 'description': 'Tax deducted in this tax year before this period (cumulative basis)'}, 'period_number': {'anyOf': [{'type': 'integer', 'maximum': 52.0, 'minimum': 1.0}, {'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'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'UK profile (used when country is UK)'}, 'net': {'type': 'number', 'title': 'Net', 'maximum': 5000000.0, 'examples': [3000], 'description': 'Target net pay for the period, in EUR (DE) or GBP (UK)', 'exclusiveMinimum': 0.0}, 'year': {'type': 'integer', 'title': 'Year', 'default': 2026, 'maximum': 2100.0, 'minimum': 2000.0, 'description': 'Tax year. UK: the year the tax year starts in (2026 = 2026-27)'}, 'period': {'enum': ['year', 'month', 'week', 'day', 'fortnight', 'four_weeks'], 'type': 'string', 'title': 'Period', 'default': 'month', 'description': 'Pay period of the amount: year, month, week, day (DE only), fortnight or four_weeks (UK only)'}, 'country': {'enum': ['DE', 'UK', 'GB'], 'type': 'string', 'title': 'Country', 'description': 'DE or UK (GB is accepted as UK)'}}}
输出模式
{'type': 'object', 'title': 'GrossOut', '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'], 'properties': {'net': {'type': 'number', 'title': 'Net', 'description': 'Net pay: gross minus all employee deductions'}, 'year': {'type': 'integer', 'title': 'Year', 'description': 'Tax year (UK: year the tax year starts)'}, 'gross': {'type': 'number', 'title': 'Gross', 'description': 'Gross pay for the period'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'title': 'Line', 'required': ['key', 'label', 'amount', 'payer', 'rule', 'source'], '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'}, 'base': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Base', 'description': 'Amount the rate applies to (after contribution ceilings) or taxable pay'}, 'rate': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Rate', 'description': 'Rate in % of base, where a single rate applies'}, 'rule': {'type': 'string', 'title': 'Rule', 'description': 'The rule applied, in words'}, 'label': {'type': 'string', 'title': 'Label', 'description': "Name of the deduction in the country's terms"}, 'payer': {'enum': ['employee', 'employer'], 'type': 'string', 'title': 'Payer', 'description': 'Who bears it: employee (deducted from gross) or employer (on top)'}, 'amount': {'type': 'number', 'title': 'Amount', 'description': 'Amount for the period (negative = refund on the UK cumulative basis)'}, 'source': {'type': 'string', 'title': 'Source', 'description': 'Official source of the rule and rate'}}}, 'title': 'Lines', 'description': 'Every deduction and contribution with rule and source'}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Notes', 'description': 'Assumptions and what is not included'}, 'annual': {'type': 'object', 'title': 'Annual', 'required': ['gross', 'net', 'employer_cost'], 'properties': {'net': {'type': 'number', 'title': 'Net', 'description': 'Net Ã\x97 periods per year'}, 'gross': {'type': 'number', 'title': 'Gross', 'description': 'Gross Ã\x97 periods per year'}, 'employer_cost': {'type': 'number', 'title': 'Employer Cost', 'description': 'Employer cost Ã\x97 periods per year'}}, 'description': "The period's figures scaled to a year (periods per year Ã\x97 amount)"}, 'period': {'type': 'string', 'title': 'Period', 'description': 'Pay period of all amounts'}, 'country': {'type': 'string', 'title': 'Country', 'description': 'DE or UK'}, 'profile': {'type': 'object', 'title': 'Profile', 'description': 'The profile as applied, including defaults that were filled in', 'additionalProperties': True}, 'sources': {'type': 'array', 'items': {'type': 'object', 'title': 'Source', 'required': ['name', 'url', 'license'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'name': {'type': 'string', 'title': 'Name'}, 'license': {'type': 'string', 'title': 'License'}}}, 'title': 'Sources', 'description': 'Official publications used'}, 'currency': {'type': 'string', 'title': 'Currency', 'description': 'EUR or GBP'}, 'tax_year': {'type': 'string', 'title': 'Tax Year', 'description': 'Tax year label, e.g. 2026 or 2026-27'}, 'difference': {'type': 'number', 'title': 'Difference', 'description': 'net - target_net (0 when the target is reachable to the cent)'}, 'disclaimer': {'type': 'string', 'title': 'Disclaimer'}, 'target_net': {'type': 'number', 'title': 'Target Net', 'description': 'The net pay that was asked for'}, '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'}, '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'}}, 'x-fastmcp-top-level-schema': 'GrossOut'}
calculate_net_salary
Gross to net: net pay, deductions and employer cost
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.
只读 幂等
输入模式
{'type': 'object', 'required': ['country', 'gross'], 'properties': {'de': {'anyOf': [{'type': 'object', 'title': 'DEProfileIn', 'properties': {'state': {'type': 'string', 'title': 'State', 'default': 'NW', 'maxLength': 2, 'minLength': 2, '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)'}, 'church': {'type': 'boolean', 'title': 'Church', 'default': False, 'description': 'Member of a church that levies church tax'}, 'factor': {'anyOf': [{'type': 'number', 'exclusiveMaximum': 1.0, 'exclusiveMinimum': 0.0}, {'type': 'null'}], 'title': 'Factor', 'description': 'Faktorverfahren factor for tax class IV, three decimals (e.g. 0.912)'}, 'parent': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Parent', 'description': 'Has ever had a child, so no childless surcharge in care insurance (default: children > 0)'}, 'children': {'type': 'integer', 'title': 'Children', 'default': 0, 'maximum': 20.0, 'minimum': 0.0, 'description': 'Children under 25: care-insurance discounts from the 2nd child and, by default, the child allowances'}, 'tax_class': {'type': 'integer', 'title': 'Tax Class', 'default': 1, 'maximum': 6.0, 'minimum': 1.0, 'description': 'Steuerklasse 1-6 (I single, II single parent, III/V married split, IV married, VI second job)'}, 'birth_year': {'anyOf': [{'type': 'integer', 'maximum': 2015.0, 'minimum': 1900.0}, {'type': 'null'}], 'title': 'Birth Year', 'description': 'Year of birth: childless surcharge only from 23, age relief from 65; 67+ is rejected'}, 'child_allowances': {'anyOf': [{'type': 'number', 'maximum': 20.0, 'minimum': 0.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'}, 'health_insurance': {'enum': ['statutory', 'private'], 'type': 'string', 'title': 'Health Insurance', 'default': 'statutory', 'description': 'Only statutory health insurance is supported so far'}, 'annual_tax_allowance': {'type': 'number', 'title': 'Annual Tax Allowance', 'default': 0, 'maximum': 1000000.0, 'minimum': 0.0, 'description': 'Tax allowance (Freibetrag) on the tax card, EUR per year'}, 'health_insurance_addon_rate': {'anyOf': [{'type': 'number', 'maximum': 10.0, 'minimum': 0.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"}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'German profile (used when country is DE)'}, 'uk': {'anyOf': [{'type': 'object', 'title': 'UKProfileIn', 'properties': {'region': {'enum': ['england', 'northern-ireland', 'scotland', 'wales'], 'type': 'string', 'title': 'Region', 'default': 'england', 'description': 'Where the employee lives for income tax (Scotland and Wales set their own rates)'}, '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': {'enum': ['A', 'B', 'C', 'H', 'J', 'M', 'V', 'Z'], 'type': 'string', 'title': 'Ni Category', 'default': 'A', '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)'}, 'previous_pay': {'anyOf': [{'type': 'number', 'maximum': 100000000.0, 'minimum': 0.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.0, 'minimum': -10000000.0}, {'type': 'null'}], 'title': 'Previous Tax', 'description': 'Tax deducted in this tax year before this period (cumulative basis)'}, 'period_number': {'anyOf': [{'type': 'integer', 'maximum': 52.0, 'minimum': 1.0}, {'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'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'UK profile (used when country is UK)'}, 'year': {'type': 'integer', 'title': 'Year', 'default': 2026, 'maximum': 2100.0, 'minimum': 2000.0, 'description': 'Tax year. UK: the year the tax year starts in (2026 = 2026-27)'}, 'gross': {'type': 'number', 'title': 'Gross', 'maximum': 10000000.0, 'examples': [4500], 'description': 'Gross pay for the period, in EUR (DE) or GBP (UK)', 'exclusiveMinimum': 0.0}, 'period': {'enum': ['year', 'month', 'week', 'day', 'fortnight', 'four_weeks'], 'type': 'string', 'title': 'Period', 'default': 'month', 'description': 'Pay period of the amount: year, month, week, day (DE only), fortnight or four_weeks (UK only)'}, 'country': {'enum': ['DE', 'UK', 'GB'], 'type': 'string', 'title': 'Country', 'description': 'DE or UK (GB is accepted as UK)'}}}
输出模式
{'type': 'object', 'title': 'NetOut', 'required': ['country', 'year', 'tax_year', 'period', 'currency', 'gross', 'net', 'employee_deductions', 'employer_contributions', 'employer_cost', 'deduction_rate', 'annual', 'lines', 'profile', 'notes', 'sources', 'disclaimer'], 'properties': {'net': {'type': 'number', 'title': 'Net', 'description': 'Net pay: gross minus all employee deductions'}, 'year': {'type': 'integer', 'title': 'Year', 'description': 'Tax year (UK: year the tax year starts)'}, 'gross': {'type': 'number', 'title': 'Gross', 'description': 'Gross pay for the period'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'title': 'Line', 'required': ['key', 'label', 'amount', 'payer', 'rule', 'source'], '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'}, 'base': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Base', 'description': 'Amount the rate applies to (after contribution ceilings) or taxable pay'}, 'rate': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Rate', 'description': 'Rate in % of base, where a single rate applies'}, 'rule': {'type': 'string', 'title': 'Rule', 'description': 'The rule applied, in words'}, 'label': {'type': 'string', 'title': 'Label', 'description': "Name of the deduction in the country's terms"}, 'payer': {'enum': ['employee', 'employer'], 'type': 'string', 'title': 'Payer', 'description': 'Who bears it: employee (deducted from gross) or employer (on top)'}, 'amount': {'type': 'number', 'title': 'Amount', 'description': 'Amount for the period (negative = refund on the UK cumulative basis)'}, 'source': {'type': 'string', 'title': 'Source', 'description': 'Official source of the rule and rate'}}}, 'title': 'Lines', 'description': 'Every deduction and contribution with rule and source'}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Notes', 'description': 'Assumptions and what is not included'}, 'annual': {'type': 'object', 'title': 'Annual', 'required': ['gross', 'net', 'employer_cost'], 'properties': {'net': {'type': 'number', 'title': 'Net', 'description': 'Net Ã\x97 periods per year'}, 'gross': {'type': 'number', 'title': 'Gross', 'description': 'Gross Ã\x97 periods per year'}, 'employer_cost': {'type': 'number', 'title': 'Employer Cost', 'description': 'Employer cost Ã\x97 periods per year'}}, 'description': "The period's figures scaled to a year (periods per year Ã\x97 amount)"}, 'period': {'type': 'string', 'title': 'Period', 'description': 'Pay period of all amounts'}, 'country': {'type': 'string', 'title': 'Country', 'description': 'DE or UK'}, 'profile': {'type': 'object', 'title': 'Profile', 'description': 'The profile as applied, including defaults that were filled in', 'additionalProperties': True}, 'sources': {'type': 'array', 'items': {'type': 'object', 'title': 'Source', 'required': ['name', 'url', 'license'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'name': {'type': 'string', 'title': 'Name'}, 'license': {'type': 'string', 'title': 'License'}}}, 'title': 'Sources', 'description': 'Official publications used'}, 'currency': {'type': 'string', 'title': 'Currency', 'description': 'EUR or GBP'}, 'tax_year': {'type': 'string', 'title': 'Tax Year', 'description': 'Tax year label, e.g. 2026 or 2026-27'}, 'disclaimer': {'type': 'string', 'title': 'Disclaimer'}, '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'}, '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'}}, 'x-fastmcp-top-level-schema': 'NetOut'}
compare_net_salaries
Compare net pay across countries, years and profiles
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).
只读 幂等
输入模式
{'type': 'object', 'required': ['scenarios'], 'properties': {'scenarios': {'type': 'array', 'items': {'type': 'object', 'title': 'NetIn', 'required': ['country', 'gross'], 'properties': {'de': {'anyOf': [{'type': 'object', 'title': 'DEProfileIn', 'properties': {'state': {'type': 'string', 'title': 'State', 'default': 'NW', 'maxLength': 2, 'minLength': 2, '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)'}, 'church': {'type': 'boolean', 'title': 'Church', 'default': False, 'description': 'Member of a church that levies church tax'}, 'factor': {'anyOf': [{'type': 'number', 'exclusiveMaximum': 1.0, 'exclusiveMinimum': 0.0}, {'type': 'null'}], 'title': 'Factor', 'description': 'Faktorverfahren factor for tax class IV, three decimals (e.g. 0.912)'}, 'parent': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Parent', 'description': 'Has ever had a child, so no childless surcharge in care insurance (default: children > 0)'}, 'children': {'type': 'integer', 'title': 'Children', 'default': 0, 'maximum': 20.0, 'minimum': 0.0, 'description': 'Children under 25: care-insurance discounts from the 2nd child and, by default, the child allowances'}, 'tax_class': {'type': 'integer', 'title': 'Tax Class', 'default': 1, 'maximum': 6.0, 'minimum': 1.0, 'description': 'Steuerklasse 1-6 (I single, II single parent, III/V married split, IV married, VI second job)'}, 'birth_year': {'anyOf': [{'type': 'integer', 'maximum': 2015.0, 'minimum': 1900.0}, {'type': 'null'}], 'title': 'Birth Year', 'description': 'Year of birth: childless surcharge only from 23, age relief from 65; 67+ is rejected'}, 'child_allowances': {'anyOf': [{'type': 'number', 'maximum': 20.0, 'minimum': 0.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'}, 'health_insurance': {'enum': ['statutory', 'private'], 'type': 'string', 'title': 'Health Insurance', 'default': 'statutory', 'description': 'Only statutory health insurance is supported so far'}, 'annual_tax_allowance': {'type': 'number', 'title': 'Annual Tax Allowance', 'default': 0, 'maximum': 1000000.0, 'minimum': 0.0, 'description': 'Tax allowance (Freibetrag) on the tax card, EUR per year'}, 'health_insurance_addon_rate': {'anyOf': [{'type': 'number', 'maximum': 10.0, 'minimum': 0.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"}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'German profile (used when country is DE)'}, 'uk': {'anyOf': [{'type': 'object', 'title': 'UKProfileIn', 'properties': {'region': {'enum': ['england', 'northern-ireland', 'scotland', 'wales'], 'type': 'string', 'title': 'Region', 'default': 'england', 'description': 'Where the employee lives for income tax (Scotland and Wales set their own rates)'}, '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': {'enum': ['A', 'B', 'C', 'H', 'J', 'M', 'V', 'Z'], 'type': 'string', 'title': 'Ni Category', 'default': 'A', '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)'}, 'previous_pay': {'anyOf': [{'type': 'number', 'maximum': 100000000.0, 'minimum': 0.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.0, 'minimum': -10000000.0}, {'type': 'null'}], 'title': 'Previous Tax', 'description': 'Tax deducted in this tax year before this period (cumulative basis)'}, 'period_number': {'anyOf': [{'type': 'integer', 'maximum': 52.0, 'minimum': 1.0}, {'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'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'UK profile (used when country is UK)'}, 'year': {'type': 'integer', 'title': 'Year', 'default': 2026, 'maximum': 2100.0, 'minimum': 2000.0, 'description': 'Tax year. UK: the year the tax year starts in (2026 = 2026-27)'}, 'gross': {'type': 'number', 'title': 'Gross', 'maximum': 10000000.0, 'examples': [4500], 'description': 'Gross pay for the period, in EUR (DE) or GBP (UK)', 'exclusiveMinimum': 0.0}, 'period': {'enum': ['year', 'month', 'week', 'day', 'fortnight', 'four_weeks'], 'type': 'string', 'title': 'Period', 'default': 'month', 'description': 'Pay period of the amount: year, month, week, day (DE only), fortnight or four_weeks (UK only)'}, 'country': {'enum': ['DE', 'UK', 'GB'], 'type': 'string', 'title': 'Country', 'description': 'DE or UK (GB is accepted as UK)'}}, 'additionalProperties': False}, 'title': 'Scenarios', 'maxItems': 8, 'minItems': 1, 'description': 'Up to 8 gross-to-net scenarios'}}}
输出模式
{'type': 'object', 'title': 'CompareOut', 'required': ['rows', 'notes', 'disclaimer'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'title': 'CompareRow', 'required': ['label', 'country', 'tax_year', 'currency', 'period', 'gross', 'net', 'employee_deductions', 'employer_cost', 'deduction_rate', 'annual_net', 'income_tax', 'social_contributions'], 'properties': {'net': {'type': 'number', 'title': 'Net'}, 'gross': {'type': 'number', 'title': 'Gross'}, 'label': {'type': 'string', 'title': 'Label', 'description': 'Country, tax year and main profile setting'}, 'period': {'type': 'string', 'title': 'Period'}, 'country': {'type': 'string', 'title': 'Country'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'tax_year': {'type': 'string', 'title': 'Tax Year'}, 'annual_net': {'type': 'number', 'title': 'Annual Net'}, 'income_tax': {'type': 'number', 'title': 'Income Tax', 'description': 'Income/wage tax plus surcharges (solidarity, church)'}, 'employer_cost': {'type': 'number', 'title': 'Employer Cost'}, 'deduction_rate': {'type': 'number', 'title': 'Deduction Rate'}, 'employee_deductions': {'type': 'number', 'title': 'Employee Deductions'}, 'social_contributions': {'type': 'number', 'title': 'Social Contributions', 'description': 'Employee social insurance or National Insurance'}}}, 'title': 'Rows'}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Notes'}, 'disclaimer': {'type': 'string', 'title': 'Disclaimer'}}, 'x-fastmcp-top-level-schema': 'CompareOut'}
get_payroll_parameters
Thresholds and rates used for a country and year
Allowances, tax bands, contribution rates and ceilings the engine uses for the country and year, each with its official source.
只读 幂等
输入模式
{'type': 'object', 'required': ['country'], 'properties': {'year': {'type': 'integer', 'title': 'Year', 'default': 2026, 'maximum': 2100.0, 'minimum': 2000.0, 'description': 'Tax year (UK: start year, 2026 = 2026-27)'}, 'country': {'enum': ['DE', 'UK', 'GB'], 'type': 'string', 'title': 'Country', 'description': 'DE or UK (GB is accepted)'}}}
输出模式
{'type': 'object', 'title': 'ParametersOut', 'required': ['country', 'year', 'tax_year', 'currency', 'parameters'], 'properties': {'year': {'type': 'integer', 'title': 'Year'}, 'country': {'type': 'string', 'title': 'Country'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'tax_year': {'type': 'string', 'title': 'Tax Year'}, 'parameters': {'type': 'array', 'items': {'type': 'object', 'title': 'ParameterRow', 'required': ['key', 'label', 'value', 'unit', 'source'], 'properties': {'key': {'type': 'string', 'title': 'Key'}, 'unit': {'type': 'string', 'title': 'Unit'}, 'label': {'type': 'string', 'title': 'Label'}, 'value': {'type': 'number', 'title': 'Value'}, 'source': {'type': 'string', 'title': 'Source'}}}, 'title': 'Parameters'}}, 'x-fastmcp-top-level-schema': 'ParametersOut'}
list_salary_countries
Countries, tax years and profile fields covered
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.
只读 幂等
输入模式
{'type': 'object', 'required': [], 'properties': {}}
输出模式
{'type': 'object', 'title': 'CountriesOut', 'required': ['countries'], 'properties': {'countries': {'type': 'array', 'items': {'type': 'object', 'title': 'CountryInfo', 'required': ['country', 'name', 'status', 'currency', 'years', 'periods', 'profile_fields', 'conformance'], 'properties': {'name': {'type': 'string', 'title': 'Name'}, 'years': {'type': 'array', 'items': {'type': 'integer'}, 'title': 'Years', 'description': 'Supported tax years (UK: start year)'}, 'status': {'enum': ['available', 'planned'], 'type': 'string', 'title': 'Status'}, 'country': {'type': 'string', 'title': 'Country', 'description': 'Country code'}, 'periods': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Periods'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'conformance': {'type': 'string', 'title': 'Conformance', 'description': 'Ground truth the engine is tested against'}, 'profile_fields': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Profile Fields'}}}, 'title': 'Countries'}}, 'x-fastmcp-top-level-schema': 'CountriesOut'}
已添加
list_salary_countries
2026年9月30日 02:40
已添加
get_payroll_parameters
2026年9月30日 02:40
已添加
compare_net_salaries
2026年9月30日 02:40
已添加
calculate_gross_salary
2026年9月30日 02:40
已添加
calculate_net_salary
2026年9月30日 02:40