Server definition
- Hash
- sha256:f5077c4924c3c565da3fa172974ec815235ae9d4fadf125123d06179f8c88dae
- What it is
- What a remote MCP server returned when asked what it offers: 2 tools
The blob, as servednamed by its sha256
{
"instructions": "This endpoint exposes tools directly with structuredContent and content text. Stable logical MCP tool names are taxcompare and berechne, also shown as Obolus.taxcompare and Obolus.berechne in titles and metadata. Do not treat transient link_... resource paths as stable tool identities; if a transient link path is unavailable after an app refresh, rediscover tools and call the same stable logical tool name. Tool routing: if the user asks for one salary across multiple countries, always use taxcompare first. Select taxcompare when the user provides one salary or income amount, two or more countries, and wants tax, net salary, deductions, take-home pay, ranking, or 'where do I keep more money' results. Do not use berechne repeatedly for simple multi-country comparisons unless taxcompare cannot accept the required inputs. Use berechne only when countries.length === 1 or the user provides detailed country-specific payroll assumptions such as tax class, province/state, health insurance, church tax, pension exemption, deductions, benefits, or other payroll details that taxcompare does not support. For berechne, use the declared Obolus field names exactly. LZZ maps to 1=year, 2=month, 3=week, 4=day; Gehalt_ct and other monetary inputs are minor units for that selected payroll period. berechne is country-polymorphic: first choose the meaning from Land, then interpret inputs and outputs. The same fields span DE, AT, CH, US, UK, IE, CA, and AU, but meanings are country-specific: Steuerklasse can mean German tax class, Swiss tariff, US filing status, UK tax code, Irish marital status, or Australian residency class; Bundesland can mean state, canton, province, or UK region; PreTax_Deduction_ct can mean 401k/IRA, RRSP, salary sacrifice, super sacrifice, pension contribution, or similar country deduction. berechne outputs are also country-polymorphic: stable codes such as ST, LSTLZZ, RSV, KSV, PSV, ASV, and VTL must be interpreted with the original request Land rather than as one global tax vocabulary. For \"Germany, normal employee, tax class I\", use de_payroll_preset=DE_STANDARD_EMPLOYEE_STATUTORY, de_statutory_pension_and_unemployment=true, de_statutory_health_and_care=true, de_health_extra_contribution_percent=2.5, Kirche=0, KinderPVA=0, and Bundesland as full names such as Berlin rather than ISO abbreviations. Never fill raw German Obolus flags such as gesetzliche_RV, gesetzlicheKvPvStatus, KV_Art, or KVZ in normal MCP calls; they are internal compatibility flags and can be valid in product/API payloads for pensioners, civil servants, pension-exempt workers, private health insurance, and other non-standard cases. Advisory warnings are hints, not hard failures, for berechne raw payroll combinations. For taxcompare, prefer salary_ct in minor units plus currency in normal ISO form such as EUR; example: compare EUR 50,000 in US, IE, DE, CA => salary_ct=5000000, currency=EUR, period=annual, tax_year=2026, countries=[US,IE,DE,CA], gross_mode=shared_gross. Use local_median_gross for country-specific median salary benchmarks. taxcompare outputs annual major-currency gross/net/tax/social contribution/total deduction estimates plus ranking_by_net. Tools return structured calculation results for the Obolus result panel and may record private operational access logs.",
"tools": [
{
"description": "Calculate detailed payroll and net salary for one country and person. Use this for tax class, region, health insurance, pension, deductions, or other country-specific inputs. For the same gross salary across two or more countries, use taxcompare. Use semantic fields where available; legacy fields remain REST compatibility inputs. Monetary fields in the legacy request are minor units and period-specific.",
"inputSchema": {
"additionalProperties": true,
"description": "Input for one-country detailed payroll calculations. Prefer country, tax_year, gross_salary, location, employee_type, tax, and social_security. Use semantic German payroll fields instead of raw engine flags. Prefer taxcompare for multi-country comparisons; legacy fields use minor currency units and are period-specific.",
"examples": [
{
"age": 35,
"country": "DE",
"employee_type": "standard_statutory_employee",
"gross_salary": {
"amount": 60000,
"currency": "EUR",
"period": "annual"
},
"location": {
"federal_state": "BE"
},
"payroll_preset": "DE_STANDARD_EMPLOYEE_STATUTORY",
"social_security": {
"children_for_care_insurance": 0,
"health_additional_contribution_percent": 2.9,
"health_insurance": "statutory",
"long_term_care_insurance": "statutory",
"pension_insurance": "statutory",
"unemployment_insurance": "statutory"
},
"tax": {
"child_allowance_factor": 0,
"church_tax": false,
"tax_class": 1
},
"tax_year": 2026
}
],
"properties": {
"Currency": {
"description": "Display currency / calculation currency code.",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"type": "string"
},
"Faktor": {
"default": 1,
"description": "Global factor for factor-based tax class handling.",
"type": "number"
},
"KinderFRB": {
"default": 0,
"description": "Top-level child allowance, child count, dependent count, or child-credit factor for the calculation. DE uses allowance-style factors; AT/CH/US and other systems use country-specific child/dependent meanings where supported.",
"type": "number"
},
"KinderPVA": {
"default": 0,
"description": "Total child count relevant for German long-term care insurance contribution logic. Leave 0 outside German care-insurance scenarios unless a country-specific child workflow explicitly requires it.",
"minimum": 0,
"type": "integer"
},
"Kindergeld": {
"default": 0,
"description": "Child benefit amount in minor units for the selected calculation context. Leave 0 for standard payroll estimates unless explicitly modeling child benefit or a country-specific dependent benefit.",
"type": "integer"
},
"LZZ": {
"default": 1,
"description": "Payroll period identifier for the calculation. Values: 1=year, 2=month, 3=week, 4=day. All salary and payroll monetary inputs must be for this period, not automatically annualized.",
"enum": [
1,
2,
3,
4
],
"type": "integer"
},
"Land": {
"description": "Country code for the calculation.",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"Modus": {
"default": 1,
"description": "Calculation mode. Use 1 for one person, 2 for two persons, and 3 for the German TaxSim capped real-splitting simulation.",
"enum": [
1,
2,
3
],
"type": "integer"
},
"Personen": {
"description": "One or two payroll person records. Each person contains salary, tax class, region, insurance, child, and optional special-income inputs.",
"items": {
"additionalProperties": true,
"properties": {
"Altersrente_Bezug": {
"description": "1 if pension/retirement benefits apply, otherwise 0. Mainly used for DE/AT pensioner workflows.",
"type": "integer"
},
"Bundesland": {
"description": "Country-polymorphic region selector for regional taxes and payroll rules. DE uses full Obolus state names such as Berlin, Bayern, Nordrhein-Westfalen, Sachsen, not ISO abbreviations such as BE or BY. AT uses Austrian federal states such as Wien. CH uses the canton such as Zurich. US uses state names such as California. CA uses provinces such as Ontario, Quebec, or British Columbia. UK uses England, Scotland, Wales, or Northern Ireland. Leave omitted for country examples that omit it unless the user gives a specific supported region.",
"examples": [
"Baden-Wuerttemberg",
"Bayern",
"Berlin",
"Brandenburg",
"Bremen",
"Hamburg",
"Hessen",
"Mecklenburg-Vorpommern",
"Niedersachsen",
"Nordrhein-Westfalen",
"Rheinland-Pfalz",
"Saarland",
"Sachsen",
"Sachsen-Anhalt",
"Schleswig-Holstein",
"Thueringen"
],
"type": "string"
},
"Entschädigungen_vermgsbteil": {
"description": "Capital-forming compensation share in minor units.",
"type": "integer"
},
"Erster_mntl_Versorgungsbezug": {
"description": "Germany-only first monthly pension payment in minor units.",
"type": "integer"
},
"Erstes_Jahr_Versorgungsbezug": {
"description": "Germany-only first tax year of pension receipt.",
"type": "integer"
},
"Faktor": {
"description": "Germany-only tax factor used for tax class IV/factor workflows.",
"type": "number"
},
"Freibetrag_AG": {
"description": "Employer/payroll allowance or additional withholding amount in minor units. Country meanings include DE employer wage-tax feature, AT allowance notice, US/CA additional withholding, and UK payroll allowance handling.",
"type": "integer"
},
"Freibetrag_Sonst": {
"description": "Allowance on one-off payments in minor units.",
"type": "integer"
},
"Geburtsjahr": {
"description": "Birth year.",
"type": "integer"
},
"Gehalt_ct": {
"description": "Gross pay for this person's selected payroll period in minor units. The value must match LZZ/Lohnzahlungszeitraum: for EUR 70,000 per year with LZZ=1 send 7000000; for monthly payroll with LZZ=2 send the monthly gross, for example 583333 for EUR 5,833.33.",
"minimum": 0,
"type": "integer"
},
"Gehalt_ct_ohne_Sonst": {
"description": "Gross pay excluding one-off or bonus payments for the selected payroll period, in minor units.",
"minimum": 0,
"type": "integer"
},
"Geldwerter_Vorteil": {
"description": "Taxable benefits in minor units. Used as in-kind benefit, taxable benefit, benefit in kind, natural salary, or imputed income depending on country; supported for DE, AT, CH, UK, US, CA, and IE.",
"type": "integer"
},
"Hat_Studienkredit": {
"description": "Student loan repayment flag. Relevant for UK student loan, AU HELP/HECS, and IE student-loan-style deductions where modeled.",
"type": "integer"
},
"Hinzubetrag": {
"description": "Additional amount on one-off payments in minor units.",
"type": "integer"
},
"Hinzubetrag_AG": {
"description": "Employer surcharge in minor units.",
"type": "integer"
},
"KinderPVA": {
"default": 0,
"description": "Number of children relevant for German long-term care insurance. Children can reduce the care insurance rate; use 0 when no child discount applies.",
"minimum": 0,
"type": "integer"
},
"Kinderfreibetrag": {
"default": 0,
"description": "Child allowance, dependent count, or child-credit factor for this person. DE uses child allowance shares such as 0, 0.5, 1, or 2. AT uses child count for Familienbonus workflows. CH uses child deduction count. US uses dependent credits count. CA/UK/AU/IE use dependent or child context where supported, often outside direct payroll tax.",
"type": "number"
},
"Kirche": {
"description": "Church tax membership flag. Use 1 when church tax applies and 0 when it does not.",
"type": "integer"
},
"Land": {
"description": "Country code that selects the payroll/tax system for this person. Interpret all country-polymorphic fields in this person record, such as Steuerklasse, Bundesland, PreTax_Deduction_ct, Kinderfreibetrag, and output tax buckets, through this Land value. Supported systems: DE, AT, CH, US, UK, IE, CA, AU.",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"Lohnzahlungszeitraum": {
"description": "Payroll period for this person. Values: 1=year, 2=month, 3=week, 4=day. The person's Gehalt_ct must be the gross amount for the same period. Some country UIs expose only a subset: AT/CH commonly annual or monthly; DE/US and defaults commonly annual, monthly, or weekly.",
"type": "integer"
},
"Monate_Versorgungsbezuege": {
"description": "Germany-only number of months with pension payments.",
"type": "integer"
},
"Pendler_KM": {
"description": "Austria-only commuting distance in kilometers.",
"type": "integer"
},
"Pendler_Tage": {
"description": "Austria-only monthly commuter days.",
"type": "integer"
},
"Pendler_Zumutbar": {
"description": "Austrian commuter reasonableness flag.",
"type": "integer"
},
"PreTax_Deduction_ct": {
"description": "Country-polymorphic pre-tax deductions in minor units for the selected payroll period. Interpret by Land: AT occupational provision/commuter-related deduction, CH pillar 3a or occupational pension purchase, US 401k/IRA/HSA, UK salary sacrifice or pension, CA RRSP/pension, AU super salary sacrifice, and IE pension contribution.",
"type": "integer"
},
"Sonstige_Bezuege": {
"description": "One-off payments or bonus income in minor units. Country meanings include DE other remuneration, UK/US/CA/IE supplemental income, AU bonus pay, and AT/CH special salary or bonus handling where supported.",
"type": "integer"
},
"Sonstige_Bezuege_Versorgungsbezug": {
"description": "One-off payments tied to pension benefits in minor units.",
"type": "integer"
},
"Sonstige_Entschaedigung": {
"description": "Compensation payments in minor units.",
"type": "integer"
},
"Sonstige_Sterbe": {
"description": "Death benefit / survivor payment in minor units.",
"type": "integer"
},
"Steuerklasse": {
"description": "Country-polymorphic tax class, tariff, filing status, or tax-code selector. Do not reuse German tax-class meanings outside Land=DE. DE: 1=single, 2=single parent, 3/4/5=married tax classes, 6=additional job. AT: 1=standard employee, 2=sole earner with child, 3=single parent with child. CH: current backend-supported ordinary Zurich tariffs are 1=single/no children and 2=married or children; CH values above 1 are normalized to 2 until Tarif C/H are implemented end-to-end. US: 1=Single, 3=Joint, 4=Head of Household. UK: 1=1257L standard tax code. IE: 1=Single, 2=Joint one income, 3=Joint two incomes. AU: 1=Resident, 2=Non-Resident, 3=Working Holiday. CA uses the payroll claim setup for federal/provincial tax calculation.",
"type": "integer"
},
"Stfr_vermgsbteil": {
"description": "Tax-free capital-forming benefit share in minor units.",
"type": "integer"
},
"Stjahr": {
"description": "Tax year.",
"type": "integer"
},
"Versorgungsbezuege": {
"description": "Germany-only pension or civil-service pension payments in minor units.",
"type": "integer"
},
"Versorgungsbezuege_Sonderzahlung": {
"description": "Germany-only special pension payment in minor units.",
"type": "integer"
},
"de_health_extra_contribution_percent": {
"description": "Preferred MCP alias for the German statutory health insurance Zusatzbeitrag. Use the literal percent value, for example 2.5 for 2.5%. The server normalizes this to legacy KVZ. Do not use basis points, tenths, cents, 25, 250, or any minor-unit encoding.",
"examples": [
1.7,
2.5
],
"maximum": 10,
"minimum": 0,
"type": "number"
},
"de_payroll_preset": {
"default": "DE_STANDARD_EMPLOYEE_STATUTORY",
"description": "Preferred semantic German payroll preset for MCP calls. Use this instead of raw Obolus flags. For 'Germany, normal employee, tax class I' choose DE_STANDARD_EMPLOYEE_STATUTORY.",
"enum": [
"DE_STANDARD_EMPLOYEE_STATUTORY",
"DE_PRIVATE_HEALTH_INSURANCE",
"DE_PENSION_EXEMPT",
"DE_PENSION_EXEMPT_PRIVATE_HEALTH"
],
"oneOf": [
{
"const": "DE_STANDARD_EMPLOYEE_STATUTORY",
"description": "Use this for the normal German employee case. The adapter maps it to Obolus backend flags gesetzliche_RV=0, gesetzlicheKvPvStatus=0, KV_Art=0, AN_Beitraege_PKV=0.",
"title": "Germany standard employee with statutory pension and statutory health"
},
{
"const": "DE_PRIVATE_HEALTH_INSURANCE",
"description": "Use this only when the user explicitly has PKV. The adapter keeps statutory pension/unemployment enabled and maps health/care to private. Provide de_private_health_employee_contribution_ct.",
"title": "Germany employee with private health insurance"
},
{
"const": "DE_PENSION_EXEMPT",
"description": "Use this for civil servants, self-employed, or other no-statutory-pension cases that still use statutory health/care handling.",
"title": "Germany pension/unemployment exempt with statutory health"
},
{
"const": "DE_PENSION_EXEMPT_PRIVATE_HEALTH",
"description": "Use this only for exempt PKV cases. Provide de_private_health_employee_contribution_ct.",
"title": "Germany pension/unemployment exempt with private health"
}
],
"type": "string"
},
"de_private_health_employee_contribution_ct": {
"description": "Semantic Germany-only adapter field for private health insurance employee contribution in minor units for the selected payroll period. Required when de_statutory_health_and_care=false or a private-health preset is selected. Leave omitted or 0 for statutory GKV/PV.",
"minimum": 0,
"type": "integer"
},
"de_statutory_health_and_care": {
"default": true,
"description": "Semantic Germany-only adapter field. true means statutory health and long-term care insurance apply. The adapter maps true to Obolus gesetzlicheKvPvStatus=0 and KV_Art=0; false means private health insurance and requires de_private_health_employee_contribution_ct.",
"type": "boolean"
},
"de_statutory_pension_and_unemployment": {
"default": true,
"description": "Semantic Germany-only adapter field. true means statutory pension and unemployment insurance apply. The adapter maps true to Obolus gesetzliche_RV=0 and false to gesetzliche_RV=1. Use false only for civil servants, self-employed, or explicitly pension-exempt cases.",
"type": "boolean"
},
"pendlerEuro": {
"description": "Austria-only commuter allowance amount in minor units.",
"type": "integer"
}
},
"required": [
"Land",
"Gehalt_ct",
"Steuerklasse",
"Geburtsjahr"
],
"type": "object"
},
"maxItems": 2,
"minItems": 1,
"type": "array"
},
"Stjahr": {
"description": "Tax year.",
"examples": [
2026
],
"type": "integer"
},
"age": {
"default": 35,
"description": "Age in the selected tax year. If omitted, the calculation reports the standard age-35 assumption instead of silently hiding the default.",
"maximum": 100,
"minimum": 18,
"type": "integer"
},
"country": {
"description": "Preferred high-level country code for MCP calls. For German payroll use DE. The adapter maps this to legacy Land.",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"employee_type": {
"default": "standard_statutory_employee",
"description": "Preferred high-level German employee type. Use standard_statutory_employee for the common statutory pension, unemployment, health, and care insurance case.",
"enum": [
"standard_statutory_employee",
"private_health_insurance",
"pension_exempt",
"pension_exempt_private_health"
],
"type": "string"
},
"gross_salary": {
"additionalProperties": false,
"description": "Preferred high-level gross salary input. Amount is in major currency units, not cents. The adapter maps it to legacy Gehalt_ct minor units and LZZ.",
"properties": {
"amount": {
"description": "Gross salary in major currency units, for example 60000 for EUR 60,000 annual gross or 5000 for EUR 5,000 monthly gross.",
"minimum": 0,
"type": "number"
},
"currency": {
"description": "Salary currency, for example EUR.",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"type": "string"
},
"period": {
"description": "Salary period. annual maps to LZZ=1, monthly to LZZ=2, weekly to LZZ=3, daily to LZZ=4.",
"enum": [
"annual",
"monthly",
"weekly",
"daily"
],
"type": "string"
}
},
"required": [
"amount",
"currency",
"period"
],
"type": "object"
},
"location": {
"additionalProperties": false,
"description": "Preferred high-level location input. For Germany, federal_state may be a state code such as BE or a full Obolus state name such as Berlin.",
"properties": {
"federal_state": {
"description": "German federal state code or full state name, for example BE or Berlin. The adapter maps BE to Berlin.",
"type": "string"
}
},
"type": "object"
},
"payroll_preset": {
"default": "DE_STANDARD_EMPLOYEE_STATUTORY",
"description": "Preferred high-level payroll preset. Use DE_STANDARD_EMPLOYEE_STATUTORY for a normal German employee with statutory pension, unemployment, health, and care insurance.",
"enum": [
"DE_STANDARD_EMPLOYEE_STATUTORY",
"DE_PRIVATE_HEALTH_INSURANCE",
"DE_PENSION_EXEMPT",
"DE_PENSION_EXEMPT_PRIVATE_HEALTH"
],
"type": "string"
},
"social_security": {
"additionalProperties": false,
"description": "Preferred high-level German social-security assumptions. Use enums instead of raw Obolus flags. The adapter maps statutory/exempt/private choices to the legacy payroll-engine fields.",
"properties": {
"children_for_care_insurance": {
"default": 0,
"description": "Number of children relevant for German long-term care insurance contribution logic.",
"minimum": 0,
"type": "integer"
},
"health_additional_contribution_percent": {
"description": "German statutory health Zusatzbeitrag as literal percentage points, for example 2.9 for 2.90%. Do not use basis points such as 290.",
"examples": [
2.5,
2.9
],
"maximum": 5,
"minimum": 0,
"type": "number"
},
"health_insurance": {
"default": "statutory",
"description": "Use statutory for German GKV/PV. Use private only when the user explicitly has private health insurance.",
"enum": [
"statutory",
"private"
],
"type": "string"
},
"long_term_care_insurance": {
"default": "statutory",
"description": "Use statutory for normal German care insurance. Private should only be used together with private health insurance.",
"enum": [
"statutory",
"private"
],
"type": "string"
},
"pension_insurance": {
"default": "statutory",
"description": "Use statutory for normal employees. Use exempt only for civil servants, self-employed, pensioners, or explicitly pension-exempt cases.",
"enum": [
"statutory",
"exempt"
],
"type": "string"
},
"private_health_employee_contribution_ct": {
"description": "Private health insurance employee contribution in minor units for the selected period. Required only when health_insurance is private.",
"minimum": 0,
"type": "integer"
},
"unemployment_insurance": {
"default": "statutory",
"description": "Use statutory for normal employees. This is mapped together with pension_insurance for the legacy German payroll engine.",
"enum": [
"statutory",
"exempt"
],
"type": "string"
}
},
"type": "object"
},
"tax": {
"additionalProperties": false,
"description": "Preferred high-level tax assumptions for MCP calls. The adapter maps these to Steuerklasse, Kirche, and Kinderfreibetrag.",
"properties": {
"child_allowance_factor": {
"default": 0,
"description": "German child allowance factor, for example 0, 0.5, 1, or 2.",
"minimum": 0,
"type": "number"
},
"church_tax": {
"default": false,
"description": "Whether German church tax applies. false maps to Kirche=0 and true maps to Kirche=1.",
"type": "boolean"
},
"tax_class": {
"description": "German tax class, 1 through 6.",
"enum": [
1,
2,
3,
4,
5,
6
],
"type": "integer"
}
},
"type": "object"
},
"tax_year": {
"description": "Preferred high-level tax year for MCP calls. The adapter maps this to legacy Stjahr.",
"examples": [
2026
],
"type": "integer"
}
},
"type": "object",
"x-legacy-examples": [
{
"Currency": "EUR",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 2,
"Land": "DE",
"Modus": 1,
"Personen": [
{
"Bundesland": "Berlin",
"Faktor": 1,
"Geburtsjahr": 1988,
"Gehalt_ct": 583333,
"Gehalt_ct_ohne_Sonst": 583333,
"KinderPVA": 0,
"Kinderfreibetrag": 0,
"Kirche": 0,
"Land": "DE",
"Lohnzahlungszeitraum": 2,
"Steuerklasse": 1,
"Stjahr": 2026,
"de_health_extra_contribution_percent": 2.5,
"de_payroll_preset": "DE_STANDARD_EMPLOYEE_STATUTORY",
"de_statutory_health_and_care": true,
"de_statutory_pension_and_unemployment": true
}
],
"Stjahr": 2026
},
{
"Currency": "EUR",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 1,
"Land": "DE",
"Modus": 1,
"Personen": [
{
"Bundesland": "Berlin",
"Faktor": 1,
"Geburtsjahr": 1988,
"Gehalt_ct": 7000000,
"Gehalt_ct_ohne_Sonst": 7000000,
"KinderPVA": 0,
"Kinderfreibetrag": 0,
"Kirche": 0,
"Land": "DE",
"Lohnzahlungszeitraum": 1,
"Steuerklasse": 1,
"Stjahr": 2026,
"de_health_extra_contribution_percent": 2.5,
"de_payroll_preset": "DE_STANDARD_EMPLOYEE_STATUTORY",
"de_statutory_health_and_care": true,
"de_statutory_pension_and_unemployment": true
}
],
"Stjahr": 2026
},
{
"Currency": "EUR",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 2,
"Land": "DE",
"Modus": 1,
"Personen": [
{
"Bundesland": "Berlin",
"Faktor": 1,
"Geburtsjahr": 1988,
"Gehalt_ct": 583333,
"Gehalt_ct_ohne_Sonst": 583333,
"KinderPVA": 0,
"Kinderfreibetrag": 0,
"Kirche": 0,
"Land": "DE",
"Lohnzahlungszeitraum": 2,
"Steuerklasse": 1,
"Stjahr": 2026,
"de_health_extra_contribution_percent": 0,
"de_payroll_preset": "DE_PRIVATE_HEALTH_INSURANCE",
"de_private_health_employee_contribution_ct": 45000,
"de_statutory_health_and_care": false,
"de_statutory_pension_and_unemployment": true
}
],
"Stjahr": 2026
},
{
"Currency": "EUR",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 2,
"Land": "AT",
"Modus": 1,
"Personen": [
{
"Bundesland": "Wien",
"Faktor": 1,
"Geburtsjahr": 1988,
"Gehalt_ct": 500000,
"Gehalt_ct_ohne_Sonst": 500000,
"Kinderfreibetrag": 0,
"Land": "AT",
"Lohnzahlungszeitraum": 2,
"Pendler_KM": 0,
"Pendler_Tage": 0,
"Pendler_Zumutbar": 0,
"PreTax_Deduction_ct": 0,
"Steuerklasse": 1,
"Stjahr": 2026,
"pendlerEuro": 0
}
],
"Stjahr": 2026
},
{
"Currency": "CHF",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 1,
"Land": "CH",
"Modus": 1,
"Personen": [
{
"Bundesland": "Zürich",
"Faktor": 1,
"Geburtsjahr": 1988,
"Gehalt_ct": 10000000,
"Gehalt_ct_ohne_Sonst": 10000000,
"Kinderfreibetrag": 0,
"Land": "CH",
"Lohnzahlungszeitraum": 1,
"PreTax_Deduction_ct": 0,
"Steuerklasse": 1,
"Stjahr": 2026
}
],
"Stjahr": 2026
},
{
"Currency": "USD",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 1,
"Land": "US",
"Modus": 1,
"Personen": [
{
"Bundesland": "California",
"Faktor": 1,
"Freibetrag_AG": 0,
"Geburtsjahr": 1988,
"Gehalt_ct": 9000000,
"Gehalt_ct_ohne_Sonst": 9000000,
"Kinderfreibetrag": 0,
"Land": "US",
"Lohnzahlungszeitraum": 1,
"PreTax_Deduction_ct": 0,
"Sonstige_Bezuege": 0,
"Steuerklasse": 1,
"Stjahr": 2026
}
],
"Stjahr": 2026
},
{
"Currency": "GBP",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 1,
"Land": "UK",
"Modus": 1,
"Personen": [
{
"Bundesland": "England",
"Faktor": 1,
"Freibetrag_AG": 0,
"Geburtsjahr": 1988,
"Gehalt_ct": 6000000,
"Gehalt_ct_ohne_Sonst": 6000000,
"Hat_Studienkredit": 0,
"Kinderfreibetrag": 0,
"Land": "UK",
"Lohnzahlungszeitraum": 1,
"PreTax_Deduction_ct": 0,
"Sonstige_Bezuege": 0,
"Steuerklasse": 1,
"Stjahr": 2026
}
],
"Stjahr": 2026
},
{
"Currency": "EUR",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 1,
"Land": "IE",
"Modus": 1,
"Personen": [
{
"Faktor": 1,
"Geburtsjahr": 1988,
"Gehalt_ct": 7000000,
"Gehalt_ct_ohne_Sonst": 7000000,
"Hat_Studienkredit": 0,
"Kinderfreibetrag": 0,
"Land": "IE",
"Lohnzahlungszeitraum": 1,
"PreTax_Deduction_ct": 0,
"Sonstige_Bezuege": 0,
"Steuerklasse": 1,
"Stjahr": 2026
}
],
"Stjahr": 2026
},
{
"Currency": "CAD",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 1,
"Land": "CA",
"Modus": 1,
"Personen": [
{
"Bundesland": "Ontario",
"Faktor": 1,
"Freibetrag_AG": 0,
"Geburtsjahr": 1988,
"Gehalt_ct": 8500000,
"Gehalt_ct_ohne_Sonst": 8500000,
"Kinderfreibetrag": 0,
"Land": "CA",
"Lohnzahlungszeitraum": 1,
"PreTax_Deduction_ct": 0,
"Sonstige_Bezuege": 0,
"Steuerklasse": 1,
"Stjahr": 2026
}
],
"Stjahr": 2026
},
{
"Currency": "AUD",
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"LZZ": 1,
"Land": "AU",
"Modus": 1,
"Personen": [
{
"Faktor": 1,
"Geburtsjahr": 1988,
"Gehalt_ct": 9000000,
"Gehalt_ct_ohne_Sonst": 9000000,
"Hat_Studienkredit": 0,
"Kinderfreibetrag": 0,
"Land": "AU",
"Lohnzahlungszeitraum": 1,
"PreTax_Deduction_ct": 0,
"Sonstige_Bezuege": 0,
"Steuerklasse": 1,
"Stjahr": 2026
}
],
"Stjahr": 2026
}
]
},
"name": "berechne",
"outputSchema": {
"additionalProperties": true,
"description": "Output schema for one-country detailed Obolus payroll calculations. Interpret person1, person2, and gesamt with the original request Land; stable field names such as ST, LSTLZZ, RSV, KSV, PSV, ASV, and VTL have country-specific meanings rather than one global meaning. Monetary amounts are minor units. Output country-specific usage: DE outputs keep German payroll meanings: ST/LSTLZZ are wage tax, SOLZLZZ is solidarity surcharge, KST is church tax, and RSV/KSV/PSV/ASV are statutory pension, health, care, and unemployment insurance. AT outputs emphasize Austrian wage tax plus social insurance; BK, STS, STX, and NETX can represent annual or special-payment handling such as 13th/14th salary paths. CH outputs can represent federal, cantonal, municipal, withholding, AHV/IV/EO, ALV, accident, sickness, and pension-fund payroll deductions; private KVG/LAMal health bills are not modeled as payroll health insurance. US outputs map stable Obolus fields to federal/state income tax, Social Security/OASDI, Medicare, additional withholding, supplemental income, and pre-tax retirement/HSA-style deduction context. UK outputs map stable Obolus fields to PAYE income tax, National Insurance, student loan where enabled, salary sacrifice or pension, and regional/tax-code context. IE outputs map stable Obolus fields to PAYE, USC, PRSI, pension contribution, tax credits, and student-loan-style deductions where modeled. CA outputs map stable Obolus fields to federal/provincial tax, CPP/QPP, EI, RRSP or pension deductions, province-specific credits, and additional withholding. AU outputs map stable Obolus fields to PAYG tax, Medicare Levy, HELP/HECS where enabled, voluntary super salary sacrifice, bonus pay, and employer super information.",
"properties": {
"assumptions": {
"additionalProperties": true,
"description": "Normalized user-facing assumptions used for the payroll calculation, including country, salary period, location, tax class, church tax, and German social-security choices. Use this to explain what the calculation assumed without exposing raw payroll-engine flags.",
"properties": {
"age": {
"description": "Age used for the calculation.",
"type": "integer"
},
"age_source": {
"description": "Whether age came from the user, a legacy birth year, or the standard assumption.",
"enum": [
"user_input",
"legacy_birth_year",
"standard_assumption"
],
"type": "string"
}
},
"type": "object"
},
"calculated_at": {
"description": "UTC timestamp when this response was assembled.",
"format": "date-time",
"type": "string"
},
"contract_version": {
"description": "Obolus public contract version used to shape this response.",
"type": "string"
},
"faktor": {
"description": "Tax factor used for German tax class IV factor workflows when applicable.",
"type": "number"
},
"gesamt": {
"additionalProperties": true,
"description": "Combined payroll result across all persons in the calculation. Uses the same country-specific output-code meanings as person1 and person2.",
"properties": {
"ASV": {
"description": "Employee unemployment insurance or country-specific social contribution for the selected payroll period in minor units. DE/AT=unemployment/rest social insurance, CH=ALV/NBU, UK=National Insurance, IE=PRSI, CA=Employment Insurance or RRSP employee context depending response mapping, US=state disability/unemployment-style employee item where applicable, AU is normally unused because unemployment benefits are tax-funded.",
"type": "integer"
},
"BK": {
"description": "Country-polymorphic special payment, bonus-related gross component, or total package component in minor units. AT commonly represents 13th/14th salary handling; AU can represent total package including super.",
"type": "integer"
},
"BKS": {
"description": "Country-polymorphic tax or contribution value related to special payment handling, in minor units.",
"type": "integer"
},
"Brutto": {
"description": "Gross earnings used in the calculation, before country-specific taxes and payroll deductions, in minor units.",
"type": "integer"
},
"GWV": {
"description": "Taxable benefit or monetary advantage included in the calculation, in minor units. Country meanings include in-kind benefit, benefit in kind, taxable benefit, or imputed income.",
"type": "integer"
},
"KFBP": {
"description": "Child allowance, child benefit, tax-credit, or favorable-test information returned by the calculator. Interpret by original request Land.",
"type": "string"
},
"KST": {
"description": "Church tax or country-specific religious levy deducted from payroll, in minor units. Mainly relevant for DE and CH; most other systems have no payroll church tax.",
"type": "integer"
},
"KSV": {
"description": "Country-specific health, Medicare, USC, or equivalent contribution for the selected payroll period in minor units. DE/AT=statutory health contribution, CH=occupational accident/sickness or pillar-related payroll deduction rather than private KVG/LAMal bill, US=Medicare, AU=Medicare Levy, IE=USC, CA=province-related health or employment-insurance context depending backend mapping.",
"type": "integer"
},
"LSTLZZ": {
"description": "Country-specific period tax or deduction in minor units. Interpret by original request Land: DE/AT=period wage tax, CH=cantonal tax, US/CA=federal tax, UK=student loan, AU=HELP/HECS repayment, IE=USC.",
"type": "integer"
},
"NET": {
"description": "Net pay remaining after country-specific taxes and payroll deductions for the selected payroll period, in minor units.",
"type": "integer"
},
"NETX": {
"description": "Net pay after annual tax equalization or country-specific compensation logic, excluding child benefit effects, in minor units. Interpret by original request Land.",
"type": "integer"
},
"NETXJ": {
"description": "Actual annual available net income after country-specific annual adjustments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"PSV": {
"description": "Employee long-term care insurance or country-specific equivalent contribution for the selected payroll period in minor units. DE=nursing care insurance; CH can represent NBU/KTG-style accident/sickness context. Usually unused in other tax systems.",
"type": "integer"
},
"RSV": {
"description": "Employee pension or retirement contribution for the selected payroll period in minor units. DE/AT=statutory pension, CH=AHV/IV/EO and possibly pension fund, US=Social Security/OASDI, CA=CPP/QPP, UK=workplace or state-pension-related contribution context, IE=pension/PRSA or PRSI pension context, AU=voluntary super contribution.",
"type": "integer"
},
"SOLZLZZ": {
"description": "Country-specific payroll-period surcharge or informational deduction in minor units. DE=solidarity surcharge, CH=municipal tax, CA=tax withholding, IE=student loan where modeled.",
"type": "integer"
},
"SOLZS": {
"description": "Solidarity surcharge or country-specific equivalent on special payments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"ST": {
"description": "Primary payroll tax in minor units. Interpret by original request Land: DE/AT/UK=income tax, CH=federal or withholding tax component, US=federal plus state or state component depending response mapping, CA=provincial component, AU=PAYG tax, IE=PAYE.",
"type": "integer"
},
"STJ": {
"description": "Annualized income tax value after child allowance or country-specific adjustment logic, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STS": {
"description": "Country-polymorphic social contribution or country-specific charge on special payments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STX": {
"description": "Income tax due after annual tax equalization, joint assessment, or country-specific compensation logic, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STXJ": {
"description": "Income tax after annual equalization including child allowance, child benefit, tax credit, or country-specific dependent effects, in minor units.",
"type": "integer"
},
"VTL": {
"description": "Forecast, informational, or country-specific adjustment value in minor units. DE=tax refund/forecast info, AT=tax on 13th/14th salary, CH=withholding-tax info, US=401k/IRA info, UK=student loan, CA=RRSP/federal credit info, AU=employer superannuation, IE=USC or tax-credit info.",
"type": "integer"
},
"ZVE": {
"description": "Taxable income used as the basis for the wage, payroll, or income tax calculation, in minor units. Interpret by original request Land.",
"type": "number"
},
"ZVEJ": {
"description": "Taxable income after child allowances or country-specific adjustment logic, in minor units. Interpret by original request Land.",
"type": "number"
},
"info": {
"description": "Backend note, warning, or informational message for the calculation.",
"type": "string"
}
},
"type": "object"
},
"localized_cta": {
"additionalProperties": false,
"description": "Localized call-to-action labels for opening the visual Obolus report link.",
"properties": {
"de": {
"description": "German CTA for the visual report link.",
"type": "string"
},
"en": {
"description": "English CTA for the visual report link.",
"type": "string"
},
"tr": {
"description": "Turkish CTA for the visual report link.",
"type": "string"
}
},
"required": [
"de",
"en"
],
"type": "object"
},
"method_version": {
"description": "Calculation method or benchmark method version used for this response.",
"type": "string"
},
"orientation_note": {
"description": "Reminder that the result is an orientation estimate, not professional advice.",
"type": "string"
},
"person1": {
"additionalProperties": true,
"description": "Payroll result for the first person. Interpret stable output codes with the original request Land and the output country-specific usage notes.",
"properties": {
"ASV": {
"description": "Employee unemployment insurance or country-specific social contribution for the selected payroll period in minor units. DE/AT=unemployment/rest social insurance, CH=ALV/NBU, UK=National Insurance, IE=PRSI, CA=Employment Insurance or RRSP employee context depending response mapping, US=state disability/unemployment-style employee item where applicable, AU is normally unused because unemployment benefits are tax-funded.",
"type": "integer"
},
"BK": {
"description": "Country-polymorphic special payment, bonus-related gross component, or total package component in minor units. AT commonly represents 13th/14th salary handling; AU can represent total package including super.",
"type": "integer"
},
"BKS": {
"description": "Country-polymorphic tax or contribution value related to special payment handling, in minor units.",
"type": "integer"
},
"Brutto": {
"description": "Gross earnings used in the calculation, before country-specific taxes and payroll deductions, in minor units.",
"type": "integer"
},
"GWV": {
"description": "Taxable benefit or monetary advantage included in the calculation, in minor units. Country meanings include in-kind benefit, benefit in kind, taxable benefit, or imputed income.",
"type": "integer"
},
"KFBP": {
"description": "Child allowance, child benefit, tax-credit, or favorable-test information returned by the calculator. Interpret by original request Land.",
"type": "string"
},
"KST": {
"description": "Church tax or country-specific religious levy deducted from payroll, in minor units. Mainly relevant for DE and CH; most other systems have no payroll church tax.",
"type": "integer"
},
"KSV": {
"description": "Country-specific health, Medicare, USC, or equivalent contribution for the selected payroll period in minor units. DE/AT=statutory health contribution, CH=occupational accident/sickness or pillar-related payroll deduction rather than private KVG/LAMal bill, US=Medicare, AU=Medicare Levy, IE=USC, CA=province-related health or employment-insurance context depending backend mapping.",
"type": "integer"
},
"LSTLZZ": {
"description": "Country-specific period tax or deduction in minor units. Interpret by original request Land: DE/AT=period wage tax, CH=cantonal tax, US/CA=federal tax, UK=student loan, AU=HELP/HECS repayment, IE=USC.",
"type": "integer"
},
"NET": {
"description": "Net pay remaining after country-specific taxes and payroll deductions for the selected payroll period, in minor units.",
"type": "integer"
},
"NETX": {
"description": "Net pay after annual tax equalization or country-specific compensation logic, excluding child benefit effects, in minor units. Interpret by original request Land.",
"type": "integer"
},
"NETXJ": {
"description": "Actual annual available net income after country-specific annual adjustments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"PSV": {
"description": "Employee long-term care insurance or country-specific equivalent contribution for the selected payroll period in minor units. DE=nursing care insurance; CH can represent NBU/KTG-style accident/sickness context. Usually unused in other tax systems.",
"type": "integer"
},
"RSV": {
"description": "Employee pension or retirement contribution for the selected payroll period in minor units. DE/AT=statutory pension, CH=AHV/IV/EO and possibly pension fund, US=Social Security/OASDI, CA=CPP/QPP, UK=workplace or state-pension-related contribution context, IE=pension/PRSA or PRSI pension context, AU=voluntary super contribution.",
"type": "integer"
},
"SOLZLZZ": {
"description": "Country-specific payroll-period surcharge or informational deduction in minor units. DE=solidarity surcharge, CH=municipal tax, CA=tax withholding, IE=student loan where modeled.",
"type": "integer"
},
"SOLZS": {
"description": "Solidarity surcharge or country-specific equivalent on special payments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"ST": {
"description": "Primary payroll tax in minor units. Interpret by original request Land: DE/AT/UK=income tax, CH=federal or withholding tax component, US=federal plus state or state component depending response mapping, CA=provincial component, AU=PAYG tax, IE=PAYE.",
"type": "integer"
},
"STJ": {
"description": "Annualized income tax value after child allowance or country-specific adjustment logic, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STS": {
"description": "Country-polymorphic social contribution or country-specific charge on special payments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STX": {
"description": "Income tax due after annual tax equalization, joint assessment, or country-specific compensation logic, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STXJ": {
"description": "Income tax after annual equalization including child allowance, child benefit, tax credit, or country-specific dependent effects, in minor units.",
"type": "integer"
},
"VTL": {
"description": "Forecast, informational, or country-specific adjustment value in minor units. DE=tax refund/forecast info, AT=tax on 13th/14th salary, CH=withholding-tax info, US=401k/IRA info, UK=student loan, CA=RRSP/federal credit info, AU=employer superannuation, IE=USC or tax-credit info.",
"type": "integer"
},
"ZVE": {
"description": "Taxable income used as the basis for the wage, payroll, or income tax calculation, in minor units. Interpret by original request Land.",
"type": "number"
},
"ZVEJ": {
"description": "Taxable income after child allowances or country-specific adjustment logic, in minor units. Interpret by original request Land.",
"type": "number"
},
"info": {
"description": "Backend note, warning, or informational message for the calculation.",
"type": "string"
}
},
"type": "object"
},
"person2": {
"additionalProperties": true,
"description": "Payroll result for the second person. Values are zero or empty when the calculation mode uses only one person. Interpret stable output codes with the original request Land.",
"properties": {
"ASV": {
"description": "Employee unemployment insurance or country-specific social contribution for the selected payroll period in minor units. DE/AT=unemployment/rest social insurance, CH=ALV/NBU, UK=National Insurance, IE=PRSI, CA=Employment Insurance or RRSP employee context depending response mapping, US=state disability/unemployment-style employee item where applicable, AU is normally unused because unemployment benefits are tax-funded.",
"type": "integer"
},
"BK": {
"description": "Country-polymorphic special payment, bonus-related gross component, or total package component in minor units. AT commonly represents 13th/14th salary handling; AU can represent total package including super.",
"type": "integer"
},
"BKS": {
"description": "Country-polymorphic tax or contribution value related to special payment handling, in minor units.",
"type": "integer"
},
"Brutto": {
"description": "Gross earnings used in the calculation, before country-specific taxes and payroll deductions, in minor units.",
"type": "integer"
},
"GWV": {
"description": "Taxable benefit or monetary advantage included in the calculation, in minor units. Country meanings include in-kind benefit, benefit in kind, taxable benefit, or imputed income.",
"type": "integer"
},
"KFBP": {
"description": "Child allowance, child benefit, tax-credit, or favorable-test information returned by the calculator. Interpret by original request Land.",
"type": "string"
},
"KST": {
"description": "Church tax or country-specific religious levy deducted from payroll, in minor units. Mainly relevant for DE and CH; most other systems have no payroll church tax.",
"type": "integer"
},
"KSV": {
"description": "Country-specific health, Medicare, USC, or equivalent contribution for the selected payroll period in minor units. DE/AT=statutory health contribution, CH=occupational accident/sickness or pillar-related payroll deduction rather than private KVG/LAMal bill, US=Medicare, AU=Medicare Levy, IE=USC, CA=province-related health or employment-insurance context depending backend mapping.",
"type": "integer"
},
"LSTLZZ": {
"description": "Country-specific period tax or deduction in minor units. Interpret by original request Land: DE/AT=period wage tax, CH=cantonal tax, US/CA=federal tax, UK=student loan, AU=HELP/HECS repayment, IE=USC.",
"type": "integer"
},
"NET": {
"description": "Net pay remaining after country-specific taxes and payroll deductions for the selected payroll period, in minor units.",
"type": "integer"
},
"NETX": {
"description": "Net pay after annual tax equalization or country-specific compensation logic, excluding child benefit effects, in minor units. Interpret by original request Land.",
"type": "integer"
},
"NETXJ": {
"description": "Actual annual available net income after country-specific annual adjustments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"PSV": {
"description": "Employee long-term care insurance or country-specific equivalent contribution for the selected payroll period in minor units. DE=nursing care insurance; CH can represent NBU/KTG-style accident/sickness context. Usually unused in other tax systems.",
"type": "integer"
},
"RSV": {
"description": "Employee pension or retirement contribution for the selected payroll period in minor units. DE/AT=statutory pension, CH=AHV/IV/EO and possibly pension fund, US=Social Security/OASDI, CA=CPP/QPP, UK=workplace or state-pension-related contribution context, IE=pension/PRSA or PRSI pension context, AU=voluntary super contribution.",
"type": "integer"
},
"SOLZLZZ": {
"description": "Country-specific payroll-period surcharge or informational deduction in minor units. DE=solidarity surcharge, CH=municipal tax, CA=tax withholding, IE=student loan where modeled.",
"type": "integer"
},
"SOLZS": {
"description": "Solidarity surcharge or country-specific equivalent on special payments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"ST": {
"description": "Primary payroll tax in minor units. Interpret by original request Land: DE/AT/UK=income tax, CH=federal or withholding tax component, US=federal plus state or state component depending response mapping, CA=provincial component, AU=PAYG tax, IE=PAYE.",
"type": "integer"
},
"STJ": {
"description": "Annualized income tax value after child allowance or country-specific adjustment logic, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STS": {
"description": "Country-polymorphic social contribution or country-specific charge on special payments, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STX": {
"description": "Income tax due after annual tax equalization, joint assessment, or country-specific compensation logic, in minor units. Interpret by original request Land.",
"type": "integer"
},
"STXJ": {
"description": "Income tax after annual equalization including child allowance, child benefit, tax credit, or country-specific dependent effects, in minor units.",
"type": "integer"
},
"VTL": {
"description": "Forecast, informational, or country-specific adjustment value in minor units. DE=tax refund/forecast info, AT=tax on 13th/14th salary, CH=withholding-tax info, US=401k/IRA info, UK=student loan, CA=RRSP/federal credit info, AU=employer superannuation, IE=USC or tax-credit info.",
"type": "integer"
},
"ZVE": {
"description": "Taxable income used as the basis for the wage, payroll, or income tax calculation, in minor units. Interpret by original request Land.",
"type": "number"
},
"ZVEJ": {
"description": "Taxable income after child allowances or country-specific adjustment logic, in minor units. Interpret by original request Land.",
"type": "number"
},
"info": {
"description": "Backend note, warning, or informational message for the calculation.",
"type": "string"
}
},
"type": "object"
},
"source_url": {
"description": "Canonical Obolus URL for the matching interactive calculator.",
"type": "string"
},
"summary": {
"additionalProperties": false,
"description": "Normalized major-unit amounts for gross income, net income, taxes, social contributions, and total deductions. Use this stable summary for display; raw payroll fields remain available for country-specific detail.",
"properties": {
"amounts": {
"description": "Normalized monetary amounts in major currency units. Each item has key, amount, currency, and period; taxcompare items also identify country.",
"items": {
"additionalProperties": false,
"description": "One normalized monetary amount in major currency units. Use key, period, and country to interpret it without relying on raw engine field names or array order.",
"properties": {
"amount": {
"description": "Amount in major currency units, such as EUR 37,363.00 rather than cents.",
"type": "number"
},
"country": {
"description": "Country code for the amount. Present for payroll and comparison results; absent only when the caller supplied no country context.",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"currency": {
"description": "ISO currency code for amount, normalized to uppercase.",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"type": "string"
},
"key": {
"description": "Country-neutral metric key: gross income, net income, taxes, social contributions, or total deductions.",
"enum": [
"gross_income",
"net_income",
"taxes",
"social_contributions",
"total_deductions"
],
"type": "string"
},
"period": {
"description": "Period represented by the amount.",
"enum": [
"annual",
"monthly",
"weekly",
"daily"
],
"type": "string"
}
},
"required": [
"key",
"amount",
"currency",
"period"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"comparison_basis": {
"description": "Taxcompare basis used for the summary: shared_gross or local_median_gross.",
"enum": [
"shared_gross",
"local_median_gross"
],
"type": "string"
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year used for the summary when the calculation exposes one."
}
},
"required": [
"amounts"
],
"type": "object"
},
"tax_data_version": {
"description": "Tax-data or backend-engine revision used for this response.",
"type": "string"
},
"visual_report": {
"description": "Deep link to the interactive report or calculator view.",
"type": "string"
},
"warnings": {
"description": "Non-blocking warnings about suspicious inputs, such as annual gross sent with monthly LZZ, scaled German Zusatzbeitrag values, or raw German insurance combinations that may be intentional for non-standard cases.",
"items": {
"description": "Human-readable warning message.",
"type": "string"
},
"type": "array"
}
},
"required": [
"source_url",
"visual_report",
"localized_cta",
"summary",
"calculated_at",
"contract_version",
"tax_data_version",
"method_version",
"orientation_note",
"assumptions",
"warnings"
],
"type": "object"
}
},
{
"description": "Compare annual gross, net pay, taxes, and employee social contributions across two or more supported countries. Use shared_gross for the same offer and local_median_gross for country-market benchmarks. Provide tax_year and at least two countries. Use berechne for detailed single-country payroll.",
"inputSchema": {
"additionalProperties": false,
"description": "Input for a multi-country salary comparison. Use at least two countries, tax_year, and either salary_ct/annual_gross for shared_gross or local_median_gross without a salary. Results are annual major-currency estimates.",
"examples": [
{
"children": 0,
"countries": [
"US",
"IE",
"DE",
"CA"
],
"currency": "EUR",
"gross_mode": "shared_gross",
"joint_assessment": false,
"period": "annual",
"person_type": "single",
"salary_ct": 5000000,
"tax_year": 2026
},
{
"children": 0,
"countries": [
"DE",
"AT",
"CH",
"US",
"UK",
"IE",
"CA",
"AU"
],
"currency": "EUR",
"gross_mode": "shared_gross",
"joint_assessment": false,
"period": "annual",
"person_type": "single",
"salary_ct": 7000000,
"tax_year": 2026
},
{
"children": 0,
"countries": [
"DE",
"AT",
"CH",
"US",
"UK",
"IE",
"CA",
"AU"
],
"currency": "eur",
"gross_mode": "local_median_gross",
"joint_assessment": false,
"period": "annual",
"tax_year": 2026
}
],
"properties": {
"age": {
"default": 35,
"description": "Adult age in the selected tax year.",
"maximum": 100,
"minimum": 18,
"type": "integer"
},
"annual_gross": {
"description": "Backward-compatible annual gross salary alias in major currency units, not cents. Prefer salary_ct. Example: 50000 means 50,000 in the selected currency. Required for shared_gross mode only when salary_ct is not provided; optional and ignored when omitted for local_median_gross.",
"type": "number"
},
"children": {
"default": 0,
"description": "Number of children or dependents used as a broad comparison assumption. Country-specific child allowance and credit rules are simplified for comparability.",
"minimum": 0,
"type": "integer"
},
"countries": {
"description": "List of country tax systems to compare. Use at least two countries for a comparison. Supported values: DE, AT, CH, US, UK, IE, CA, AU.",
"items": {
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"minItems": 2,
"type": "array"
},
"currency": {
"description": "Input and output currency: EUR, USD, CHF, CAD, AUD, GBP, or lower-case equivalents. Results normalize currency codes to lower-case. Unlike berechne, taxcompare prefers salary_ct for salary input and returns major currency units.",
"enum": [
"eur",
"usd",
"chf",
"cad",
"aud",
"gbp",
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"type": "string"
},
"gross_mode": {
"default": "shared_gross",
"description": "Comparison basis. Use shared_gross for the same user-provided annual gross across all countries. Use local_median_gross for country-specific editorial median gross benchmarks. Defaults to shared_gross when omitted.",
"enum": [
"shared_gross",
"local_median_gross"
],
"type": "string"
},
"joint_assessment": {
"default": false,
"description": "Broad joint filing / joint assessment assumption for comparable country-level estimates. For precise country-specific filing details, use berechne.",
"type": "boolean"
},
"period": {
"default": "annual",
"description": "Period for salary_ct. Use annual when salary_ct is the annual gross salary. Use monthly when salary_ct is one monthly gross salary; taxcompare annualizes it before comparing countries. annual_gross is always annual and ignores this field.",
"enum": [
"annual",
"monthly"
],
"type": "string"
},
"person_type": {
"default": "single",
"description": "Broad household assumption for comparison. single maps to joint_assessment=false; married maps to joint_assessment=true unless joint_assessment is provided explicitly. For precise country-specific filing details, use berechne.",
"enum": [
"single",
"married"
],
"type": "string"
},
"regions": {
"additionalProperties": {
"type": "string"
},
"description": "Country-keyed tax regions, for example CH: ZH. Omitted regions use country defaults, reported in calculation_profile.",
"type": "object"
},
"salary_ct": {
"description": "Preferred salary input for MCP calls. Salary in minor units for the selected period, for example 5000000 for EUR 50,000. With period=annual this is annual salary; with period=monthly this is monthly salary and Obolus annualizes it for the comparison. Required for shared_gross mode unless annual_gross is provided as a legacy alias.",
"minimum": 0,
"type": "integer"
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year, for example 2026. The same tax year is applied to every selected country."
}
},
"required": [
"countries",
"currency",
"tax_year"
],
"type": "object"
},
"name": "taxcompare",
"outputSchema": {
"additionalProperties": true,
"description": "Annual country comparison response. Amounts are returned in major currency units in the requested lower-case currency, not cents. Results are meant for cross-country comparison; use berechne for detailed single-country payroll output.",
"properties": {
"assumptions": {
"additionalProperties": true,
"description": "Normalized comparison inputs used for the calculation, including age, tax year, countries, gross mode, salary, and household assumptions.",
"type": "object"
},
"benchmark_method_version": {
"description": "Editorial benchmark method version used when comparison_basis is local_median_gross.",
"type": "string"
},
"benchmark_sources": {
"additionalProperties": {
"description": "Human-readable source note or source identifier for this country's median gross benchmark.",
"type": "string"
},
"description": "Country-level benchmark source metadata used in local_median_gross mode, keyed by country code.",
"type": "object"
},
"calculated_at": {
"description": "UTC timestamp when this response was assembled.",
"format": "date-time",
"type": "string"
},
"comparison_basis": {
"description": "Basis used for the comparison: shared_gross for the same gross salary in each country, or local_median_gross for country-specific median benchmarks.",
"enum": [
"shared_gross",
"local_median_gross"
],
"type": "string"
},
"contract_version": {
"description": "Obolus public contract version used to shape this response.",
"type": "string"
},
"gross_inputs": {
"additionalProperties": {
"description": "Annual gross salary used for this country in the selected major currency.",
"type": "number"
},
"description": "Annual gross salary input used for each country, keyed by country code and expressed in the selected major currency. In shared_gross mode these values are usually identical; in local_median_gross mode they differ by country benchmark.",
"type": "object"
},
"localized_cta": {
"additionalProperties": false,
"description": "Localized labels for opening the visual TaxCompare report.",
"properties": {
"de": {
"description": "German CTA for the visual report link.",
"type": "string"
},
"en": {
"description": "English CTA for the visual report link.",
"type": "string"
},
"tr": {
"description": "Turkish CTA for the visual report link.",
"type": "string"
}
},
"required": [
"de",
"en"
],
"type": "object"
},
"method_version": {
"description": "Calculation method or benchmark method version used for this response.",
"type": "string"
},
"orientation_note": {
"description": "Reminder that the result is an orientation estimate, not professional advice.",
"type": "string"
},
"ranking_by_net": {
"description": "Countries ranked by estimated annual net salary, highest net first. Use this for 'where do I keep more money' and 'rank by net income' answers.",
"items": {
"additionalProperties": false,
"properties": {
"country": {
"description": "Country code for this ranked comparison result.",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"effective_rate": {
"description": "Total deduction rate as percentage points of gross income. Example: 37.7 means 37.7%.",
"type": "number"
},
"net": {
"description": "Estimated annual net salary for this country in the requested major currency.",
"type": "number"
},
"rank": {
"description": "1-based rank by net salary, highest net first.",
"type": "integer"
},
"total_deductions": {
"description": "Estimated annual tax plus social contributions for this country in the requested major currency.",
"type": "number"
}
},
"required": [
"rank",
"country",
"net"
],
"type": "object"
},
"type": "array"
},
"results": {
"description": "Country-level comparison results with gross salary, net salary, income/payroll tax, social contributions, total deductions, and effective burden.",
"items": {
"additionalProperties": true,
"properties": {
"comparison_basis": {
"description": "Comparison basis used for this country result.",
"enum": [
"shared_gross",
"local_median_gross"
],
"type": "string"
},
"country": {
"description": "Country code for this comparison result: DE, AT, CH, US, UK, IE, CA, or AU.",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"effective_rate": {
"description": "Combined tax and social contribution burden as percentage points of gross income. Example: 37.7 means 37.7%.",
"type": "number"
},
"gross_source": {
"description": "Source or mode that produced the gross input, such as shared_user_input for same-salary comparisons or country_median_gross_benchmark for local-market benchmarks.",
"type": "string"
},
"input_annual_gross": {
"description": "Annual gross salary used for this country in the selected major currency. In local_median_gross mode this is the country-specific benchmark after currency conversion.",
"type": "number"
},
"input_currency": {
"description": "Currency code for the gross input and result values, in lower-case ISO style.",
"enum": [
"eur",
"usd",
"chf",
"cad",
"aud",
"gbp"
],
"type": "string"
},
"net": {
"description": "Estimated annual net income after taxes and payroll/social deductions in the selected major currency. This is annual take-home pay, not monthly net.",
"type": "number"
},
"social_contributions": {
"description": "Estimated annual employee social contributions or country-specific payroll deductions in the selected major currency. Examples include statutory social insurance, OASDI/Medicare, National Insurance, PRSI, CPP/QPP/EI, Medicare Levy, or Swiss payroll social deductions; private health bills may be outside payroll.",
"type": "number"
},
"tax": {
"description": "Estimated annual tax burden in the selected major currency. Country meanings differ: for example PAYE/PAYG/income tax, federal plus state/provincial components, or withholding tax depending on system.",
"type": "number"
},
"total_deductions": {
"description": "Estimated annual tax plus employee social contributions/payroll deductions in the selected major currency.",
"type": "number"
}
},
"required": [
"country",
"net",
"tax",
"social_contributions",
"total_deductions",
"effective_rate",
"input_annual_gross",
"input_currency",
"comparison_basis"
],
"type": "object"
},
"type": "array"
},
"source_url": {
"description": "Canonical Obolus TaxCompare URL for this result.",
"type": "string"
},
"summary": {
"additionalProperties": false,
"description": "Normalized annual major-unit amounts for every country result. Use key and country together to render stable comparison cards or tables.",
"properties": {
"amounts": {
"description": "Normalized monetary amounts in major currency units. Each item has key, amount, currency, and period; taxcompare items also identify country.",
"items": {
"additionalProperties": false,
"description": "One normalized monetary amount in major currency units. Use key, period, and country to interpret it without relying on raw engine field names or array order.",
"properties": {
"amount": {
"description": "Amount in major currency units, such as EUR 37,363.00 rather than cents.",
"type": "number"
},
"country": {
"description": "Country code for the amount. Present for payroll and comparison results; absent only when the caller supplied no country context.",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"type": "string"
},
"currency": {
"description": "ISO currency code for amount, normalized to uppercase.",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"type": "string"
},
"key": {
"description": "Country-neutral metric key: gross income, net income, taxes, social contributions, or total deductions.",
"enum": [
"gross_income",
"net_income",
"taxes",
"social_contributions",
"total_deductions"
],
"type": "string"
},
"period": {
"description": "Period represented by the amount.",
"enum": [
"annual",
"monthly",
"weekly",
"daily"
],
"type": "string"
}
},
"required": [
"key",
"amount",
"currency",
"period"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"comparison_basis": {
"description": "Taxcompare basis used for the summary: shared_gross or local_median_gross.",
"enum": [
"shared_gross",
"local_median_gross"
],
"type": "string"
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year used for the summary when the calculation exposes one."
}
},
"required": [
"amounts"
],
"type": "object"
},
"tax_data_version": {
"description": "Tax-data or backend-engine revision used for this response.",
"type": "string"
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year actually used for every country result."
},
"visual_report": {
"description": "Deep link to TaxCompare with the tool input, countries, year, and agent attribution prefilled.",
"type": "string"
},
"warnings": {
"description": "Non-blocking warnings associated with this comparison.",
"items": {
"description": "Human-readable warning message.",
"type": "string"
},
"type": "array"
}
},
"required": [
"source_url",
"visual_report",
"localized_cta",
"summary",
"calculated_at",
"contract_version",
"tax_data_version",
"method_version",
"orientation_note",
"assumptions",
"warnings",
"tax_year",
"results",
"comparison_basis",
"gross_inputs",
"ranking_by_net"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:f5077c4924c3c565da3fa172974ec815235ae9d4fadf125123d06179f8c88dae | sha256sum