Skip to main content
Glama
dunkio

ÖD-Gehaltsrechner & Brutto-Netto MCP Server

ÖD-Gehaltsrechner & Brutto-Netto MCP Server (Model Context Protocol)

Offizieller Open-Source MCP-Server zur deterministischen Gehalts- und Besoldungsberechnung im deutschen Öffentlichen Dienst sowie universeller Brutto-Netto-Rechner für freie Gehälter nach dem offiziellen Programmablaufplan (PAP) des Bundesfinanzministeriums (BMF).

Smithery Glama License: MIT

Kompatibel mit Google Antigravity, Claude Desktop, Cursor IDE, Windsurf und autonomen KI-Agenten.


🛠 Enthaltene Tools

  1. get_public_sector_options: Übersicht aller Dienstherren (Bund + 16 Länder) und Tarifverträge (TVöD, TV-L etc.) mit Besoldungs- und Entgeltgruppen.

  2. get_salary_and_zulagen_options: Discovery – Liefert Stufen mit Grundgehalt sowie alle wählbaren Stellenzulagen (Polizei, Justiz etc.), Amtszulagen und Familienzuschlags-Regeln für eine Gruppe.

  3. calculate_agent_salary: Vollständige ÖD-Berechnung & BMF-PAP – Exaktes Brutto, Netto und jährliche Sonderzahlung mit ausgewählten Zulagen und bundeslandspezifischem Familienzuschlag (Ortsklasse, Mietenstufe) sowie steuerlichen Details nach BMF-PAP.

  4. calculate_standard_salary: Direktberechnung & Universeller Brutto-Netto-Rechner – Schnelle Gehaltsauskunft aus Kerndaten (Besoldung & Tarif) sowie freie Bruttobeträge (employment_type='sonstige' mit brutto_gehalt). Berechnet Lohnsteuer, Solidaritätszuschlag, Kirchensteuer und alle Sozialabgaben (GKV, PKV, RV, AV, PV) exakt nach dem aktuellen BMF-Programmablaufplan (PAP).


Related MCP server: salaxy-mcp

⚡ Installation & Einrichtung

1. Remote MCP (Cloud SSE & Streamable HTTP – Empfohlen)

Keine lokale Python-Installation nötig! Verbinden Sie Claude Desktop, Cursor oder Ihren KI-Agenten direkt mit dem cloud-gehosteten Server:

  • Server URL: https://infos-oeffentlicher-dienst.de/mcp/sse (oder Streamable HTTP: https://infos-oeffentlicher-dienst.de/mcp)

Konfiguration (Claude Desktop / Cursor Remote SSE):

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "type": "sse",
      "url": "https://infos-oeffentlicher-dienst.de/mcp/sse"
    }
  }
}

💡 Sofort startklar (kein API-Key nötig): Sie können den Server sofort ohne API-Key nutzen (ein kostenloses Basiskontingent von 30 Anfragen/Monat ist standardmäßig aktiv). Wenn Sie höhere monatliche Limits benötigen, können Sie optional einen persönlichen Key anhängen: https://infos-oeffentlicher-dienst.de/mcp/sse?apiKey=IHR_API_KEY.


2. Installation via Smithery (1-Click)

npx @smithery/cli install kio-dunker/brutto-netto-gehaltsrechner --client claude

Oder im Web-Interface von Smithery.ai:

  • Server ID: kio-dunker/brutto-netto-gehaltsrechner

  • MCP Server URL: https://infos-oeffentlicher-dienst.de/mcp/sse


3. Google Antigravity Einrichtung

Tragen Sie den Server in Ihre Antigravity MCP-Konfiguration ein (~/.gemini/config/mcp_config.json):

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "command": "python",
      "args": ["/Pfad/zu/oed-gehaltsrechner-mcp/server.py"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

4. Claude Desktop Einrichtung (Stdio)

Fügen Sie folgenden Block in Ihre claude_desktop_config.json ein:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "command": "python",
      "args": ["/Pfad/zu/oed-gehaltsrechner-mcp/server.py"]
    }
  }
}

API-Key (optional): Der Server funktioniert sofort ohne API-Key (30 Abfragen/Monat). Einen optionalen persönlichen Key für höhere Kontingente können Sie unter infos-oeffentlicher-dienst.de/api oder infos-oeffentlicher-dienst.de/mcp erstellen und in env: {"OED_INFOPORTAL_API_KEY": "sk_live_..."} hinterlegen.


5. Cursor IDE Einrichtung

Erstellen Sie in Ihrem Projekt die Datei .cursor/mcp.json (unterstützt direkt Remote SSE):

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "type": "sse",
      "url": "https://infos-oeffentlicher-dienst.de/mcp/sse"
    }
  }
}

6. Kilo Code Einrichtung

Tragen Sie den Server in Ihre Kilo Code Konfiguration ein (z. B. kilo.jsonc oder Kilo MCP Settings):

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "type": "sse",
      "url": "https://infos-oeffentlicher-dienst.de/mcp/sse"
    }
  }
}

🔑 Authentifizierung & API-Key (Optional)

Der Server ist sofort und ohne Registrierung nutzbar (ein kostenloses Kontingent von 30 Aufrufen/Monat ist standardmäßig aktiv).

Wenn Sie ein höheres monatliches Kontingent oder garantierte Verfügbarkeit benötigen, können Sie unter infos-oeffentlicher-dienst.de/api oder infos-oeffentlicher-dienst.de/mcp einen persönlichen API-Key generieren.

A. Remote MCP (Cloud SSE) – 2 Möglichkeiten:

1. Universell via Query-Parameter (Funktioniert in 100% aller MCP-Clients):

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "type": "sse",
      "url": "https://infos-oeffentlicher-dienst.de/mcp/sse?apiKey=DEIN_API_KEY"
    }
  }
}

2. Via HTTP-Header (z. B. in Cursor, Kilo Code, Windsurf):

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "type": "sse",
      "url": "https://infos-oeffentlicher-dienst.de/mcp/sse",
      "headers": {
        "Authorization": "Bearer DEIN_API_KEY"
      }
    }
  }
}

B. Lokaler Stdio-Modus (server.py):

Hinterlegen Sie den Key als Umgebungsvariable OED_INFOPORTAL_API_KEY:

{
  "mcpServers": {
    "brutto-netto-gehaltsrechner": {
      "command": "python",
      "args": ["/Pfad/zu/server.py"],
      "env": {
        "OED_INFOPORTAL_API_KEY": "DEIN_API_KEY"
      }
    }
  }
}

💬 Beispiel-Prompts für Chat & Agenten

Sobald der Server aktiv ist, versteht Ihre KI natürliche Fragen und liefert centgenaue Ergebnisse:

  • Beamtenbesoldung & Familie:
    „Was verdiene ich als Grundschullehrer A13 Stufe 4 in Bayern netto, wenn ich verheiratet bin und 2 Kinder habe?“

  • Tarifvertrag TVöD:
    „Berechne das TVöD-VKA Entgelt für Gruppe E11 Stufe 3 im Jahr 2026 bei Vollzeit mit VBL.“

  • Zulagen & Dienstherren:
    „Welche Stellenzulagen gibt es für einen Polizeikommissar A9 beim Bund?“

  • Freier Brutto-Netto-Rechner (PAP BMF):
    „Berechne mein Nettogehalt bei 4.500 € Brutto als Angestellter in Steuerklasse 1 in NRW.“


🧪 Lokaler Test

Der MCP-Server benötigt keine externen pip-Pakete (nur Python 3.9+ Standardbibliothek).

Testen über die Kommandozeile (Stdio JSON-RPC):

python server.py

🌐 Verzeichnisse & Registries


📄 Lizenz

MIT License – siehe LICENSE.

Available Tools

4 tools
calculate_agent_salaryA
Read-onlyIdempotent

VOLLSTÄNDIGE ÖD-BERECHNUNG & BMF-PAP: Berechnet das exakte Brutto, Netto und die jährliche Sonderzahlung inklusive ausgewählter Zulagen-IDs und bundeslandspezifischem Familienzuschlag. Die Netto-Ermittlung (Lohnsteuer, Solidaritätszuschlag, Kirchensteuer und Sozialabgaben) erfolgt exakt nach dem aktuellen Programmablaufplan (PAP) des Bundesfinanzministeriums (BMF).

ParametersJSON Schema
NameRequiredDescriptionDefault
stufeYesErfahrungsstufe / Dienstaltersstufe (z. B. '1', '2', '3', '4', '5', '6'). Standard: '3'.
gruppeYesBesoldungs- oder Entgeltgruppe (z. B. 'A9', 'A13', 'B2' für Beamte oder 'E11', 'E9b', 'S12', 'P8', 'Ä1' für Tarif). Standard: 'A9'.
kinderNoAnzahl kindergeldberechtigter Kinder für den Familienzuschlag (z. B. 0, 1, 2). Befreit zugleich vom PV-Zuschlag für Kinderlose.
gkvZusatzNoKassenindividueller GKV-Zusatzbeitrag in Prozent (z. B. 2.9 für Bundesdurchschnitt 2026, Standard: 2.9).
bundeslandNoBundesland des Wohnorts für Kirchensteuersatz (8% in BY/BW vs. 9% in übrigen Ländern) und PV-Sachsenregelung (z. B. 'bayern', 'by', 'nrw'). Standard: 'bayern'.
dienstherrNoDienstherr / Bundesland bei Beamten (z. B. 'bund', 'bayern' bzw. 'by', 'nordrhein-westfalen' bzw. 'nrw'). Erforderlich wenn employmentType='beamte'.
ortsklasseNoBayern Ortsklasse ('i' bis 'vii') für den regionalen Orts- und Familienzuschlag. Standard: 'i'.
period_keyNoOptionaler Gültigkeitszeitraum / Tarifrunde (z. B. '20260501_'). Standard: aktuellste Tabelle.
pkvBeitragNoMonatlicher PKV-Gesamtbeitrag zur privaten Kranken- und Pflegeversicherung in Euro (Standard: 0.0).
steuerjahrNoSteuerjahr für den BMF-Programmablaufplan (Standard: 2026).
steuervierNoFaktor bei Steuerklasse IV mit Faktorverfahren (z. B. 0.955, Standard: 1.0).
geburtsjahrNoGeburtsjahr des Beschäftigten für Altersentlastung und PV-Zuschlag für Kinderlose ab 23 Jahren (Standard: 1992).
mietenstufeNoNRW Mietenstufe ('i' bis 'vii') für den regionalen Ergänzungszuschlag. Standard: 'i'.
kinderpflegeNoAnzahl Kinder unter 25 Jahren für gesetzliche PV-Staffelung ab dem 2. Kind: 0 (0-1 Kind), 1 (2 Kinder), 2 (3 Kinder), 3 (4 Kinder), 4 (5+ Kinder). Standard: 0.
steuerklasseYesLohnsteuerklasse (1 bis 6). Standard: 1.
tarifvertragNoTarifvertrag bei Tarifbeschäftigten oder Ärzten (z. B. 'tvoed-vka', 'tvoed-bund', 'tv-l', 'tv-aerzte-vka'). Erforderlich wenn employmentType='tarif' oder 'aerzte'.
familienstandNoFamilienstand für den beamtenrechtlichen Familienzuschlag Stufe 1 ('ledig' oder 'verheiratet'). Standard: 'ledig'.
insuranceTypeYesKrankenversicherungsart: 'pkvOhne' (Private Krankenversicherung ohne Beihilfe/AG-Zuschuss – typisch für Beamte), 'pkvMit' (PKV mit AG-Zuschuss), 'gkv' (Gesetzliche Krankenversicherung – typisch bei Tarif), 'gkvMitBeihilfe' (Pauschale Beihilfe). Standard: 'pkvOhne'.
kirchensteuerNoKirchensteuerpflichtig (true für ja, false für nein). Standard: false.
employmentTypeYesArt des Beschäftigungsverhältnisses: 'beamte' für Besoldung, 'tarif' für Tarifverträge (z. B. TVöD, TV-L), 'aerzte' für Ärztetarife. Standard: 'beamte'.
sonstigeZulagenNoSonstige individuelle, steuerpflichtige Monatszulage in Euro (Standard: 0.0).
zusatzversorgungNoBetriebliche Zusatzversorgung im Öffentlichen Dienst: 'nein' (Beamte/keine), 'vbl' (VBL West/klassisch), 'vbl-ost' (VBL Ost). Standard: 'nein'.
kinderfreibetraegeNoZahl der Kinderfreibeträge auf der elektronischen Lohnsteuerkarte (z. B. 0.0, 0.5, 1.0, 1.5, 2.0). Standard: 0.0.
rentenversicherungNoGesetzliche Rentenversicherung: 'nein' (Beamte/befreit) oder 'gRV' (gesetzlich rentenversichert). Standard: 'nein'.
employmentPercentageNoBeschäftigungsumfang in Prozent bei Teilzeit (z. B. 100.0 für Vollzeit, 80.0, 50.0). Standard: 100.0.
selected_zulage_keysNoListe ausgewählter Zulagen-IDs aus get_salary_and_zulagen_options (z. B. Amtszulage, Stellenzulage).
pkvZuschussArbeitgeberNoMonatlicher Arbeitgeberzuschuss zur privaten KV/PV in Euro (Standard: 0.0).
arbeitslosenversicherungNoGesetzliche Arbeitslosenversicherung: 'nein' (Beamte/befreit) oder 'gAV' (gesetzlich versichert). Standard: 'nein'.
profiGesamtprivBasisKvPvNoBasisabsicherungsbeitrag der PKV nach Bürgerentlastungsgesetz in Euro (steuermindernder Vorsorgeaufwand, Standard: 0.0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
jahrNoJährliche Gehaltsdaten inklusive Jahressonderzahlung
monatNoMonatliche Gehalts- und Abzugsdaten
zulagen_berechnetNoListe der berechneten Zulagen und Zuschläge

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations by disclosing the exact BMF PAP methodology, the components included (Lohnsteuer, Solidaritätszuschlag, Kirchensteuer, Sozialabgaben), and the inclusion of selected allowances and state-specific family allowance. No contradiction with annotations.

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?

The description is compact: a front-loaded purpose line and one detailed sentence on methodology. Every sentence adds meaningful information, and the structure suits a tool with 29 parameters without becoming bloated.

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?

For a complex calculation tool, the description covers the core purpose, method, tax components, allowances, and special payments, while the output schema handles return-value details and annotations cover safety. The only notable gap is the lack of explicit guidance on when to choose this over calculate_standard_salary.

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%, so the schema already documents all 29 parameters. The description adds only general context about selected Zulagen-IDs and the state-specific Familienzuschlag, but does not enrich individual parameter semantics beyond what the schema provides. Baseline 3 is appropriate.

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 states a specific verb and resource: 'Berechnet das exakte Brutto, Netto und die jährliche Sonderzahlung inklusive ausgewählter Zulagen-IDs und bundeslandspezifischem Familienzuschlag.' It clearly distinguishes itself from the sibling option-retrieval tools and from a standard salary calculator by emphasizing complete ÖD-Berechnung and BMF-PAP-based net calculation.

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

Usage Guidelines4/5

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

The description gives a clear context: use for complete German public-service salary calculation with allowances and exact tax/social deductions according to the BMF PAP. However, it does not explicitly contrast this tool with calculate_standard_salary or state when not to use it, leaving some differentiation to inference.

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

calculate_standard_salaryB
Read-onlyIdempotent

DIREKTBERECHNUNG & BRUTTO-NETTO-RECHNER: Berechnet Grundgehalt, Brutto, Netto und Sonderzahlung aus Kerndaten. Unterstützt sowohl Tarif & Besoldung ('beamte', 'tarif', 'aerzte') als auch freie Bruttobeträge ('sonstige' mit 'bruttoGehalt') mit exakter Lohnsteuer- und Sozialversicherungsberechnung nach aktuellem Programmablaufplan (PAP) des Bundesfinanzministeriums (BMF).

ParametersJSON Schema
NameRequiredDescriptionDefault
stufeNoErfahrungsstufe (z. B. '3').
gruppeNoBesoldungs- oder Entgeltgruppe (z. B. 'A9', 'E11').
kinderNoGibt an, ob Kinder vorhanden sind: 'ja' oder 'nein' (befreit vom PV-Zuschlag für Kinderlose). Standard: 'nein'.
gkvZusatzNoKassenindividueller GKV-Zusatzbeitrag in Prozent (z. B. 2.9 für Bundesdurchschnitt 2026, Standard: 2.9).
bundeslandNoBundesland des Wohnorts für Kirchensteuersatz und PV Sachsen (z. B. 'bayern', 'by', 'nrw'). Standard: 'bayern'.
dienstherrNoDienstherr / Bundesland bei Beamten (z. B. 'bund', 'bayern' bzw. 'by', 'nordrhein-westfalen' bzw. 'nrw').
period_keyNoOptionaler Gültigkeitszeitraum / Tarifrunde.
pkvBeitragNoMonatlicher PKV-Gesamtbeitrag in Euro (Standard: 0.0).
steuerjahrNoSteuerjahr für den BMF-Programmablaufplan (Standard: 2026).
steuervierNoFaktor bei Steuerklasse IV mit Faktorverfahren (z. B. 0.955, Standard: 1.0).
geburtsjahrNoGeburtsjahr des Beschäftigten für Altersentlastung und PV-Zuschlag (Standard: 1992).
bruttoGehaltNoFester monatlicher oder jährlicher Bruttobetrag in Euro (nur erforderlich bei employmentType='sonstige').
kinderpflegeNoAnzahl Kinder unter 25 Jahren für gesetzliche PV-Staffelung ab dem 2. Kind: 0 (0-1 Kind), 1 (2 Kinder), 2 (3 Kinder), 3 (4 Kinder), 4 (5+ Kinder). Standard: 0.
steuerklasseYesLohnsteuerklasse (1 bis 6). Standard: 1.
tarifvertragNoTarifvertrag bei Tarifbeschäftigten oder Ärzten (z. B. 'tvoed-vka', 'tv-l').
insuranceTypeYesKrankenversicherungsart: 'pkvOhne' (Private Krankenversicherung), 'pkvMit' (PKV mit AG-Zuschuss), 'gkv' (Gesetzliche Krankenversicherung), 'gkvMitBeihilfe' (Pauschale Beihilfe). Standard: 'pkvOhne'.
kirchensteuerNoKirchensteuerpflichtig (true für ja, false für nein). Standard: false.
employmentTypeYes'beamte', 'tarif', 'aerzte' oder 'sonstige' (für freie Gehaltseingabe/Brutto-Netto-Rechner). Standard: 'beamte'.
zeitraumGehaltNoZeitraum für bruttoGehalt: 'monat' oder 'jahr' (Standard: 'monat').
sonstigeZulagenNoSonstige individuelle, steuerpflichtige Monatszulage in Euro (Standard: 0.0).
zusatzversorgungNoBetriebliche Zusatzversorgung im Öffentlichen Dienst: 'nein' (Beamte/keine), 'vbl' (VBL West/klassisch), 'vbl-ost' (VBL Ost). Standard: 'nein'.
kinderfreibetraegeNoZahl der Kinderfreibeträge auf der Lohnsteuerkarte (z. B. 0.0, 0.5, 1.0, 1.5, 2.0). Standard: 0.0.
rentenversicherungNoGesetzliche Rentenversicherung: 'nein' (Beamte/befreit) oder 'gRV' (gesetzlich versichert). Standard: 'nein'.
employmentPercentageNoBeschäftigungsumfang in Prozent bei Teilzeit (z. B. 100.0, 80.0, 50.0). Standard: 100.0.
pkvZuschussArbeitgeberNoMonatlicher Arbeitgeberzuschuss zur privaten KV/PV in Euro (Standard: 0.0).
arbeitslosenversicherungNoGesetzliche Arbeitslosenversicherung: 'nein' (Beamte/befreit) oder 'gAV' (gesetzlich versichert). Standard: 'nein'.
profiGesamtprivBasisKvPvNoBasisabsicherungsbeitrag der PKV nach Bürgerentlastungsgesetz in Euro (Standard: 0.0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
jahrNoJährliche Gehaltsdaten
monatNoMonatliche Gehalts- und Abzugsdaten

TDQS

B3.4/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, idempotentHint=true, and no destructive action. The description adds context about using the BMF's Programmablaufplan and supports precise tax/social insurance calculations, which is useful. However, it does not disclose important behaviors like requiring specific inputs for certain employment types, potential errors for invalid combinations, or that 'sonstige' requires bruttoGehalt, though the schema does indicate that. No contradiction found.

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

Conciseness3/5

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

The description is two sentences, but it is dense with technical jargon and German acronyms, which may hinder quick comprehension. It front-loads the main purpose but is not as concise as it could be, given the complexity of the tool. It is not overly long, but it could be restructured for clarity.

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?

Given the tool's high complexity (27 params, 9 enums, multiple employment types), the description covers the core modes and mentions exact tax/social insurance calculations, but it omits guidance on how parameters interact (e.g., needed fields for each employment type) and potential validation rules. The output schema exists, so return values are presumably covered. The description is reasonably complete but could add more usage context.

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?

The schema provides 100% coverage for all 27 parameters, with detailed descriptions for each. The description adds minimal param guidance: it clarifies that 'sonstige' uses 'bruttoGehalt' and that the calculation is based on current PAP, but does not explain all parameters. Since coverage is full, the baseline is 3 and the description adds modest value.

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

Purpose4/5

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

The description clearly states it calculates base salary, gross, net, and special payments from core data, distinguishing between tariff/Beamte and 'sonstige' modes. However, the German acronyms (DIREKTBERECHNUNG & BRUTTO-NETTO-RECHNER) may be confusing, and the purpose is not explicitly differentiated from sibling tools like calculate_agent_salary.

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

Usage Guidelines3/5

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

The description implies it supports multiple employment types and covers both gross-net calculation and tariff/Beamte modes, but it does not explicitly state when to use this tool over calculate_agent_salary or get_public_sector_options. No exclusion criteria or explicit alternatives are given, so the agent must infer usage from the tool name and siblings.

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

get_public_sector_optionsA
Read-onlyIdempotent

Liefert eine Übersicht aller Dienstherren (Bund & 16 Bundesländer) und Tarifverträge (TVöD, TV-L, etc.) mit den verfügbaren Besoldungsgruppen.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
periodenNoVerfügbare Gültigkeitszeiträume und Tarifrunden
dienstherrenNoListe aller Dienstherren für Beamte (Bund und alle 16 Bundesländer)
tarifvertraegeNoListe aller Tarifverträge im Öffentlichen Dienst (z. B. TVöD VKA, TV-L)

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the scope of what is returned but does not disclose additional behavioral traits such as ordering, caching, or response size. With annotations present, this is adequate but not rich.

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?

The description is one focused sentence, front-loaded with the action ('Liefert eine Übersicht') and followed by the precise objects covered. No filler or redundancy.

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

Completeness5/5

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

For a parameterless, read-only options-retrieval tool with an output schema, the description is complete. It tells the agent exactly what domain data is covered, while the output schema covers return structure and annotations cover safety.

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?

The tool has zero parameters and 100% schema coverage, so there is nothing for the description to compensate for. According to the baseline for no-parameter tools, a 4 is appropriate.

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 uses a specific verb ('Liefert eine Übersicht') and names the exact resource: all Dienstherren (Bund & 16 Bundesländer), collective agreements (TVöD, TV-L, etc.), and available Besoldungsgruppen. This clearly distinguishes it from the calculator siblings, which focus on salary computation rather than option listing.

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

Usage Guidelines4/5

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

The description gives clear context: this tool returns an overview of public-sector employers, tariff agreements, and salary groups. It does not explicitly name exclusions or alternatives, but the content makes its role as an options/metadata lookup self-evident compared to the calculate_* siblings.

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

get_salary_and_zulagen_optionsA
Read-onlyIdempotent

DISCOVERY: Liefert für einen Dienstherrn oder Tarifvertrag und eine Gruppe alle Stufen mit Grundgehalt sowie alle wählbaren Stellenzulagen (Polizei, Justiz etc.), Amtszulagen und Familienzuschlags-Regeln.

ParametersJSON Schema
NameRequiredDescriptionDefault
gruppeYesBesoldungs- oder Entgeltgruppe (z. B. 'A9', 'A13', 'E11', 'B2').
dienstherrNoDienstherr / Bundesland (z. B. 'bayern' bzw. 'by', 'bund', 'nordrhein-westfalen' bzw. 'nrw') – erforderlich wenn employmentType='beamte'.
period_keyNoOptionaler Gültigkeitszeitraum / Tarifrunde (z. B. '20260501_'). Standard: aktuellste Tabelle.
tarifvertragNoTarifvertrag (z. B. 'tvoed-vka', 'tv-l') – erforderlich wenn employmentType='tarif'.
employmentTypeYesArt des Beschäftigungsverhältnisses: 'beamte' für Besoldung oder 'tarif' für Tarifverträge.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gruppeNoBesoldungs- oder Entgeltgruppe
stufenNoTabellen-Grundgehälter je Erfahrungsstufe
stellenzulagenNoWählbare Stellenzulagen und Amtszulagen mit Betrag und ID
familienzuschlagNoRegeln und Beträge für Ehe- und Kinderbestandteile des Familienzuschlags

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so no safety warnings are needed. The description adds that the result includes all steps with Grundgehalt and all selectable allowances/family allowance rules, which is useful context beyond the annotations, but it does not disclose additional behavioral caveats.

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

Conciseness4/5

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

One concise, front-loaded sentence with a clear 'DISCOVERY:' label and a comprehensive list of returned data. It is appropriately sized, though the long list of result categories could be structured slightly more readably without losing information.

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?

Given the output schema, full parameter descriptions, and strong annotations, the description is sufficient for an agent to understand the tool's purpose and inputs. It captures the core return categories and implies the conditional employmentType/dienstherr/tarifvertrag requirements without needing to restate them.

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%, so every parameter is already documented. The description only restates the core inputs (Dienstherr/Tarifvertrag, Gruppe) without adding new syntax, formatting, or conditional-dependency details beyond what the schema provides.

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

Purpose4/5

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

The description uses the verb 'Liefert' and specifies a concrete resource: salary steps with basic salary, selectable position allowances, office allowances, and family allowance rules for a Dienstherr/Tarifvertrag and a group. It clearly indicates a discovery/lookup role rather than a calculation tool, though it does not explicitly differentiate itself from the calculate_* siblings.

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

Usage Guidelines3/5

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

The 'DISCOVERY:' prefix and the scope ('für einen Dienstherrn oder Tarifvertrag und eine Gruppe') imply this tool is for retrieving salary-table and allowance options. However, it does not explicitly state when to prefer this tool over calculate_agent_salary or calculate_standard_salary, nor does it give exclusions, so the guidance is implied rather than explicit.

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. 4 tool updatesv1.0.0
    • First observedcalculate_agent_salary
    • First observedcalculate_standard_salary
    • First observedget_public_sector_options
    • First observedget_salary_and_zulagen_options

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation3/5

The two discovery tools are clearly separated as overview vs. detailed options, but calculate_agent_salary and calculate_standard_salary overlap significantly: both provide full gross/net calculations and both appear to cover Beamte/Tarif cases. The descriptions offer some hints (allowance IDs vs. core data), but the boundary is still easy to misread.

Naming Consistency5/5

All tools follow a consistent lowercase snake_case verb_noun style: get_* for discovery and calculate_* for computation. There are no mixed naming conventions or verb variations.

Tool Count5/5

Four tools is an appropriate size for a focused salary calculator: two discovery steps and two calculation paths. Each tool has a concrete role in the workflow, and the set does not feel padded or incomplete.

Completeness4/5

The domain is well covered: users can discover employers/tariffs/groups and allowances, then calculate salary with either preselected options or core data. The main shortcoming is redundancy between the two calculation tools rather than a missing operation, and the standard calculator already subsumes much of the agent-specific path.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to calculate French individual income tax and retrieve current tax brackets using official government data. Supports household composition calculations and provides up-to-date tax information for French residents.
    11
    14
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Finnish payroll (palkanlaskenta) API as MCP tools for calculating salaries, retrieving income types, and fetching mock employee data.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables Dutch income tax calculations: converts gross to net salary, net to gross, compares multiple salary scenarios, and provides tax bracket data for supported years. Every result includes a detailed breakdown and a thetax.nl permalink.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to calculate Swiss income, wealth, inheritance, capital payment, and corporate taxes for any municipality, compare tax burdens, and find cheapest locations without an API key.
    13
    MIT