Skip to main content
Glama

mahnantrag-mcp

MCP-Server (und Claude-Plugin), mit dem Claude einen Antrag auf Erlass eines Mahnbescheids über online-mahnantrag.de vorbereitet:

  1. Vorprüfung – deterministisch, bevor das Portal den Antrag sieht

  2. Ausfüllen des Portals bis zur Datenübersicht – im sichtbaren Browser, Mensch kann jederzeit übernehmen. Haltepunkt am Prozessgericht: das Portal leitet es aus der Gegneranschrift ab, Weiterklicken gilt als Wahl nach § 35 ZPO. Der Ausfüller zeigt das Gericht und macht erst nach Bestätigung weiter.

  3. EDA-Download – erst nach ausdrücklicher Freigabe und nur, wenn die Datenübersicht keine Fehler (FehlerDa) und keine offenen Warnungen zeigt; Datei wird schreibgeschützt gespeichert und gehasht

Eingereicht wird nie durch diesen Server. Die EDA-Datei geht unverändert über einen sicheren Übermittlungsweg (beA, § 130a Abs. 4 ZPO) an das Mahngericht. Das macht der Mensch.

Status: v0.1, Work-in-Progress. Ende-zu-Ende gegen das Live-Portal getestet (09.11.2026, Fantasiedaten), einschließlich EDA-Download. Eine echte Einreichung beim Mahngericht ist noch nicht erprobt.

Warum eine Vorprüfung?

Das Portal prüft fast nichts. Vierstellige PLZ, eine weibliche Vertreterfunktion zu einem männlichen Namen oder eine doppelt eingetragene vorgerichtliche Anwaltsvergütung gehen ohne Meldung durch. antrag_pruefen fängt unter anderem ab:

  • Feldlängen des Portals (Firmenname 35 Zeichen je Zeile, Ort 27, Kennziffer 8 Ziffern …)

  • Katalogcodes (75 Anspruchsarten, 178 Rechtsformen, Belegarten, Auslagenarten)

  • PLZ, IBAN-Prüfziffer, Daten in der Zukunft

  • vorgerichtliche Anwaltsvergütung als Haupt- und Nebenforderung (verdoppelt die Forderung)

  • Barcode-Weg für Rechtsanwälte nur mit Glaubhaftmachung (§ 130d S. 2, 3 ZPO)

  • 9 Punkte über Basiszins gegen natürliche Personen (§ 288 Abs. 1 vs. 2 BGB)

  • Kosten des Mahnverfahrens als Auslage (§ 699 Abs. 3 ZPO)

  • rechtliche Weichen, die ausdrücklich entschieden sein müssen: Gegenleistung, streitiges Verfahren, Vergütung, Einreichung durch Berufsträger (auch in eigener Sache), vorgerichtliche Anwaltsvergütung als Haupt- oder Nebenforderung, Verbraucherbeteiligung (§ 288 BGB), Prozessgericht

Related MCP server: Dichiarazione-MCP

Tools

Tool

Wirkung

kataloge_suchen

Anspruchsart, Rechtsform, Belegart, Auslagenart nachschlagen

antrag_schema

JSON-Schema des Antrags

antrag_pruefen

Vorprüfung, nur lesend

portal_ausfuellen

Portal füllen; hält am Prozessgericht (falls nicht bestätigt) und an der Datenübersicht

ausfuellen_fortsetzen

nach Bestätigung des angezeigten Prozessgerichts weiterfüllen

eda_herunterladen

EDA-Datei speichern (nur nach Freigabe)

portal_status / portal_schliessen

Sitzung ansehen / beenden

Beispielantrag: tests/beispiel_antrag.json.

Umfang v0.1 (bewusst eng)

Unterstützt: ein Antragsteller, ein Antragsgegner (je natürliche Person oder Firma mit einem gesetzlichen Vertreter), Prozessbevollmächtigter (Reiter „Rechtsanwalt/-beistand“) oder Antragsteller selbst, ein katalogisierter Anspruch mit optional Abtretung und laufenden Zinsen, Auslagen und Nebenforderungen, Bankverbindung, Versandart EDA-Download oder Barcode.

Abgelehnt statt halb ausgefüllt: mehrere Ansprüche/Parteien/Vertreter, Auslandsanschriften (auch beim Zedenten), Urkunden-/Scheck-/Wechselmahnverfahren, sonstige Ansprüche, ausgerechnete Zinsen, RA-Gesellschaft/Inkasso als Vertreter, manuelle Gerichtswahl. Beim Barcode-Weg hält der Ausfüller auf der Übersicht an; Druck und Unterschrift macht der Mensch im Browser.

Installation

Voraussetzungen: uv, Google Chrome (sonst uv run playwright install chromium).

Als Plugin (Claude Code / Claude Desktop): Marketplace eliasreiche/mahnantrag-mcp hinzufügen und Plugin mahnantrag installieren.

Direkt als MCP-Server:

claude mcp add mahnantrag -- uv run --directory /pfad/zu/mahnantrag-mcp mahnantrag-mcp

Umgebungsvariablen (optional):

Variable

Bedeutung

MAHNANTRAG_AUSGABE

Zielordner für EDA-Dateien (Standard ~/Documents/Mahnantraege); je Antrag ein Unterordner <Zeitpunkt>_<Geschäftszeichen>, darin die Datei unter dem unveränderten Portal-Namen (z. B. EDA_MBA_09_11_2026_930226_<32 Hex>.eda), schreibgeschützt

MAHNANTRAG_BROWSER_KANAL

Playwright-Kanal (Standard chrome)

MAHNANTRAG_BROWSER_PFAD

expliziter Pfad zu einem Chromium

Datenschutz und Berufsrecht

Die Antragsdaten (Parteien, Forderung) laufen durch das Sprachmodell. In Kanzleien deshalb nur mit einem berufsrechtlich abgesicherten Modellzugang nutzen (z. B. Claude über Amazon Bedrock in der EU mit § 43e-BRAO-Vereinbarung), nicht mit einem Verbraucherkonto. Der Server selbst schreibt nur die heruntergeladene EDA-Datei auf die Platte, in einen Ordner <Zeitpunkt>_<Geschäftszeichen>. Das Protokoll bleibt im Arbeitsspeicher; Fehlermeldungen zur Antragsstruktur nennen Feldpfade, nicht die eingegebenen Werte.

Das Portal (verantwortlich: Justizministerium Baden-Württemberg, Koordinierungsstelle für das automatisierte Mahnverfahren) hat laut Analyse keinen Bot-Schutz und keine Nutzungsbedingung gegen automatisierte Bedienung. Der Ausfüller klickt die Zustimmung zum Datenschutzhinweis des Portals nur, wenn datenschutzhinweis_akzeptiert=true übergeben wird.

Entwicklung

uv sync
uv run pytest                                              # Unit-Tests, offline
uv run python scripts/mcp_rauchtest.py                     # MCP über stdio
uv run python scripts/live_probelauf.py tests/beispiel_antrag.json --sichtbar   # Live bis Übersicht, kein Download
uv run python scripts/live_probelauf.py tests/beispiel_antrag.json --gericht-bestaetigen --download /tmp/eda   # inkl. Download (nur Fantasiedaten!)

Portalwissen: docs/referenz/ (Masken, Felder, zwölf Fallen). Neue Erkenntnisse aus Live-Läufen stehen als Kommentar am Code (z. B. Begründungspflicht für sonstige Auslagen).

Sicherheit

Sicherheitslücken bitte privat melden, siehe SECURITY.md. CI führt bei jedem Push die Offline-Tests (inklusive der Freigabesperren) und einen gitleaks-Scan aus.

Quellen und Lizenz

Code: GPL-3.0-or-later, siehe LICENSE.

Ausgenommen sind die Inhalte aus der Portal-Analyse nbindewald-legal/mahnantrag-portal-reference: docs/referenz/ (unveränderte Kopie) und die daraus abgeleiteten Kataloge in src/mahnantrag_mcp/daten/*.json stehen unter CC BY 4.0. Namensnennung und Änderungen: NOTICE.

Keine Rechtsberatung. Die Verantwortung für Inhalt und Einreichung des Antrags liegt bei der antragstellenden Person bzw. dem Prozessbevollmächtigten.

Available Tools

8 tools
antrag_pruefenB
Read-only

Antrag deterministisch vorprüfen (Feldlängen, Kataloge, PLZ, IBAN, doppelte Anwaltsvergütung, § 130d ZPO, § 288 BGB, Pflicht-Entscheidungen). Schreibt nichts, öffnet keinen Browser.

NameRequiredDescriptionDefault
antragYes

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=false, so 'Schreibt nichts, öffnet keinen Browser' largely restates structured data rather than adding new information. The description does add that the check is deterministic and enumerates the rule sets applied, but it says nothing about how findings or errors are surfaced to the caller.

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?

Two compact clauses, front-loaded with the action and the guarantee, with the rule list in a parenthetical. Dense but efficient; the long section-symbol enumeration is informative rather than filler.

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

Completeness2/5

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

For a validation tool with a free-form nested input and no output schema, the description leaves two critical gaps: the structure of the antrag object and the shape of the check result (pass/fail list, error codes, severity). With no output schema, the return behavior had to be described somewhere and is not.

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

Parameters2/5

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

Schema description coverage is 0% and the single 'antrag' parameter is a free-form nested object with additionalProperties=true, so the schema conveys nothing about expected fields. The description compensates only indirectly by implying the checks operate on field lengths, postal code, IBAN and lawyer fee data, but never states what shape the antrag object must have.

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 names a specific verb and resource ('Antrag deterministisch vorprüfen') and enumerates the concrete rule families checked (Feldlängen, Kataloge, PLZ, IBAN, doppelte Anwaltsvergütung, § 130d ZPO, § 288 BGB, Pflicht-Entscheidungen). That distinguishes it clearly from write-oriented siblings like portal_ausfuellen or ausfuellen_fortsetzen, though no sibling is named explicitly.

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?

Usage is only implied: the word 'vorprüfen' suggests it should run before submitting via portal_ausfuellen, but the description never states when to call it, when not to, or which sibling to use instead for schema lookup (antrag_schema) or catalog lookups (kataloge_suchen).

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

antrag_schemaA
Read-only

JSON-Schema des Antrags (Felder, Pflichtangaben, Beschreibungen).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already establish that this is a read-only, closed-world operation. The description adds that the returned schema contains fields, required fields, and descriptions, but it does not elaborate on return format, freshness, or other behavioral details. This is adequate but minimal beyond 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 a single compact sentence with no unnecessary wording. It front-loads the key information: this is the JSON schema for the application.

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 zero-parameter schema retrieval tool with no output schema, the description sufficiently indicates that the result is a JSON schema containing fields, required fields, and descriptions. It could say more about the returned structure or intended downstream use, but it is broadly complete.

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 takes zero parameters, so the baseline is 4. The description does not need to explain parameter semantics and does not introduce any misleading parameter-related information.

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 names a specific resource and return type: the JSON schema of the application ('Antrags'), including fields, required information, and descriptions. It is clear what the tool provides, though it does not explicitly distinguish itself from siblings such as antrag_pruefen or kataloge_suchen.

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool versus alternatives, no prerequisites, and no exclusions. An agent must infer its role from the schema-focused name and description alone.

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

ausfuellen_fortsetzenA

Nach status 'gericht_bestaetigen': das vom Menschen bestätigte Prozessgericht übernehmen und bis zur Datenübersicht weiterfüllen. Der Name muss genau dem angezeigten Gericht entsprechen.

NameRequiredDescriptionDefault
prozessgericht_bestaetigtYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation/open-world profile is covered. The description adds that it writes confirmed data forward until the Datenübersicht and that the value must match exactly the displayed court, but says nothing about what happens on a mismatch, whether partial progress is lost, or what state results.

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?

Two sentences with the precondition front-loaded and the validation constraint second; no filler. Slightly cryptic phrasing ('bis zur Datenübersicht weiterfüllen') leaves the endpoint of the action implicit.

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?

For a resume-style mutation tool with a single required param, no output schema and no annotations beyond safety flags, the description covers the entry condition and the value constraint but not the outcome — what gets written, how far it fills, or error behavior on mismatch. Adequate but with a clear gap around results.

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 coverage is 0% for the single required parameter 'prozessgericht_bestaetigt', so the description must carry the burden. It does add two useful constraints — the value is the human-confirmed court and must exactly equal the displayed court name — but does not specify format, case sensitivity, or what a mismatch returns.

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?

States a specific verb ('übernehmen', 'weiterfüllen') and resource (Prozessgericht, form data through to the Datenübersicht), and ties it to a concrete workflow status 'gericht_bestaetigen'. An agent can distinguish it from the sibling portal_ausfuellen (initial filling) by the explicit continuation/resume framing, though the description never names that sibling directly.

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?

Gives an explicit trigger condition — only after status 'gericht_bestaetigen' — which is a real when-to-use rule rather than implied usage. It does not explicitly exclude alternatives (e.g., when to call portal_ausfuellen instead), keeping it short of a 5.

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

eda_herunterladenA
Destructive

EDA-Datei aus der offenen Portal-Sitzung herunterladen (nur Versandart EDA-Download).

Nur aufrufen, wenn der Mensch die Datenübersicht gesehen und ausdrücklich freigegeben hat. Gesperrt, wenn das Portal Fehler meldet (FehlerDa) oder nicht freigegebene Warnungen offen sind. Die Datei wird schreibgeschützt unter ihrem Portal-Namen gespeichert und gehasht, aber nie verändert. Zielordner: Umgebungsvariable MAHNANTRAG_AUSGABE, sonst ~/Documents/Mahnantraege. (destructiveHint, damit Clients vor dem Aufruf beim Menschen nachfragen.)

NameRequiredDescriptionDefault
uebersicht_vom_menschen_freigegebenYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: the file is written read-only under its portal name, is hashed, and is never modified, with the concrete output folder resolution rule (MAHNANTRAG_AUSGABE, else ~/Documents/Mahnantraege). It even explains why destructiveHint is set, so the apparent tension with 'nie verändert' is resolved rather than left as a contradiction.

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 short, front-loaded statements ordered as purpose, when to call, when blocked, side effects, output location. No filler, and the parenthetical annotation note is compact and informative.

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?

There is no output schema, and the description compensates by stating the target folder, the read-only storage, and hashing. Combined with the guard conditions, an agent has everything needed to invoke it safely despite the minimal one-parameter 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 description coverage is 0%, so the description must carry the meaning. It does define the real condition behind the single boolean parameter (the human must have seen the data overview and explicitly approved it), though without describing the parameter itself or what happens when it is false.

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?

Specific verb plus resource: 'EDA-Datei aus der offenen Portal-Sitzung herunterladen'. The scope qualifier '(nur Versandart EDA-Download)' distinguishes it from sibling write-flow tools such as portal_ausfuellen and portal_status.

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?

Explicit preconditions ('Nur aufrufen, wenn der Mensch die Datenübersicht gesehen und ausdrücklich freigegeben hat') and explicit blocking conditions ('Gesperrt, wenn das Portal Fehler meldet (FehlerDa) oder nicht freigegebene Warnungen offen sind'). The agent knows both when to call and when not to.

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

kataloge_suchenA
Read-only

Katalogwerte des Portals nachschlagen.

katalog: 'anspruchsart' | 'rechtsform' | 'belegart' | 'auslage' suchbegriff: Teil des Namens (z. B. 'Kauf', 'GmbH') oder exakter Code; leer = alles.

NameRequiredDescriptionDefault
katalogYes
suchbegriffNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe, closed lookup. The description adds useful behavior – that an empty suchbegriff returns everything, implying potentially large result sets – but says nothing about result ordering, size, or failure modes for an invalid catalog value.

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?

Two front-loaded blocks: one sentence of purpose, then per-parameter notes with concrete examples ('Kauf', 'GmbH'). Every element is functional and there is no redundant filler.

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 two-parameter lookup with no output schema, the description covers the catalog domain and search semantics well enough to call the tool correctly. The remaining gap is what the returned entries look like (code plus label) and whether results are capped, which the absent output schema leaves unaddressed.

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 description coverage is 0% and there are no enums, so the description carries the full burden: it lists the exact permitted values for 'katalog' and defines 'suchbegriff' as partial name or exact code with empty meaning all. This is precisely the information missing from the schema; it loses a point only for not covering case sensitivity or behavior on an unknown catalog 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 states a concrete verb plus resource ('Katalogwerte des Portals nachschlagen') and enumerates the four catalogs that can be queried, which makes it unambiguous what the tool returns. It does not explicitly contrast itself with siblings like portal_ausfuellen or antrag_schema, though the enum of catalog names effectively separates it in practice.

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?

Usage is implied rather than stated: the mention of partial names and exact codes suggests this is a lookup used to resolve valid values before filling the portal. There is no explicit 'use this when you need X code' guidance and no warning about when not to call it or what to do with the results.

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

portal_ausfuellenA

Füllt online-mahnantrag.de aus und hält an der Datenübersicht an. Es wird nichts eingereicht.

Haltepunkt Prozessgericht: Ist entscheidungen.prozessgericht_bestaetigt leer oder passt es nicht zum vom Portal abgeleiteten Gericht, endet der Aufruf mit status 'gericht_bestaetigen'.

datenschutzhinweis_akzeptiert: Der Mensch hat den Datenschutzhinweis des Portals gelesen und stimmt zu (der Ausfüller klickt dort 'Ich stimme zu'). Muss True sein. sichtbar: Browserfenster zeigen (empfohlen), damit der Mensch mitlesen und übernehmen kann. Die Portal-Sitzung läuft nach ca. 30 Minuten ohne Aktivität ab.

NameRequiredDescriptionDefault
antragYes
sichtbarNo
datenschutzhinweis_akzeptiertYes

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), it discloses exactly what state change occurs (form is filled but nothing is submitted), a termination condition with a specific returned status, the human-consent requirement, and a ~30-minute session inactivity timeout. That is precisely the external-world context an agent needs and the annotations cannot express.

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?

Purpose and the no-submission guarantee are front-loaded, and the rest is organized as labeled clauses (Haltepunkt, parameter names). It is dense but every line carries operational information; the lack of a trailing summary of expected success status is the only minor gap.

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?

With no output schema, the description covers the important return behavior (halt with status 'gericht_bestaetigen') and the session lifetime, which is adequate for a stateful form-filling tool. The one substantive hole is the undocumented 'antrag' payload, which an agent must resolve via the sibling schema tool.

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 0%, so the description must carry parameter meaning; it does well for two of three: 'datenschutzhinweis_akzeptiert' (must be True, human has read and agreed) and 'sichtbar' (show the browser so the human can follow along, recommended). The required 'antrag' nested object is never described, leaving the most complex parameter dependent on the sibling 'antrag_schema'.

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 opens with a concrete verb and target ('Füllt online-mahnantrag.de aus') and immediately scopes the action ('hält an der Datenübersicht an. Es wird nichts eingereicht.'), so an agent knows exactly what the tool does and its stopping point. It does not explicitly name the sibling 'ausfuellen_fortsetzen' or explain the split between starting and continuing a fill, which keeps it from a 5.

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?

It states concrete preconditions and haltepunkte: the Prozessgericht must be confirmed or the call ends with status 'gericht_bestaetigen', and datenschutzhinweis_akzeptiert must be True. It recommends 'sichtbar' for human co-reading. However, it never routes to alternatives such as 'ausfuellen_fortsetzen' or 'portal_status', so the when-to-use-versus-siblings dimension is left implicit.

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

portal_schliessenA
Destructive

Browser schließen. Nicht heruntergeladene Eingaben im Portal gehen verloren.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already state destructiveHint=true and readOnlyHint=false. The description then adds concrete meaning: whatever portal inputs have not been downloaded are lost. That tells the agent exactly what is destroyed, which annotations alone do not specify. It still omits whether the loss is recoverable through a session reset, or what happens afterward to a partially completed form.

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 two short sentences, with the consequence placed first so the loss risk is visible before any call is made. Every sentence earns its place because each one adds a distinct fact: the action, and the data loss. There is no filler.

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 zero-parameter, no-output mutation, the definition supplies what annotations cannot: the concrete data-loss consequence. Combined with the schema and annotations, the agent has enough information to invoke the tool safely. A minor gap remains regarding what state the portal is left in afterward and whether a download is still possible.

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 takes zero parameters, so there is no parameter meaning to explain and the baseline score of 4 applies. The description correctly avoids inventing options. The schema also declares 100% coverage of the schema in this otherwise empty object.

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 states a specific action and resource: "Browser schließen" (close the browser). This separates the tool from its siblings at a glance, since the siblings address searching catalogs (kataloge_suchen), filling in forms (portal_ausfuellen), or checking status (portal_status). It does not explicitly name those alternatives, so it stays at 4 rather than 5.

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 warning that inputs not yet downloaded will be lost implies that this tool should be used only after inputs are downloaded, but the tool never states that rule outright. It gives no explicit 'use this tool when…' or 'do not use this tool when…' criteria, and no prerequisites or alternatives. The usage guidance is therefore only implied.

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

portal_statusA
Read-only

Aktuelle Maske der offenen Portal-Sitzung, Minuten seit der letzten Aktivität und Protokoll.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by enumerating what the call reports (current screen, inactivity minutes, log) and implying dependency on an already-open portal session — important since there is no output schema. It stops short of describing error behavior when no session exists or how large the log can be.

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?

A single front-loaded sentence with no filler; the three returned data points are listed compactly. The telegraphic style ('Maske', 'Protokoll') is slightly ambiguous but costs nothing in length.

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 parameterless, read-only status tool with no output schema, the description covers the essential surface: what state is read and roughly what comes back. What remains unstated — behavior with no open session, the meaning of 'Protokoll', and whether values are live or cached — are modest gaps for a tool of this simplicity.

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 takes zero parameters, so the baseline is 4 and there is no parameter meaning the description needs to supply. Nothing here adds to or conflicts with the empty schema.

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 names a specific resource set — the current screen of the open portal session, minutes since last activity, and the log — which lets an agent tell it apart from action-oriented siblings like portal_ausfuellen, ausfuellen_fortsetzen and portal_schliessen. It is a noun phrase rather than a verb+resource statement, so the 'read status' framing is inferred rather than stated.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no conditions for calling it, and no named alternative. The only steer is the implicit one in 'der offenen Portal-Sitzung', which hints that an open session is a prerequisite, but the agent has to derive that itself.

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. 8 tool updatesv0.1.0
    • First observedantrag_pruefen
    • First observedantrag_schema
    • First observedausfuellen_fortsetzen
    • First observededa_herunterladen
    • First observedkataloge_suchen
    • First observedportal_ausfuellen
    • First observedportal_schliessen
    • First observedportal_status

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

The tools map cleanly onto distinct workflow stages (catalog lookup, schema, validation, form fill, resume, download, status, close). The only real risk is portal_ausfuellen versus ausfuellen_fortsetzen, which share the filling purpose, but the description explicitly gates the latter on status 'gericht_bestaetigen'. kataloge_suchen and antrag_schema both return metadata but for clearly different purposes.

Naming Consistency4/5

All names are lowercase snake_case following the German object_verb convention (kataloge_suchen, antrag_pruefen, portal_ausfuellen, eda_herunterladen, portal_schliessen). Two tools are noun_noun (antrag_schema, portal_status) and one inverts the order (ausfuellen_fortsetzen), which are minor deviations that remain readable.

Tool Count5/5

Eight tools is well-scoped for a single guided workflow: lookup, schema, validate, fill, resume, fetch, inspect, close. Each has a clear place and none appears redundant boilerplate.

Completeness4/5

The lifecycle is nearly closed: schema discovery, catalog lookup, pre-validation, portal filling with an explicit human-confirmation breakpoint, resume, file download, status polling and teardown. Minor gaps: there is no explicit tool to open/start a portal session (implicitly bundled into portal_ausfuellen) and no separate way to surface detailed portal error listings beyond portal_status, though agents can work around both.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI-driven browser automation with advanced form testing, batch operations, and intelligent element extraction for MCP-compatible applications.
    14
    6 npm
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Local-first MCP server that assists users with preparing and reviewing Italian tax declarations (Dichiarazioni) inside a controlled, user-authenticated Agenzia delle Entrate browser session, with a hard approval boundary preventing any external legal or financial action without explicit local approval.
    7
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to prepare German freedom-of-information requests on FragDenStaat.de: identify the responsible authority with evidence, the applicable act and deadline, track requests, collect replies and attachments, and draft new requests locally before anything is sent.
    15
    24 PyPI
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables MCP clients to drive the German ELSTER tax portal by filling forms by Kennzahl, running checks, and reviewing exactly what would be sent, with final submission left to the user. It also supports read-only access to submissions, history, and inbox data plus draft and session management.
    32
    56 npm
    2
    MIT