Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Obolus

REMOTE · WWW.OBOLUSFINANZ.DE · SCANNED OCT 4

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

+3 this week 77 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security74
Transport & Reachability100
Schema Quality & AI Usability71
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1288 tokens (~644/item across 2 items; 2 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Tools include usage examples.Pass
Stability & Change Management47
  • Stability observed for 14 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 2 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 2 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Obolus MCP server?

Obolus is a hosted endpoint at https://www.obolusfinanz.de/api/mcp/public, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · www.obolusfinanz.de

# add to Claude Code
claude mcp add --transport http sanzation-obolus 'https://www.obolusfinanz.de/api/mcp/public'
// .cursor/mcp.json
{
  "mcpServers": {
    "sanzation-obolus": {
      "url": "https://www.obolusfinanz.de/api/mcp/public"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "sanzation-obolus": {
      "type": "http",
      "url": "https://www.obolusfinanz.de/api/mcp/public"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.sanzation-obolus]
url = "https://www.obolusfinanz.de/api/mcp/public"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sanzation-obolus": {
      "type": "remote",
      "url": "https://www.obolusfinanz.de/api/mcp/public",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add sanzation-obolus --url 'https://www.obolusfinanz.de/api/mcp/public' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  sanzation-obolus:
    url: "https://www.obolusfinanz.de/api/mcp/public"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "sanzation-obolus": {
      "Transport": "http",
      "Url": "https://www.obolusfinanz.de/api/mcp/public"
    }
  }
}
# add to Vellum
assistant mcp add sanzation-obolus -t streamable-http -u 'https://www.obolusfinanz.de/api/mcp/public'
// mcp.json
{
  "mcpServers": {
    "sanzation-obolus": {
      "type": "http",
      "url": "https://www.obolusfinanz.de/api/mcp/public"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Sept 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 23 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Sept 26 +1
    • Stability: unverified → 0.03 ▲ functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Oct 2026 · Probed https://www.obolusfinanz.de/api/mcp/public

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=www.obolusfinanz.de CN=WE1,O=Google Trust Services,C=US 9 Aug 2026 7 Nov 2026 ECDSA 256 ECDSA-SHA256 6061a7667f91709e1378e5dee225c6e9
SANs: www.obolusfinanz.de
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of www.obolusfinanz.de. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
de. present 26755 8 Verified
obolusfinanz.de. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
x-content-type-options nosniff
x-frame-options DENY

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://www.obolusfinanz.de/api/mcp/public Verified 200
http (plaintext) http://www.obolusfinanz.de/api/mcp/public HTTPS enforced 301 https://www.obolusfinanz.de/api/mcp/public
MCP tools · 2 exposed · ~1,288 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
berechne ~693

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.

NameTypeReqDescription
Currencystring–Display currency / calculation currency code.
Faktornumber–Global factor for factor-based tax class handling.
KinderFRBnumber–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 m…
KinderPVAinteger–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.
Kindergeldinteger–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.
LZZinteger–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.
Landstring–Country code for the calculation.
Modusinteger–Calculation mode. Use 1 for one person, 2 for two persons, and 3 for the German TaxSim capped real-splitting simulation.
Personenarray–One or two payroll person records. Each person contains salary, tax class, region, insurance, child, and optional special-income inputs.
Stjahrinteger–Tax year.
ageinteger–Age in the selected tax year. If omitted, the calculation reports the standard age-35 assumption instead of silently hiding the default.
countrystring–Preferred high-level country code for MCP calls. For German payroll use DE. The adapter maps this to legacy Land.
employee_typestring–Preferred high-level German employee type. Use standard_statutory_employee for the common statutory pension, unemployment, health, and care insurance case.
gross_salaryobject–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.
locationobject–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.
payroll_presetstring–Preferred high-level payroll preset. Use DE_STANDARD_EMPLOYEE_STATUTORY for a normal German employee with statutory pension, unemployment, health, and care insurance.
social_securityobject–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.
taxobject–Preferred high-level tax assumptions for MCP calls. The adapter maps these to Steuerklasse, Kirche, and Kinderfreibetrag.
tax_yearinteger–Preferred high-level tax year for MCP calls. The adapter maps this to legacy Stjahr.
NameTypeReqDescription
assumptionsobjectyesNormalized 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 th…
calculated_atstringyesUTC timestamp when this response was assembled.
contract_versionstringyesObolus public contract version used to shape this response.
faktornumber–Tax factor used for German tax class IV factor workflows when applicable.
gesamtobject–Combined payroll result across all persons in the calculation. Uses the same country-specific output-code meanings as person1 and person2.
localized_ctaobjectyesLocalized call-to-action labels for opening the visual Obolus report link.
method_versionstringyesCalculation method or benchmark method version used for this response.
orientation_notestringyesReminder that the result is an orientation estimate, not professional advice.
person1object–Payroll result for the first person. Interpret stable output codes with the original request Land and the output country-specific usage notes.
person2object–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.
source_urlstringyesCanonical Obolus URL for the matching interactive calculator.
summaryobjectyesNormalized 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-spe…
tax_data_versionstringyesTax-data or backend-engine revision used for this response.
visual_reportstringyesDeep link to the interactive report or calculator view.
warningsarrayyesNon-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-sta…
{"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}
taxcompare ~595

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.

NameTypeReqDescription
ageinteger–Adult age in the selected tax year.
annual_grossnumber–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 sala…
childreninteger–Number of children or dependents used as a broad comparison assumption. Country-specific child allowance and credit rules are simplified for comparability.
countriesarrayyesList of country tax systems to compare. Use at least two countries for a comparison. Supported values: DE, AT, CH, US, UK, IE, CA, AU.
currencystringyesInput 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…
gross_modestring–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_gros…
joint_assessmentboolean–Broad joint filing / joint assessment assumption for comparable country-level estimates. For precise country-specific filing details, use berechne.
periodstring–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 i…
person_typestring–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 fi…
regionsobject–Country-keyed tax regions, for example CH: ZH. Omitted regions use country defaults, reported in calculation_profile.
salary_ctinteger–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…
tax_year–yesTax year, for example 2026. The same tax year is applied to every selected country.
NameTypeReqDescription
assumptionsobjectyesNormalized comparison inputs used for the calculation, including age, tax year, countries, gross mode, salary, and household assumptions.
benchmark_method_versionstring–Editorial benchmark method version used when comparison_basis is local_median_gross.
benchmark_sourcesobject–Country-level benchmark source metadata used in local_median_gross mode, keyed by country code.
calculated_atstringyesUTC timestamp when this response was assembled.
comparison_basisstringyesBasis used for the comparison: shared_gross for the same gross salary in each country, or local_median_gross for country-specific median benchmarks.
contract_versionstringyesObolus public contract version used to shape this response.
gross_inputsobjectyesAnnual 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 mod…
localized_ctaobjectyesLocalized labels for opening the visual TaxCompare report.
method_versionstringyesCalculation method or benchmark method version used for this response.
orientation_notestringyesReminder that the result is an orientation estimate, not professional advice.
ranking_by_netarrayyesCountries ranked by estimated annual net salary, highest net first. Use this for 'where do I keep more money' and 'rank by net income' answers.
resultsarrayyesCountry-level comparison results with gross salary, net salary, income/payroll tax, social contributions, total deductions, and effective burden.
source_urlstringyesCanonical Obolus TaxCompare URL for this result.
summaryobjectyesNormalized annual major-unit amounts for every country result. Use key and country together to render stable comparison cards or tables.
tax_data_versionstringyesTax-data or backend-engine revision used for this response.
tax_year–yesTax year actually used for every country result.
visual_reportstringyesDeep link to TaxCompare with the tool input, countries, year, and agent attribution prefilled.
warningsarrayyesNon-blocking warnings associated with this comparison.
{"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}
Common questions

What is the Obolus MCP server?

Obolus is an MCP server listed in the public MCP registry as io.github.sanzation/obolus. Read-only payroll calculations and multi-country tax comparisons for eight countries. This page covers its hosted endpoint (https://www.obolusfinanz.de/api/mcp/public).

Is the Obolus MCP server safe to use?

Obolus scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Obolus MCP server expose?

Obolus exposes 2 tools: berechne, taxcompare. Their descriptions and schemas cost roughly 1,288 tokens of context every time the server is loaded.

Does the Obolus MCP server require authentication?

No. We connected to Obolus without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Obolus MCP server still maintained?

Obolus is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.