# Meistron (remote · meistron.app)

Auftraege, Rechnungen, Material und Zeiten eines Handwerksbetriebs abfragen und pflegen.

- Trust score: 96/100 (high trust)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `meistron.app`: 96/100 (this document), [markdown](https://verifymcp.io/servers/app-meistron-meistron/api-mcp.md), [page](https://verifymcp.io/servers/app-meistron-meistron/api-mcp)

## Channel facts

- Endpoint: `https://meistron.app/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 83/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8367 tokens (~139/item across 60 items; 29 tools + 31 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 95% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 29 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 31 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).
  - Supports UI / widget rendering.

## Install

### How do I install the Meistron MCP server?

Meistron is a hosted endpoint at https://meistron.app/api/mcp, 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.

### Claude

```bash
claude mcp add --transport http app-meistron-meistron 'https://meistron.app/api/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "app-meistron-meistron": {
      "url": "https://meistron.app/api/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "app-meistron-meistron": {
      "type": "http",
      "url": "https://meistron.app/api/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.app-meistron-meistron]
url = "https://meistron.app/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-meistron-meistron": {
      "type": "remote",
      "url": "https://meistron.app/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-meistron-meistron --url 'https://meistron.app/api/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-meistron-meistron:
    url: "https://meistron.app/api/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "app-meistron-meistron": {
      "Transport": "http",
      "Url": "https://meistron.app/api/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add app-meistron-meistron -t streamable-http -u 'https://meistron.app/api/mcp'
```

### Other

```json
{
  "mcpServers": {
    "app-meistron-meistron": {
      "type": "http",
      "url": "https://meistron.app/api/mcp"
    }
  }
}
```

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-08 (score 96, +1)

- [security] Stability: 0.97 → pass
- [functional] New resource “Anleitung: Rechnungen und Angebote einrichten”

### 2026-09-06 (score 95, +1)

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

### 2026-09-04 (score 94, +1)

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

### 2026-09-02 (score 93, +1)

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

### 2026-08-31 (score 92, +1)

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

### 2026-08-29 (score 91, +1)

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

### 2026-08-28 (score 90, −1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “auftrag_aendern” rewrote its description, which is the text the model reads
- [security] Tool “datei_anfordern” rewrote its description, which is the text the model reads
- [security] Tool “kunde_anlegen” rewrote its description, which is the text the model reads
- [security] Tool “rechnung_versenden” rewrote its description, which is the text the model reads
- [security] Tool “rechnungen_suchen” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 110 → 141
- [functional] First check of Capabilities: pass
- [functional] New resource “Rechnungsprüfung”
- [functional] New tool “kunden_suchen”
- [functional] New tool “rechnung_versand_vorschau”
- [cosmetic] “angebot_anlegen” added an optional parameter “idempotency_key”
- [cosmetic] “angebot_anlegen” added an optional parameter “steuersatz”
- [cosmetic] “auftrag_aendern” added an optional parameter “idempotency_key”
- [cosmetic] “auftrag_anlegen” added an optional parameter “idempotency_key”
- [cosmetic] “datei_anfordern” added an optional parameter “idempotency_key”
- [cosmetic] “einstellungen_aendern” added an optional parameter “idempotency_key”
- [cosmetic] “kunde_anlegen” added an optional parameter “email”
- [cosmetic] “kunde_anlegen” added an optional parameter “idempotency_key”
- [cosmetic] “kunde_anlegen” added an optional parameter “mobil”
- [cosmetic] “kunde_anlegen” added an optional parameter “telefon”
- [cosmetic] “material_buchen” added an optional parameter “idempotency_key”
- [cosmetic] “material_zuweisen” added an optional parameter “idempotency_key”
- [cosmetic] “rechnung_anlegen” added an optional parameter “idempotency_key”
- [cosmetic] “rechnung_anlegen” added an optional parameter “steuersatz”
- [cosmetic] “rechnung_versenden” added an optional parameter “idempotency_key”
- [cosmetic] “wartungsvertrag_aendern” added an optional parameter “idempotency_key”
- [cosmetic] “wartungsvertrag_anlegen” added an optional parameter “idempotency_key”
- [cosmetic] “datei_anfordern” reworded the description of “lieferant_id”
- [cosmetic] “rechnung_versenden” reworded the description of “rechnung_id”

### 2026-08-27 (score 91, +1)

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

## MCP tools (29)

### `betrieb_ueberblick` (~69 tokens)

Überblick über den Betrieb

Nennt die aktuellen Eckdaten: wie viele Aufträge offen und wie viele terminiert sind, wie viele Rechnungen unbezahlt und davon überfällig, und die Summe der offenen Posten. Guter erster Aufruf, um zu verstehen, worum es gerade geht.

### `auftraege_suchen` (~144 tokens)

Aufträge suchen

Listet Aufträge eines Zeitraums — etwa einer Woche — mit Titel, Termin, Status, Ort und zugewiesenen Mitarbeitern. Ohne Zeitraum werden die nächsten anstehenden Termine gezeigt.

Input parameters:

- `anzahl` (number): Höchstens so viele (Vorgabe 25, Grenze 100).
- `bis` (string): Spätester Termin, JJJJ-MM-TT.
- `nur_unterminiert` (boolean): Nur Aufträge ohne Termin — die, die noch eingeplant werden müssen.
- `status` (string): Nur Aufträge in diesem Status.
- `von` (string): Frühester Termin, JJJJ-MM-TT.

### `auftrag_ansehen` (~55 tokens)

Auftrag ansehen

Zeigt einen einzelnen Auftrag ausführlich: Beschreibung, Termin, Ort, Kunde, zugewiesene Mitarbeiter und die zugehörigen Rechnungen.

Input parameters:

- `auftrag_id` (string, required): Die Kennung des Auftrags.

### `rechnungen_suchen` (~194 tokens)

Rechnungen suchen

Listet Rechnungen mit Nummer, Kunde, Betrag, Status und Fälligkeit. Mit `nur_offen` die unbezahlten, sortiert nach Alter der Überfälligkeit — das ist der übliche Einstieg für offene Posten. Interne Kennungen ausschließlich selbst für Folgewerkzeuge verwenden; einen Menschen niemals bitten, eine UUID einzugeben oder zu wiederholen.

Input parameters:

- `anzahl` (number): Höchstens so viele (Vorgabe 25, Grenze 100).
- `bis` (string): Spätestes Rechnungsdatum, JJJJ-MM-TT.
- `nur_offen` (boolean): Nur unbezahlte Rechnungen, älteste Fälligkeit zuerst.
- `nur_ueberfaellig` (boolean): Nur solche, deren Fälligkeit verstrichen ist.
- `von` (string): Frühestes Rechnungsdatum, JJJJ-MM-TT.

### `rechnung_ansehen` (~49 tokens)

Rechnung ansehen

Zeigt eine einzelne Rechnung mit Beträgen, Steuer, Zahlungsstand, Mahnstufe und dem zugehörigen Auftrag.

Input parameters:

- `rechnung_id` (string, required): Die Kennung der Rechnung.

### `rechnung_versand_vorschau` (~246 tokens)

E-Mail-Versandvorschau einer Rechnung

Prüft garantiert nur lesend den vollständigen Rechnungsentwurf vor dem E-Mail-Versand: alle Positionen und Summen, Kunde, Empfänger, Mail-Betreff und -Text, der in Meistron gewählte aktive Standard-Absender, Provider, Antwortadresse, die vollständige Anhangsliste sowie ein kurzlebig geschütztes Entwurfs-PDF. Dieses Werkzeug versendet NIEMALS etwas, vergibt KEINE Rechnungsnummer, friert KEIN PDF ein, legt KEINE Freigabe an und verändert KEINE Daten — auch dann nicht, wenn Vollautonomie aktiv ist. Für Fragen wie „zeig mir die Versandvorschau", „welcher Absender wird benutzt?" oder „prüfe vor dem Versand" immer dieses Werkzeug verwenden. Die interne Rechnungskennung vorher selbst mit `rechnungen_suchen` ermitteln; den Menschen niemals bitten, eine UUID einzugeben oder sie ihm als notwendige Eingabe anzeigen.

Input parameters:

- `rechnung_id` (string, required): Interne Kennung aus `rechnungen_suchen`. Selbst zwischen Werkzeugen weiterreichen und niemals vom Menschen eintippen lassen.

### `angebote_suchen` (~118 tokens)

Angebote suchen

Listet Angebote mit Nummer, Kunde, Betrag und Status. Zeigt auch, welche bereits in eine Rechnung umgewandelt wurden — und welche offen liegen.

Input parameters:

- `anzahl` (number): Höchstens so viele (Vorgabe 25, Grenze 100).
- `bis` (string): Spätestes Datum, JJJJ-MM-TT.
- `nur_offen` (boolean): Nur noch nicht umgewandelte Angebote.
- `von` (string): Frühestes Datum, JJJJ-MM-TT.

### `zeiten_auswerten` (~99 tokens)

Arbeitszeiten auswerten

Fasst die erfassten Arbeitszeiten eines Zeitraums zusammen — je Mitarbeiter die Summe der Stunden und die Zahl der erfassten Tage. Nennt auch Tage, an denen das Ausstempeln fehlt, denn die zählen nirgends mit.

Input parameters:

- `bis` (string, required): Letzter Tag, JJJJ-MM-TT.
- `von` (string, required): Erster Tag, JJJJ-MM-TT.

### `kunden_suchen` (~202 tokens)

Kunden suchen

Findet Kunden des Betriebs nach Name, Firma oder Ort und nennt ihre Kennung. Diese Kennung verlangen `rechnung_anlegen`, `angebot_anlegen` und `auftrag_anlegen`.

ZUERST SUCHEN, DANN ANLEGEN. Wer stattdessen `kunde_anlegen` benutzt, weil er den vorhandenen Eintrag nicht findet, erzeugt eine Dublette — zwei Karteien zum selben Kunden, mit getrennter Rechnungshistorie.

Gibt bewusst KEINE Kontaktdaten heraus: Kennung, Name, Ort und ob eine E-Mail-Adresse hinterlegt ist. Zum Versenden braucht es die Adresse nicht — den Empfänger löst der Server selbst aus dem Kundenstamm auf.

Input parameters:

- `anzahl` (number): Höchstens so viele (Vorgabe 25, Grenze 100).
- `suche` (string): Teil des Namens, der Firma oder des Ortes. Ohne Angabe die zuletzt angelegten.

### `material_suchen` (~127 tokens)

Material suchen

Durchsucht den Materialkatalog nach Bezeichnung oder Artikelnummer und nennt Preis, Einheit und Lagerbestand. Mit `nur_knapp` die Artikel, die unter ihrem Mindestbestand liegen — der übliche Einstieg vor einer Bestellung.

Input parameters:

- `anzahl` (number): Höchstens so viele (Vorgabe 25, Grenze 100).
- `nur_knapp` (boolean): Nur Artikel unter dem hinterlegten Mindestbestand.
- `nur_werkzeug` (boolean): Nur Werkzeuge statt Verbrauchsmaterial.
- `suche` (string): Teil der Bezeichnung oder Artikelnummer.

### `material_ansehen` (~53 tokens)

Material ansehen

Zeigt einen Katalogartikel mit Preis, Bestand, Lagerort und den letzten Bestandsbewegungen — also woher der aktuelle Bestand kommt.

Input parameters:

- `material_id` (string, required): Die Kennung des Artikels.

### `material_buchen` (~296 tokens)

Bestand buchen

Bucht eine Bestandsbewegung auf einem Katalogartikel: Zugang (Einkauf), Abgang (Entnahme ohne Auftrag) oder Inventur (Korrektur auf einen gezählten Ist-Bestand). Jede Buchung wird dauerhaft protokolliert und lässt sich NICHT löschen — ein Fehler wird durch eine Gegenbuchung berichtigt, nicht durch Rückgängigmachen. Für Material, das auf einen Auftrag geht, ist „material_zuweisen" richtig: Das verbindet den Verbrauch mit dem Auftrag und macht ihn abrechenbar.

Input parameters:

- `art` (string, required): zugang = Ware kommt herein · abgang = Ware geht ohne Auftrag heraus · inventur = der gezählte Ist-Bestand, NICHT die Differenz.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `material_id` (string, required): Die Kennung des Artikels.
- `menge` (number, required): Bei Zugang und Abgang die bewegte Menge (immer positiv). Bei Inventur der gezählte Bestand — die Differenz errechnet das System selbst.
- `notiz` (string): Grund der Buchung, z. B. Lieferschein-Nummer.

### `material_zuweisen` (~201 tokens)

Material einem Auftrag zuweisen

Bucht Material oder Werkzeug auf einen Auftrag. Der Bestand wird sofort abgezogen und der Verbrauch dem Auftrag zugeordnet — dadurch kann er später in eine Rechnung übernommen werden. Reicht der Bestand nicht, wird abgelehnt statt ins Minus gebucht. Legt KEINE Rechnung an.

Input parameters:

- `auftrag_id` (string, required): Die Kennung des Auftrags.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `material_id` (string, required): Die Kennung des Artikels aus dem Katalog.
- `menge` (number, required): Wie viel auf den Auftrag geht (positiv).
- `notiz` (string): Optionaler Vermerk zur Zuweisung.

### `rechnung_anlegen` (~380 tokens)

Rechnung anlegen

Legt einen Rechnungs-ENTWURF an. Ein Entwurf hat noch KEINE Rechnungsnummer und ist frei änderbar — die Nummer wird erst beim Versenden vergeben, damit der Nummernkreis lückenlos bleibt. Verschickt NICHTS an den Kunden.

Wird ein Auftrag angegeben, übernimmt der Entwurf dessen Material und erfasste Arbeitszeit als Positionen — das ist der übliche Weg. Zusätzlich oder stattdessen können eigene Positionen angegeben werden.

Input parameters:

- `auftrag_id` (string): Auftrag, dessen Material und Arbeitszeit übernommen werden sollen.
- `hinweis` (string): Text für den Kunden auf der Rechnung.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `kunde_id` (string): Die Kennung des Kunden. Ohne Angabe wird der Kunde des Auftrags übernommen.
- `ohne_material` (boolean): Auf true setzen, wenn NUR die Stunden übernommen werden sollen.
- `ohne_zeiten` (boolean): Auf true setzen, wenn NUR das Material übernommen werden soll, keine Stunden.
- `positionen` (array): Eigene Positionen. Höchstens 50.
- `steuersatz` (number): Steuersatz für den GESAMTEN Beleg in Prozent — 19, 7 oder 0. Ohne Angabe der im Betrieb hinterlegte Satz. Ein Beleg trägt genau EINEN Satz, im Kopf wie in jeder Position; gemischte Sätze lehnt Meistr…

### `angebot_anlegen` (~361 tokens)

Angebot anlegen

Legt einen ANGEBOTS-Entwurf an. Ein Angebot ist noch keine Rechnung: Es fordert kein Geld und wird nicht gebucht. Verschickt NICHTS an den Kunden.

Wird ein Auftrag angegeben, übernimmt das Angebot dessen Material und erfasste Arbeitszeit als Positionen. Zusätzlich oder stattdessen können eigene Positionen angegeben werden.

Die Umwandlung eines Angebots in eine Rechnung geschieht in Meistron und ist über diesen Zugang NICHT möglich.

Input parameters:

- `auftrag_id` (string): Auftrag, dessen Material und Arbeitszeit übernommen werden sollen.
- `hinweis` (string): Text für den Kunden auf dem Angebot.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `kunde_id` (string): Die Kennung des Kunden. Ohne Angabe wird der Kunde des Auftrags übernommen.
- `ohne_material` (boolean): Nur Stunden übernehmen, kein Material.
- `ohne_zeiten` (boolean): Nur Material übernehmen, keine Stunden.
- `positionen` (array): Eigene Positionen. Höchstens 50.
- `steuersatz` (number): Steuersatz für den GESAMTEN Beleg in Prozent — 19, 7 oder 0. Ohne Angabe der im Betrieb hinterlegte Satz. Ein Beleg trägt genau EINEN Satz, im Kopf wie in jeder Position; gemischte Sätze lehnt Meistr…

### `einstellungen_ansehen` (~78 tokens)

Einstellungen ansehen

Zeigt die Firmendaten und die Vorgaben für Rechnungen und Angebote — Zahlungsziel, Steuersatz, Stundensatz, Textbausteine. Nützlich, um zu erklären, warum eine Rechnung aussieht, wie sie aussieht.

Bankverbindung, Steuernummern und Nummernkreise werden NICHT gezeigt.

### `einstellungen_aendern` (~277 tokens)

Einstellungen ändern

Ändert eine Firmen- oder Rechnungsvorgabe. Wirkt auf ALLE künftigen Rechnungen und Angebote, nicht auf bestehende.

NICHT änderbar, auch nicht mit Freigabe: Bankverbindung, Steuernummer, USt-IdNr., Rechnungs- und Angebotsnummern samt Präfixen, Steuerberater-Anbindung. Ebenso wenig die Schalter, die die Arbeitsweise umstellen (Bestandsführung, E-Rechnung, öffentliche Buchung). Wer danach gefragt wird, verweist auf Meistron.

Vorher „einstellungen_ansehen" aufrufen, um den heutigen Wert zu kennen.

Input parameters:

- `feld` (string, required): Was geändert werden soll, z. B. default_payment_terms, default_hourly_rate, phone, closing_name. „einstellungen_ansehen" nennt die möglichen Namen.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `wert` (string|number|boolean, required): Der neue Wert. Bei Ja/Nein-Feldern true oder false.

### `lieferanten_auflisten` (~80 tokens)

Lieferanten und Preisstände

Nennt die hinterlegten Lieferanten und wann zuletzt Preise von ihnen eingelesen wurden (DATANORM). Beantwortet die Frage, ob die Einkaufspreise im Katalog noch aktuell sind.

Ein Preis-Import selbst geht NICHT über diesen Zugang — dafür braucht es eine Datei, die in Meistron hochgeladen wird.

### `rechnung_versenden` (~796 tokens)

Rechnung versenden

Nur für den tatsächlichen Versand verwenden. Für eine bloße Prüfung ohne Datenänderung immer `rechnung_versand_vorschau` aufrufen. Versendet einen Rechnungs-Entwurf per E-Mail an den Kunden. Dabei wird die Rechnungsnummer vergeben, das PDF eingefroren und der Versand protokolliert; ab dann ist die Rechnung nach GoBD unveränderlich. Die interne Rechnungskennung vorher selbst mit `rechnungen_suchen` ermitteln; den Menschen niemals bitten, eine UUID einzugeben oder zu wiederholen.

BRIEFE GEHEN ÜBER DIESEN ZUGANG NICHT. Das ist Absicht, kein Fehler: Die Anschrift eines Kunden kann über denselben Zugang angelegt worden sein — ein Brief ginge dann an eine Adresse, die nie ein Mensch geprüft hat, auf Kosten des Post-Guthabens des Betriebs. Wer einen Brief verschicken will, tut das in Meistron. Das dem Handwerker so sagen, statt es anders zu versuchen.

NORMALER MODUS — ZWEI SCHRITTE:
1\. Ohne „freigabe" aufrufen → es geht NICHTS hinaus. Zurück kommt eine Vorschau: alle Positionen und Summen, Empfänger, Mailtext, der in Meistron gewählte Standard-Absender, Antwortadresse, die vollständige Anhangsliste und ein geschütztes Entwurfs-PDF — dazu ein Freigabewort.
2\. Die Vorschau dem Menschen zeigen und ihn ausdrücklich fragen. Erst mit seinem Ja erneut aufrufen, diesmal mit „freigabe".

Das Freigabewort NIEMALS selbst erfinden und den zweiten Schritt NIEMALS ohne ausdrückliche Zustimmung tun. Ausnahme: Hat der Inhaber für genau diesen Zugang in Meistron „Vollzugriff und Vollautonomie" aktiviert, führt der Server den Versand direkt ohne Vorschau-Runde aus. Diesen Modus kann das Modell weder wählen noch einschalten. Eine E-Mail ist nicht zurückholbar und trifft einen echten Kunden.

Empfänger, Betreff und Text lassen sich hier NICHT angeben: Die Rechnung geht an die Adresse, die beim Kunden hinterlegt ist, mit den Vorlagen des Betriebs. Im normalen Modus muss diese Adresse menschlich bestätigt sein. Eine vom KI-Zugang angelegte Kundenadresse ist ausschließlich unter der für dense…

Input parameters:

- `freigabe` (string): Das Freigabewort aus der Vorschau (Form „SENDEN-1234"). Nur setzen, wenn der Mensch die Vorschau gesehen und ausdrücklich zugestimmt hat.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `rechnung_id` (string, required): Interne Kennung des Entwurfs aus `rechnungen_suchen`. Selbst zwischen Werkzeugen weiterreichen und niemals vom Menschen eintippen oder wiederholen lassen. Die Rechnung muss im Status „Entwurf" sein.
- `weg` (string): Nur E-Mail. Briefe lassen sich über diesen Zugang NICHT versenden — sie werden in Meistron ausgelöst.

### `datei_anfordern` (~488 tokens)

Datei anfordern

Fordert eine Datei vom Menschen an und gibt einen Link zurück, über den er sie in Meistron hochlädt. Für Preisdateien von Lieferanten (DATANORM), PDFs, Belege und Fotos.

Die Anforderung selbst verarbeitet noch nichts. Nach dem späteren Upload wird eine DATANORM-Datei automatisch geprüft und als Importvorschau vorbereitet; Einkaufspreise oder Artikel werden dabei NICHT angewendet. Das Anwenden startet ein Mensch danach in Meistron. Belege werden nur abgelegt, Bilder können dem genannten Auftrag als Foto zugeordnet werden.

Eine Datei lässt sich NICHT durch den Chat schicken — auch nicht als Text oder Base64. Das ist keine Einschränkung, sondern Absicht: Bei einer Preisdatei mit zehntausenden Artikeln zählt jedes Zeichen, und ein durchgereichter Text verliert oder erfindet welche.

Den Link dem Menschen zeigen. Er muss in Meistron angemeldet sein — ohne Anmeldung führt der Link nirgendwohin. Danach mit „datei_stand" nachsehen, ob sie da ist.

Input parameters:

- `gehoert_zu_auftrag` (string): Kennung des Auftrags, zu dem die Datei gehört. Der Vermerk am Auftrag wird gesetzt; eine Ansicht, die dort abgelegte Dateien anzeigt, gibt es zurzeit noch nicht — nur ein Bild (zweck=bild) erscheint…
- `hinweis` (string): Was genau gebraucht wird — steht dem Menschen auf der Upload-Seite.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `lieferant_id` (string): PFLICHT bei zweck=datanorm: von welchem Lieferanten die Preisdatei kommt. Ohne gültige Kennung wird keine Anforderung angelegt. „lieferanten_auflisten" nennt die Kennungen.
- `zweck` (string, required): datanorm = Preisdatei eines Lieferanten · dokument = PDF (Ausschreibung, Plan) · beleg = Eingangsrechnung oder Quittung · bild = Foto.

### `datei_stand` (~59 tokens)

Stand der angeforderten Dateien

Zeigt, welche Dateien angefordert wurden und welche davon angekommen sind. Nach „datei_anfordern" hiermit nachsehen, statt zu raten — und NICHT in kurzen Abständen wiederholt aufrufen: Der Mensch braucht einen Moment.

### `mitarbeiter_auflisten` (~52 tokens)

Mitarbeiter auflisten

Nennt die Personen, denen ein Auftrag zugewiesen werden kann, mit Namen und Kennung. Vor dem Anlegen eines Auftrags aufrufen, wenn nicht klar ist, wer zuständig sein soll.

### `auftrag_anlegen` (~322 tokens)

Auftrag anlegen

Legt einen neuen Auftrag an — mit Titel, optional Beschreibung, Termin, Ort und Kunde. JEDER Auftrag braucht mindestens eine zuständige Person: ohne Angabe wird der Inhaber selbst zugewiesen. Ob die Zugewiesenen eine Benachrichtigung auf ihr Gerät bekommen, hängt davon ab, ob der Betrieb die Aussenwirkung freigegeben hat — in der Vorgabe ist sie AUS. Die Antwort sagt jedes Mal, was tatsächlich hinausging. Legt KEINE Rechnung an und schreibt dem Kunden nichts.

Input parameters:

- `beginnt` (string): Termin-Beginn, JJJJ-MM-TTTHH:MM (Ortszeit).
- `beschreibung` (string): Was zu tun ist.
- `endet` (string): Termin-Ende, JJJJ-MM-TTTHH:MM. Nur zusammen mit `beginnt`.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `kunde_id` (string): Kennung eines bestehenden Kunden.
- `mitarbeiter` (array): Kennungen der zuständigen Personen (siehe mitarbeiter_auflisten). Ohne Angabe wird der Inhaber selbst zugewiesen.
- `ort` (string): Einsatzort als Text.
- `titel` (string, required): Kurzer Titel, worum es geht.

### `auftrag_aendern` (~232 tokens)

Auftrag ändern

Ändert Titel, Beschreibung, Ort oder Termin eines bestehenden Auftrags. Nur die angegebenen Felder werden angefasst. Ändert NICHT den Status. Bei einer echten Terminverschiebung können die zugewiesenen Mitarbeiter eine Push-Meldung erhalten, wenn der Betrieb die Aussenwirkung erlaubt hat; dem Kunden wird nichts geschickt.

Input parameters:

- `auftrag_id` (string, required): Die Kennung des Auftrags.
- `beginnt` (string): Neuer Termin-Beginn, JJJJ-MM-TTTHH:MM.
- `beschreibung` (string)
- `endet` (string): Neues Termin-Ende, JJJJ-MM-TTTHH:MM.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `ort` (string)
- `titel` (string)

### `kunde_anlegen` (~353 tokens)

Kunde anlegen

Legt einen neuen Kunden an. Name genügt; Firma und Anschrift sind optional. Gibt es genau einen gleichnamigen Kunden, werden nur die zusätzlich angegebenen Firma-, Anschrift- oder Kontaktdaten an diesem Kunden ergänzt bzw. aktualisiert; es wird KEIN zweiter angelegt. Bei mehreren gleichnamigen Kunden erfolgt KEINE Änderung.

E-Mail, Festnetz und Mobilnummer werden NUR gespeichert, wenn der Inhaber für genau diesen KI-Zugang „Vollzugriff und Vollautonomie" bestätigt hat. Im normalen Modus bleiben diese Kontaktdaten gesperrt. Bei zusätzlich aktivem autonomen E-Mail-Kanal darf die so gespeicherte Adresse für den strikt gebundenen Rechnungsversand verwendet werden.

Input parameters:

- `email` (string): E-Mail-Adresse des Kunden. Nur mit serverseitig aktiver Vollautonomie für diesen Zugang.
- `firma` (string): Firmenname, falls abweichend.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `mobil` (string): Mobilnummer. Nur mit serverseitig aktiver Vollautonomie für diesen Zugang.
- `name` (string, required): Name der Person oder des Betriebs.
- `ort` (string)
- `plz` (string)
- `strasse` (string)
- `telefon` (string): Festnetznummer. Nur mit serverseitig aktiver Vollautonomie für diesen Zugang.

### `wartungsvertraege_suchen` (~164 tokens)

Wartungsverträge suchen

Listet die Wartungsverträge des Betriebs mit Kunde, Anlage, Rhythmus und nächster Fälligkeit. Ohne Angaben kommen die zuerst fälligen. Gut für „welche Wartungen stehen im nächsten Monat an?".

Input parameters:

- `anzahl` (number): Höchstens so viele (Vorgabe 25, Grenze 100).
- `faellig_bis` (string): Nur Verträge, die bis zu diesem Tag fällig werden, JJJJ-MM-TT.
- `kunde_id` (string): Nur Verträge dieses Kunden.
- `nur_ueberfaellig` (boolean): Nur Verträge, deren Fälligkeit schon vorbei ist.
- `status` (string): Nur Verträge in diesem Zustand. Ohne Angabe nur aktive.

### `wartungsvertrag_ansehen` (~68 tokens)

Wartungsvertrag ansehen

Zeigt einen Wartungsvertrag ausführlich: Rhythmus, nächste Fälligkeit, Objektanschrift, Anlage, Zuständige, Erinnerungsstufen — und die bereits daraus entstandenen Aufträge.

Input parameters:

- `vertrag_id` (string, required): Die Kennung des Wartungsvertrags.

### `wartungsvertrag_anlegen` (~500 tokens)

Wartungsvertrag anlegen

Legt einen wiederkehrenden Wartungsvertrag an — Kunde, Rhythmus und erste Fälligkeit sind Pflicht. Die Vertragsnummer vergibt Meistron. Die Fälligkeit muss in der Zukunft liegen. Legt KEINEN Auftrag an: Der entsteht erst kurz vor der Fälligkeit von selbst. Verschickt NICHTS — der Kunde erfährt davon nichts, die Erinnerungen gehen an den Betrieb.

Input parameters:

- `anlage` (string): Was gewartet wird, im Klartext — „Gastherme Vaillant, Baujahr 2019, Keller".
- `beschreibung` (string): Was bei der Wartung zu tun ist.
- `dauer_minuten` (number): Wie lange die Wartung üblicherweise braucht (15 bis 1440, Vorgabe 90).
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `kunde_id` (string, required): Kennung des Kunden — über `auftraege_suchen` oder `kunde_anlegen` zu bekommen.
- `mitarbeiter` (array): Wer die Wartung macht und die Erinnerungen bekommt — Kennungen aus `mitarbeiter_auflisten`.
- `naechste_faelligkeit` (string, required): Erster Termin, JJJJ-MM-TT. Muss in der Zukunft liegen.
- `notiz` (string): Interne Notiz zum Vertrag.
- `objekt_ort` (string): Ort der Anlage.
- `objekt_plz` (string): Postleitzahl der Anlage.
- `objekt_strasse` (string): Anschrift der Anlage, falls sie nicht beim Kunden steht.
- `rhythmus` (string, required): Wie oft. Bei `custom_days` zusätzlich `rhythmus_tage` angeben.
- `rhythmus_tage` (number): Nur bei `custom_days`: Abstand in Tagen (1 bis 3650).
- `titel` (string, required): Worum es geht, etwa „Jährliche Heizungswartung".
- `vorlauf_tage` (number): Wie viele Tage vor der Fälligkeit der Auftrag entsteht (0 bis 60, Vorgabe 7). 0 schaltet die Automatik ab.

### `wartungsvertrag_aendern` (~518 tokens)

Wartungsvertrag ändern

Ändert einen Wartungsvertrag: Rhythmus, nächste Fälligkeit, Anlage, Zuständige, Erinnerungsstufen — oder setzt ihn auf Pause bzw. beendet ihn. Änderungen ziehen in noch nicht begonnene Wartungsaufträge nach; laufende und abgeschlossene bleiben unberührt. Nur die angegebenen Felder werden geändert.

Input parameters:

- `anlage` (string): Neuer Anlagentext.
- `beschreibung` (string): Neue Beschreibung.
- `dauer_minuten` (number): Neue Dauer in Minuten (15 bis 1440).
- `erinnerung_14_tage` (boolean): Erinnerung 14 Tage vorher ein- oder ausschalten.
- `erinnerung_30_tage` (boolean): Erinnerung 30 Tage vorher ein- oder ausschalten.
- `erinnerung_7_tage` (boolean): Erinnerung 7 Tage vorher ein- oder ausschalten.
- `grund` (string): Nur bei `ended`: warum der Vertrag endet.
- `idempotency_key` (string): Im vollautonomen Betrieb erforderlich. Beim ersten Aufruf weglassen: Der Server liefert dann einen UUID-Key, ohne die Aktion auszuführen. Den Aufruf mit diesem Key wiederholen und bei Retry/Reconnect…
- `mitarbeiter` (array): Ersetzt die Zuständigen vollständig — wer hier fehlt, ist danach nicht mehr zuständig.
- `naechste_faelligkeit` (string): Neue Fälligkeit, JJJJ-MM-TT. Muss in der Zukunft liegen.
- `notiz` (string): Neue interne Notiz.
- `pause_bis` (string): Nur bei `paused`: bis zu diesem Tag ruht die Serie, JJJJ-MM-TT.
- `rhythmus` (string): Neuer Rhythmus. Wirkt auf jeden künftigen Termin.
- `rhythmus_tage` (number): Nur bei `custom_days`: Abstand in Tagen (1 bis 3650).
- `titel` (string): Neuer Titel.
- `vertrag_id` (string, required): Die Kennung des Wartungsvertrags.
- `vorlauf_tage` (number): Neuer Vorlauf in Tagen (0 bis 60).
- `zustand` (string): Pausieren (`paused`) hält die Serie an, ohne sie zu verlieren — beim Fortsetzen (`active`) wird eine versäumte Wartung nachgeholt. Beenden (`ended`) erzeugt keine neuen Aufträge mehr; bereits angeleg…

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-meistron-meistron/api-mcp#diagnostics

## Score history

- 2026-09-20: 96
- 2026-09-19: 96
- 2026-09-18: 96
- 2026-09-17: 96
- 2026-09-16: 96
- 2026-09-15: 96
- 2026-09-14: 96
- 2026-09-13: 96
- 2026-09-12: 96
- 2026-09-11: 96
- 2026-09-10: 96
- 2026-09-09: 96
- 2026-09-08: 96
- 2026-09-07: 95
- 2026-09-06: 95
- 2026-09-05: 94
- 2026-09-04: 94
- 2026-09-03: 93
- 2026-09-02: 93
- 2026-09-01: 92
- 2026-08-31: 92
- 2026-08-30: 91
- 2026-08-29: 91
- 2026-08-28: 90
- 2026-08-27: 91
- 2026-08-26: 90
- 2026-08-25: 89
- 2026-08-24: 89
- 2026-08-23: 88
- 2026-08-22: 87

## Common questions

### What is the Meistron MCP server?

Meistron is an MCP server listed in the public MCP registry as app.meistron/meistron. Auftraege, Rechnungen, Material und Zeiten eines Handwerksbetriebs abfragen und pflegen. This page covers its hosted endpoint (https://meistron.app/api/mcp).

### Is the Meistron MCP server safe to use?

Meistron scores 96 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 Meistron MCP server expose?

Meistron exposes 29 tools: betrieb_ueberblick, auftraege_suchen, auftrag_ansehen, rechnungen_suchen, rechnung_ansehen, and 24 more. Their descriptions and schemas cost roughly 6,581 tokens of context every time the server is loaded.

### Does the Meistron MCP server require authentication?

Yes. Meistron asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Meistron MCP server still maintained?

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

## Links

- Remote endpoint: https://meistron.app/api/mcp
- Website: https://meistron.app/ki-zugang
- Changelog RSS feed: https://verifymcp.io/servers/app-meistron-meistron/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-meistron-meistron/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/app-meistron-meistron/api-mcp
