# Werkzeuge

Alle Werkzeuge des MCP-Servers im Überblick, mit den IDs, die sie liefern und brauchen.

## Überblick und Navigation

| Werkzeug | Zweck |
| --- | --- |
| `dashboard_summary` | Kennzahlen ohne Parameter: Kunden gesamt, ohne Einwilligung, ohne Vorgang; offene Vorgänge und davon mit Handlungsbedarf; Dokumente gesamt und zu prüfen |
| `wiki_search` | diese Wissensbasis nach Begriffen durchsuchen, liefert Pfad und Textausschnitt |
| `wiki_get` | eine Wiki-Seite als Markdown lesen; ohne `path` das Verzeichnis aller Seiten |

## Kunden

| Werkzeug | Zweck |
| --- | --- |
| `customers_list` | Kunden auflisten, neueste Änderung zuerst; `search` trifft Vor- und Nachname als Teiltreffer. Liefert `customer_id` |
| `customers_get` | Stammdaten eines Kunden samt seiner Vorgänge und Zählern für Dokumente und Befunde |
| `customers_health_get` | Gesundheitsdaten: Befunde, Cluster und Dokumente. Siehe [Gesundheitsdaten](/wiki/gesundheitsdaten) |

## Vorgänge

| Werkzeug | Zweck |
| --- | --- |
| `preinquiries_list` | Vorgänge auflisten; filterbar nach `status`, `customer_id` und `case_number`. Archivierte nur mit `status: "archived"`. Liefert `preinquiry_id` |
| `preinquiries_get` | ein Vorgang mit offenen Aufgaben, Zielversicherern und Voten |
| `tasks_list` | manuelle Aufgaben und Wiedervorlagen des Maklers; filterbar nach `sources`, `priorities`, `customer_id` und `due` (`overdue`, `today`, `week`, `none`) |

## Fragebogen

| Werkzeug | Zweck |
| --- | --- |
| `questionnaire_get` | Fragebogen lesen: ohne `section_key` die Sektionsübersicht, mit `section_key` die sichtbaren Fragen; `search`, `unanswered_only` und `question_keys` filtern sektionsübergreifend |
| `questionnaire_answers_set` | Antworten schreiben, bis zu 50 pro Aufruf |

Das einzige schreibende Werkzeug ist `questionnaire_answers_set`. Alles andere liest nur. Details in [Live-Fragebogen per MCP ausfüllen](/wiki/fragebogen/live-fragebogen).

## Posteingang

| Werkzeug | Zweck |
| --- | --- |
| `inbox_list` | eingegangene Versicherer-E-Mails, neueste zuerst, mit bestätigter Zuordnung oder automatischem Vorschlag |

## IDs

| ID | Woher |
| --- | --- |
| `customer_id` | `customers_list`, oder aus `preinquiries_list` und `preinquiries_get` |
| `preinquiry_id` | `preinquiries_list`, oder aus `customers_get` |
| `case_number` | sprechende Vorgangsnummer wie `MV-7K4H-2QX9`, als Filter in `preinquiries_list` |
| `target_id`, `vote_id` | aus `preinquiries_get` |
| `fact_id`, `cluster_id`, `document_id` | aus `customers_health_get` |

Alle IDs außer `case_number` sind UUIDs.

## Blättern

`customers_list`, `preinquiries_list` und `inbox_list` liefern `next_cursor`. Ist er nicht `null`, gibt es weitere Ergebnisse: denselben Aufruf mit `cursor: <next_cursor>` wiederholen. Standard sind 25 Ergebnisse, `limit` erhöht das.

## Fehler

| Code | Bedeutung | Was tun |
| --- | --- | --- |
| `NOT_FOUND` | Datensatz existiert nicht oder gehört nicht zum verbundenen Konto | ID prüfen, über das passende `*_list` neu suchen |
| `VALIDATION_FAILED` | Wert passt nicht zum Feldtyp oder zu den erlaubten Optionen | Wert korrigieren |
| `UNAUTHORIZED` | Verbindung nicht mehr angemeldet | OAuth-Verbindung neu aufbauen |

Ein fremder Datensatz liefert `NOT_FOUND`, nicht `UNAUTHORIZED`. Aus einem `NOT_FOUND` darfst du deshalb nicht schließen, dass der Datensatz nicht existiert, sondern nur, dass du ihn nicht sehen kannst.
