Skip to main content
Glama

Obolus.taxcompare - Compare net income

taxcompare
Read-only

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ageNoAdult age in the selected tax year.
periodNoPeriod 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.annual
regionsNoCountry-keyed tax regions, for example CH: ZH. Omitted regions use country defaults, reported in calculation_profile.
childrenNoNumber of children or dependents used as a broad comparison assumption. Country-specific child allowance and credit rules are simplified for comparability.
currencyYesInput 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.
tax_yearYesTax year, for example 2026. The same tax year is applied to every selected country.
countriesYesList of country tax systems to compare. Use at least two countries for a comparison. Supported values: DE, AT, CH, US, UK, IE, CA, AU.
salary_ctNoPreferred 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.
gross_modeNoComparison 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.shared_gross
person_typeNoBroad 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.single
annual_grossNoBackward-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.
joint_assessmentNoBroad joint filing / joint assessment assumption for comparable country-level estimates. For precise country-specific filing details, use berechne.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultsYesCountry-level comparison results with gross salary, net salary, income/payroll tax, social contributions, total deductions, and effective burden.
summaryYesNormalized annual major-unit amounts for every country result. Use key and country together to render stable comparison cards or tables.
tax_yearYesTax year actually used for every country result.
warningsYesNon-blocking warnings associated with this comparison.
source_urlYesCanonical Obolus TaxCompare URL for this result.
assumptionsYesNormalized comparison inputs used for the calculation, including age, tax year, countries, gross mode, salary, and household assumptions.
gross_inputsYesAnnual 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.
calculated_atYesUTC timestamp when this response was assembled.
localized_ctaYesLocalized labels for opening the visual TaxCompare report.
visual_reportYesDeep link to TaxCompare with the tool input, countries, year, and agent attribution prefilled.
method_versionYesCalculation method or benchmark method version used for this response.
ranking_by_netYesCountries ranked by estimated annual net salary, highest net first. Use this for 'where do I keep more money' and 'rank by net income' answers.
comparison_basisYesBasis used for the comparison: shared_gross for the same gross salary in each country, or local_median_gross for country-specific median benchmarks.
contract_versionYesObolus public contract version used to shape this response.
orientation_noteYesReminder that the result is an orientation estimate, not professional advice.
tax_data_versionYesTax-data or backend-engine revision used for this response.
benchmark_sourcesNoCountry-level benchmark source metadata used in local_median_gross mode, keyed by country code.
benchmark_method_versionNoEditorial benchmark method version used when comparison_basis is local_median_gross.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds behavioral context by specifying what the comparison produces (gross, net pay, taxes, social contributions) and how the two gross_modes alter the comparison basis. Minor limitations like simplified assumptions live in the schema rather than the description, but with strong annotations the bar is partially met here.

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

Conciseness5/5

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

Four sentences, zero filler: purpose, mode selection, prerequisites, and sibling routing each earn their place. The core capability is front-loaded in sentence one, and the sibling reference is tucked into the final sentence.

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

Completeness4/5

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

An output schema exists, so the description needn't explain return values. Given the tool's 12 parameters and nested regions object, the description appropriately covers selection (what it does), configuration (which mode), prerequisites (tax_year + two countries), and fallback routing (berechne). The one gap is that the description omits the 'estimates/simplified' nature of results, but this is captured in the schema's input description.

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

Parameters3/5

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

Schema description coverage is 100%, including detailed explanations of gross_mode, period, salary_ct, and joint_assessment, so the baseline of 3 applies. The description's mode phrasing ('same offer' vs. 'country-market benchmarks') recasts schema content in simpler terms but adds no new parameter meaning beyond what the schema already delivers.

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

Purpose5/5

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

Opens with a specific verb and resource: 'Compare annual gross, net pay, taxes, and employee social contributions across two or more supported countries.' The scope (multi-country comparison) and the sibling differentiation ('Use berechne for detailed single-country payroll') let an agent distinguish this from its sibling without opening schemas.

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

Usage Guidelines5/5

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

Provides explicit mode-selection guidance: 'Use shared_gross for the same offer and local_median_gross for country-market benchmarks.' It also states prerequisites ('Provide tax_year and at least two countries') and names the alternative tool for single-country scenarios. Nothing is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources