Skip to main content
Glama

Obolus

Server Details

Read-only payroll calculations and multi-country tax comparisons for eight countries.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

Score is being calculated.

Available Tools

2 tools
berechneObolus.berechne - Calculate payrollA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
LZZNoPayroll 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.
ageNoAge in the selected tax year. If omitted, the calculation reports the standard age-35 assumption instead of silently hiding the default.
taxNoPreferred high-level tax assumptions for MCP calls. The adapter maps these to Steuerklasse, Kirche, and Kinderfreibetrag.
LandNoCountry code for the calculation.
ModusNoCalculation mode. Use 1 for one person, 2 for two persons, and 3 for the German TaxSim capped real-splitting simulation.
FaktorNoGlobal factor for factor-based tax class handling.
StjahrNoTax year.
countryNoPreferred high-level country code for MCP calls. For German payroll use DE. The adapter maps this to legacy Land.
CurrencyNoDisplay currency / calculation currency code.
PersonenNoOne or two payroll person records. Each person contains salary, tax class, region, insurance, child, and optional special-income inputs.
locationNoPreferred 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.
tax_yearNoPreferred high-level tax year for MCP calls. The adapter maps this to legacy Stjahr.
KinderFRBNoTop-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.
KinderPVANoTotal 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.
KindergeldNoChild 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.
gross_salaryNoPreferred 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.
employee_typeNoPreferred high-level German employee type. Use standard_statutory_employee for the common statutory pension, unemployment, health, and care insurance case.standard_statutory_employee
payroll_presetNoPreferred high-level payroll preset. Use DE_STANDARD_EMPLOYEE_STATUTORY for a normal German employee with statutory pension, unemployment, health, and care insurance.DE_STANDARD_EMPLOYEE_STATUTORY
social_securityNoPreferred 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
faktorNoTax factor used for German tax class IV factor workflows when applicable.
gesamtNoCombined payroll result across all persons in the calculation. Uses the same country-specific output-code meanings as person1 and person2.
person1NoPayroll result for the first person. Interpret stable output codes with the original request Land and the output country-specific usage notes.
person2NoPayroll 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.
summaryYesNormalized 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.
warningsYesNon-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.
source_urlYesCanonical Obolus URL for the matching interactive calculator.
assumptionsYesNormalized 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.
calculated_atYesUTC timestamp when this response was assembled.
localized_ctaYesLocalized call-to-action labels for opening the visual Obolus report link.
visual_reportYesDeep link to the interactive report or calculator view.
method_versionYesCalculation method or benchmark method version used for this response.
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.

TDQS

A4.5/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, and the 'Calculate' wording is consistent. The description adds beyond annotations by revealing that legacy fields are 'REST compatibility inputs' and warning that 'Monetary fields in the legacy request are minor units and period-specific,' which is important behavioral context for constructing requests.

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?

Five sentences with no filler: action and scope are front-loaded, sibling routing comes second, and the remaining sentences cover field families and unit conventions. Every sentence earns its place.

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

Completeness3/5

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

The description is a good high-level orientation, but it says 'one country and person' while the schema supports up to two Personen records (maxItems 2, Modus 2). It also doesn't enumerate the recommended semantic fields, though the schema's own description does. For a tool with this complexity, those are notable completeness gaps despite the rich schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds cross-cutting semantics by distinguishing semantic vs. legacy fields ('Use semantic fields where available; legacy fields remain REST compatibility inputs') and by flagging minor-unit/period conventions, which is not fully captured by individual parameter descriptions.

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?

The description opens with a specific verb and resource: 'Calculate detailed payroll and net salary for one country and person.' It also names the sibling differentiator by saying 'For the same gross salary across two or more countries, use taxcompare,' so an agent can distinguish this tool without opening the schema.

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?

It explicitly lists when to use the tool: 'Use this for tax class, region, health insurance, pension, deductions, or other country-specific inputs.' It also gives a clear exclusion rule by routing multi-country comparisons to taxcompare, leaving no ambiguity about the main alternative.

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

taxcompareObolus.taxcompare - Compare net incomeA
Read-only
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • First observedberechne
    • First observedtaxcompare

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables geographic parity analysis with 26 read-only tools covering purchasing power, salary localization, cost of living, nomad visas, tax residency, FIRE planning, and relocation costs.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides real tax calculations for US, Canada, Australia, and UK income, property, and dividend taxes using up-to-date local data with no API keys required.
    7
    73 npm
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Calculates end-of-service gratuity/severance for multiple countries (AE, SA, QA, etc.) via a stateless JSON API and MCP tool.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables local-first HR payroll computation with statutory social insurance, housing fund, and cumulative IIT calculations, adaptable to arbitrary spreadsheet headers via import adapters and company profiles. Supports safe performance formula evaluation and keeps PII on-device.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources