Rechnung erzeugen
rvg_create_invoiceStellt eine Vergütungsrechnung aus (PDF oder ZUGFeRD) mit Download-Link. Rufe es erst, wenn der Nutzer den Entwurf aus rvg_preview_invoice ausstellen will. Kanzleidaten kommen aus den Einstellungen. Ohne den Tarif ONYST RVG im Standardlayout ohne Logo, auch ohne Kanzlei; als Word-Datei nur mit ihm. Kanzleidaten (Absender, Bankverbindung, Anschreiben, Zahlungsziel) erfragst du nur, wenn eine Absage sie als fehlend nennt: Bei Anmeldung über das eigene ONYST-Konto kommen sie aus den Einstellungen der angemeldeten Person, über einen API-Schlüssel aus den Einstellungen der Kanzlei (der Kanzlei des Schlüssels bzw. dem Profil der Person, die ihn angelegt hat); ausdrücklich angegebene Felder gewinnen. Der Link ist mehrfach abrufbar und liefert jedes Mal dieselbe Rechnung — die Antwort nennt, bis wann und wie oft. Ausgestellt und gezählt wird sie einmal, beim ersten Abruf. Gibt dein Host Dateien an den Nutzer weiter (etwa Claude Code oder claude.ai), nimm delivery: file (neben request) — dann ist sie sofort ausgestellt und hängt als Datei an. Sie entsteht wie im RVG-Rechner: mit dem Nummernkreis der Kanzlei, mit dem Tarif ONYST RVG auch mit Briefvorlage, Logo und Schrift, und sie steht danach im Rechnungsverlauf; mit format docx als Word-Datei. Hat die Kanzlei einen Nummernkreis, lass meta.rechnungsnummer leer: Die Nummer wird beim ersten Abruf des Links vergeben. Fehlt eine Pflichtangabe, wird der Aufruf abgelehnt und nennt die fehlende. Die Antwort nennt unter applied, was aus den Einstellungen kam. Zeigt dein Host Ansichten, erscheint der Link dort als Karte mit „Öffnen“ — verweise dann auf die Karte, statt den Link in deine Antwort zu schreiben; ohne Ansicht gib ihn unverändert weiter. Dieselbe Rechnung mit denselben Angaben ergibt binnen einer Stunde denselben Link, auch wenn sie schon über die Vorschau ausgestellt wurde — die Antwort sagt es dann. Mit dem eigenen ONYST-Konto oder einem API-Schlüssel mit vollem Umfang: Suche den Empfänger zuerst mit rvg_recipients_search und übergib seine id als empfaengerId — dann fragst du nicht nach der Anschrift. Die Antwort nennt unter addressBook, ob der Empfänger neu ist oder vom Adressbuch abweicht; biete danach an, ihn zu speichern bzw. zu aktualisieren (rvg_recipient_save) — nie ungefragt. Ebenso nennt firmProfile, welche Angaben aus kanzlei in den Kanzleidaten fehlen oder abweichen; biete an, sie mit rvg_firm_profile_update zu speichern — nie ungefragt.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"request": "<request>"
},
"name": "rvg_create_invoice"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Die Rechnung: Berechnung, Empfänger, Rechnungsangaben und Format. | |
| delivery | No | Wie das Dokument ankommt (eigenes Argument neben request, nicht darin): link (Vorgabe) gibt einen Download-Link für den Menschen im Chat; file stellt sofort aus und hängt die Datei zusätzlich als Ressource an — für Hosts, die Dateien an den Nutzer weitergeben (etwa Claude Code und claude.ai); sonst link, etwa in ChatGPT. Gezählt wird in beiden Fällen einmal. view setzt allein die Ansicht „Rechnungsvorschau“ beim Klick auf „Rechnung ausstellen“; du setzt es nie. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| net | Yes | ||
| vat | Yes | ||
| gross | Yes | ||
| applied | No | ||
| hinweis | Yes | ||
| amountDue | No | ||
| positions | Yes | ||
| deductions | No | ||
| addressBook | No | ||
| downloadUrl | Yes | ||
| firmProfile | No | ||
| expiresAtUtc | Yes | ||
| maxDownloads | Yes |