Fill in 1,000+ legal PDF templates in many languages, get a signed PDF back. Free, no API key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Guthaben-Konto abfragen (Kostendeckel für kostenpflichtige KI-Calls). Das Konto mit 1 € Startgutschein wird beim ersten kostenpflichtigen Call ausgestellt und dort zurückgegeben — merken und künftig mitschicken. Kostenlose Funktionen brauchen kein Konto.
Bestehendes Konto (optional).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Guthaben-Konto abfragen (Kostendeckel für kostenpflichtige KI-Calls). Das Konto mit 1 € Startgutschein wird beim ersten kostenpflichtigen Call ausgestellt und dort zurückgegeben — merken und künftig mitschicken. Kostenlose Funktionen brauchen kein Konto.
| Argument | Type | Description |
|---|---|---|
| account_id | string | Bestehendes Konto (optional). |
{
"type": "object",
"required": [],
"properties": {
"account_id": {
"type": "string",
"description": "Bestehendes Konto (optional)."
}
},
"additionalProperties": false
}Guthaben aufladen. Hinweis: Die Zahlung wird gerade eingerichtet — der Aufladewunsch wird vermerkt, aber noch nicht real belastet (die kostenlosen Funktionen bleiben ohnehin frei).
| Argument | Type | Description |
|---|---|---|
| account_id | string | Konto (optional; sonst neu). |
| amount_cents | integer | Wunschbetrag in Cent (optional). |
{
"type": "object",
"required": [],
"properties": {
"account_id": {
"type": "string",
"description": "Konto (optional; sonst neu)."
},
"amount_cents": {
"type": "integer",
"description": "Wunschbetrag in Cent (optional)."
}
},
"additionalProperties": false
}Stellt einem PDF ein DIN-5008-Adressblatt voran (für den Postversand). recipient = {name,street,zip,city,country}.
| Argument | Type | Description |
|---|---|---|
| filename | string | Dateiname (optional). |
| pdfBase64* | string | Das PDF (base64). |
| recipient* | object | |
| senderLine | string | Einzeilige Rücksendeangabe über dem Adressblock (optional). |
{
"type": "object",
"required": [
"pdfBase64",
"recipient"
],
"properties": {
"filename": {
"type": "string",
"description": "Dateiname (optional)."
},
"pdfBase64": {
"type": "string",
"description": "Das PDF (base64)."
},
"recipient": {
"type": "object",
"required": [
"name",
"street",
"zip",
"city"
],
"properties": {
"zip": {
"type": "string",
"description": "PLZ."
},
"city": {
"type": "string",
"description": "Ort."
},
"name": {
"type": "string",
"description": "Empfängername."
},
"street": {
"type": "string",
"description": "Straße + Nr."
},
"country": {
"type": "string",
"description": "ISO-2, z. B. DE/AT/CH."
}
},
"additionalProperties": false
},
"senderLine": {
"type": "string",
"description": "Einzeilige Rücksendeangabe über dem Adressblock (optional)."
}
},
"additionalProperties": false
}Befüllt erkannte Felder eines gescannten (nicht-AcroForm-)PDFs: Text auf Schreiblinien, X in Checkboxen — per Ratio-Positionen (z. B. aus einer Feld-Erkennung).
| Argument | Type | Description |
|---|---|---|
| lang | string | Sprachhinweis für die Schrift (optional). |
| fields* | array | Erkannte Felder. |
| values* | object | Feld-id → Wert (Text; "true" für Checkbox). |
| filename | string | Dateiname (optional). |
| pdfBase64* | string | Das gescannte PDF (base64). |
{
"type": "object",
"required": [
"pdfBase64",
"fields",
"values"
],
"properties": {
"lang": {
"type": "string",
"description": "Sprachhinweis für die Schrift (optional)."
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"type",
"pageIndex",
"xStartRatio",
"xEndRatio",
"yRatio"
],
"properties": {
"id": {
"type": "string",
"description": "Feld-id (Schlüssel in values)."
},
"type": {
"enum": [
"line",
"checkbox",
"signature"
],
"type": "string"
},
"yRatio": {
"type": "number",
"description": "Y 0..1 von oben (Basislinie/Mitte)."
},
"pageIndex": {
"type": "integer",
"description": "Seitenindex (0-basiert)."
},
"xEndRatio": {
"type": "number",
"description": "X-Ende 0..1."
},
"xStartRatio": {
"type": "number",
"description": "X-Start 0..1."
}
},
"additionalProperties": false
},
"description": "Erkannte Felder."
},
"values": {
"type": "object",
"description": "Feld-id → Wert (Text; \"true\" für Checkbox).",
"additionalProperties": true
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
},
"pdfBase64": {
"type": "string",
"description": "Das gescannte PDF (base64)."
}
},
"additionalProperties": false
}Storniert einen Brief im 15-Minuten-Fenster von LetterXpress.
| Argument | Type | Description |
|---|---|---|
| id* | string | Brief-id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Brief-id."
}
},
"additionalProperties": false
}Nach Zahlung: Brief einreichen. Braucht die job_id aus brief_create_checkout.
| Argument | Type | Description |
|---|---|---|
| jobId* | string | job_id aus brief_create_checkout. |
{
"type": "object",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"description": "job_id aus brief_create_checkout."
}
},
"additionalProperties": false
}Startet den bezahlten Briefversand: liefert eine Stripe-Checkout-URL. Der MENSCH bezahlt; danach brief_confirm mit der job_id. (Kein kostenloser Direktversand über die KI.)
| Argument | Type | Description |
|---|---|---|
| pages | integer | Seitenzahl (optional). |
| country | string | Zielland: DE | AT | CH. |
| filename | string | Dateiname (optional). |
| pdfBase64* | string | Das zu versendende PDF. |
| recipient* | string | Anzeigename des Empfängers (für Beleg). |
| registered | boolean | Einwurf-Einschreiben. |
{
"type": "object",
"required": [
"pdfBase64",
"recipient"
],
"properties": {
"pages": {
"type": "integer",
"description": "Seitenzahl (optional)."
},
"country": {
"type": "string",
"description": "Zielland: DE | AT | CH."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
},
"pdfBase64": {
"type": "string",
"description": "Das zu versendende PDF."
},
"recipient": {
"type": "string",
"description": "Anzeigename des Empfängers (für Beleg)."
},
"registered": {
"type": "boolean",
"description": "Einwurf-Einschreiben."
}
},
"additionalProperties": false
}Prüft, ob Briefversand (Post via LetterXpress) verfügbar/bezahlt ist.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Preis für einen Postbrief (Standard oder Einschreiben). Länder: DE/AT/CH.
| Argument | Type | Description |
|---|---|---|
| pages | integer | Seitenzahl (optional; sonst aus PDF). |
| country | string | Zielland: DE | AT | CH (Default DE). |
| pdfBase64 | string | Das zu versendende PDF. |
| registered | boolean | Einwurf-Einschreiben statt Standard. |
{
"type": "object",
"required": [],
"properties": {
"pages": {
"type": "integer",
"description": "Seitenzahl (optional; sonst aus PDF)."
},
"country": {
"type": "string",
"description": "Zielland: DE | AT | CH (Default DE)."
},
"pdfBase64": {
"type": "string",
"description": "Das zu versendende PDF."
},
"registered": {
"type": "boolean",
"description": "Einwurf-Einschreiben statt Standard."
}
},
"additionalProperties": false
}Status/Tracking eines Briefs per id.
| Argument | Type | Description |
|---|---|---|
| id* | string | Brief-id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Brief-id."
}
},
"additionalProperties": false
}Sendet ein PDF zur mehrparteiigen elektronischen Signatur (DocuSign-Stil). Liefert die Vorgangs-id, einen ownerKey (geheim halten!) und pro Empfänger einen Signier-Link. fields platzieren Signatur-/Text-/Datum-/Checkbox-Felder per Ratio (0..1, y von oben). Emails an Empfänger nur über den zurückgegebenen ownerKey.
| Argument | Type | Description |
|---|---|---|
| fields | array | Feld-Platzierungen. |
| docName* | string | Dokumentname, z. B. "Mietvertrag.pdf". |
| message | string | Begleitnachricht an die Empfänger (optional). |
| isPublic | boolean | Öffentlicher Signier-Link statt fester Empfänger. |
| ownerName* | string | Name des Absenders/Erstellers. |
| pdfBase64* | string | Das zu signierende PDF (z. B. aus fill_template). |
| recipients | array | Empfänger (bei isPublic leer). |
| expiresDays | integer | Ablauf in Tagen (0 = kein Ablauf). |
Verschickt (erneut) die Signier-Einladung per E-Mail an einen Empfänger. Nur mit ownerKey.
| Argument | Type | Description |
|---|---|---|
| id* | string | Vorgangs-id. |
| email* | string | Ziel-E-Mail. |
| ownerKey* | string | ownerKey. |
| recipient* | integer | Empfänger-Index (0-basiert). |
{
"type": "object",
"required": [
"id",
"ownerKey",
"recipient",
"email"
],
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"email": {
"type": "string",
"description": "Ziel-E-Mail."
},
"ownerKey": {
"type": "string",
"description": "ownerKey."
},
"recipient": {
"type": "integer",
"description": "Empfänger-Index (0-basiert)."
}
},
"additionalProperties": false
}Status eines Signier-Vorgangs (wer hat gesehen/unterschrieben) per id + ownerKey.
| Argument | Type | Description |
|---|---|---|
| id* | string | Vorgangs-id. |
| ownerKey* | string | Der bei create erhaltene ownerKey. |
| withInputs | boolean | Eingaben mitliefern. |
{
"type": "object",
"required": [
"id",
"ownerKey"
],
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"ownerKey": {
"type": "string",
"description": "Der bei create erhaltene ownerKey."
},
"withInputs": {
"type": "boolean",
"description": "Eingaben mitliefern."
}
},
"additionalProperties": false
}Lädt das fertige (z. B. lokal signierte) PDF für einen Vorgang hoch. Nur mit ownerKey.
| Argument | Type | Description |
|---|---|---|
| id* | string | Vorgangs-id. |
| ownerKey* | string | ownerKey. |
| pdfBase64* | string | Fertiges PDF. |
{
"type": "object",
"required": [
"id",
"ownerKey",
"pdfBase64"
],
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"ownerKey": {
"type": "string",
"description": "ownerKey."
},
"pdfBase64": {
"type": "string",
"description": "Fertiges PDF."
}
},
"additionalProperties": false
}Storniert/annulliert einen Signier-Vorgang. Nur mit ownerKey.
| Argument | Type | Description |
|---|---|---|
| id* | string | Vorgangs-id. |
| ownerKey* | string | ownerKey. |
{
"type": "object",
"required": [
"id",
"ownerKey"
],
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"ownerKey": {
"type": "string",
"description": "ownerKey."
}
},
"additionalProperties": false
}Nach erfolgter Zahlung: Fax in die Warteschlange geben. Braucht die job_id aus fax_create_checkout.
| Argument | Type | Description |
|---|---|---|
| jobId* | string | job_id aus fax_create_checkout. |
{
"type": "object",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"description": "job_id aus fax_create_checkout."
}
},
"additionalProperties": false
}Unterstützte Fax-Zielländer + Hinweise zur E.164-Nummer.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Startet den bezahlten Faxversand: liefert eine Stripe-Checkout-URL. Der MENSCH bezahlt über diese URL; danach fax_confirm mit der job_id. (Kein kostenloser Direktversand über die KI.)
| Argument | Type | Description |
|---|---|---|
| to* | string | Zielnummer in E.164, z. B. +4976339202117. |
| pages | integer | Seitenzahl (optional). |
| filename | string | Dateiname (optional). |
| pdfBase64* | string | Das zu faxende PDF. |
{
"type": "object",
"required": [
"to",
"pdfBase64"
],
"properties": {
"to": {
"type": "string",
"description": "Zielnummer in E.164, z. B. +4976339202117."
},
"pages": {
"type": "integer",
"description": "Seitenzahl (optional)."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
},
"pdfBase64": {
"type": "string",
"description": "Das zu faxende PDF."
}
},
"additionalProperties": false
}Prüft, ob Faxversand verfügbar ist und ob er bezahlt (Stripe) läuft.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Preis für einen Faxversand. Seitenzahl aus pdfBase64 abgeleitet, wenn nicht angegeben.
| Argument | Type | Description |
|---|---|---|
| to | string | Zielnummer E.164 (optional, für Zonenpreis). |
| pages | integer | Seitenzahl (optional; sonst aus PDF). |
| pdfBase64 | string | Das zu faxende PDF (z. B. aus fill_template). |
{
"type": "object",
"required": [],
"properties": {
"to": {
"type": "string",
"description": "Zielnummer E.164 (optional, für Zonenpreis)."
},
"pages": {
"type": "integer",
"description": "Seitenzahl (optional; sonst aus PDF)."
},
"pdfBase64": {
"type": "string",
"description": "Das zu faxende PDF (z. B. aus fill_template)."
}
},
"additionalProperties": false
}Zustellstatus eines Fax (queued/sending/success/failed) per id.
| Argument | Type | Description |
|---|---|---|
| id* | string | Fax-id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Fax-id."
}
},
"additionalProperties": false
}Ein BELIEBIGES (nicht-Katalog-)PDF ausfüllen und optional signieren → fertiges PDF (base64). answers = Feldname→Wert (aus inspect_pdf). Unterschrift wird in erkannte Signaturfelder gesetzt oder per manualPlacement platziert. lang (optional) wählt die Schrift für nicht-lateinische Eingaben (ar/zh/hi/…).
| Argument | Type | Description |
|---|---|---|
| lang | string | Sprachhinweis für die Schrift (z. B. ar, zh, hi) — optional. |
| answers | object | Feldname → Wert (String/Boolean). |
| filename | string | Dateiname (optional). |
| extraText | object | |
| pdfBase64* | string | Das auszufüllende PDF (base64). |
| manualPlacement | object | |
| signaturePngDataUrl | string | Unterschrift als PNG data:-URL (optional). |
{
"type": "object",
"required": [
"pdfBase64"
],
"properties": {
"lang": {
"type": "string",
"description": "Sprachhinweis für die Schrift (z. B. ar, zh, hi) — optional."
},
"answers": {
"type": "object",
"description": "Feldname → Wert (String/Boolean).",
"additionalProperties": true
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
},
"extraText": {
"type": "object",
"required": [],
"properties": {
"text": {
"type": "string",
"description": "Zusatztext (z. B. Ort, Datum)."
},
"placement": {
"type": "object",
"required": [],
"properties": {
"xRatio": {
"type": "number",
"description": "X 0..1."
},
"yRatio": {
"type": "number",
"description": "Y 0..1 von oben."
},
"pageIndex": {
"type": "integer",
"description": "Seitenindex."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"pdfBase64": {
"type": "string",
"description": "Das auszufüllende PDF (base64)."
},
"manualPlacement": {
"type": "object",
"required": [],
"properties": {
"xRatio": {
"type": "number",
"description": "X 0..1."
},
"yRatio": {
"type": "number",
"description": "Y 0..1 von oben."
},
"pageIndex": {
"type": "integer",
"description": "Seitenindex (0-basiert)."
}
},
"additionalProperties": false
},
"signaturePngDataUrl": {
"type": "string",
"description": "Unterschrift als PNG data:-URL (optional)."
}
},
"additionalProperties": false
}Vorlage ausfüllen (und optional signieren) → fertiges PDF als base64. answers ist ein Objekt Feldname→Wert (Text/Datum "TT.MM.JJJJ" als String, Checkbox true/false, Radio/Dropdown = Option). Feldnamen vorher mit get_template abfragen.
| Argument | Type | Description |
|---|---|---|
| ai | boolean | KI-Dokumenterstellung nutzen (kostenpflichtig, 0,20 € vom Guthaben; normales Ausfüllen ist kostenlos). |
| id | string | Alternativ: sprachneutrale id (mit lang). |
| lang | string | Basissprache, wenn per id adressiert. |
| slug | string | Slug der Vorlage. |
| answers | object | Feldname → Wert (String oder Boolean). |
| country | string | Land ISO-2 für den Rechtsraum-Vermerk (optional). |
| account_id | string | Guthaben-Konto (nur für ai:true). Fehlt es, wird eins mit 1 € Startguthaben ausgestellt und in der Antwort zurückgegeben. |
| signaturePngDataUrl | string | Unterschrift als PNG data:-URL (optional). |
{
"type": "object",
"required": [],
"properties": {
"ai": {
"type": "boolean",
"description": "KI-Dokumenterstellung nutzen (kostenpflichtig, 0,20 € vom Guthaben; normales Ausfüllen ist kostenlos)."
},
"id": {
"type": "string",
"description": "Alternativ: sprachneutrale id (mit lang)."
},
"lang": {
"type": "string",
"description": "Basissprache, wenn per id adressiert."
},
"slug": {
"type": "string",
"description": "Slug der Vorlage."
},
"answers": {
"type": "object",
"description": "Feldname → Wert (String oder Boolean).",
"additionalProperties": true
},
"country": {
"type": "string",
"description": "Land ISO-2 für den Rechtsraum-Vermerk (optional)."
},
"account_id": {
"type": "string",
"description": "Guthaben-Konto (nur für ai:true). Fehlt es, wird eins mit 1 € Startguthaben ausgestellt und in der Antwort zurückgegeben."
},
"signaturePngDataUrl": {
"type": "string",
"description": "Unterschrift als PNG data:-URL (optional)."
}
},
"additionalProperties": false
}Ein Anbieter per id (Kündigungsadresse, Fax, typische Frist).
| Argument | Type | Description |
|---|---|---|
| id* | string | Anbieter-id. |
| country | string | Land: de | at | ch. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Anbieter-id."
},
"country": {
"type": "string",
"description": "Land: de | at | ch."
}
},
"additionalProperties": false
}Details + Feld-Schema einer Vorlage: welche Felder (Name, Typ, Label, Optionen) auszufüllen sind, plus Rechtsraum. Adressierbar per slug ODER per id+lang. Feldnamen sind sprachübergreifend gleich.
| Argument | Type | Description |
|---|---|---|
| id | string | Sprachneutrale Vorlagen-ID (mit lang kombinieren). |
| lang | string | Basissprache, wenn per id adressiert. |
| slug | string | Global eindeutiger Slug (aus search_templates). |
| country | string | Land ISO-2 für den passenden Rechtsraum. |
| includeBlankPdf | boolean | Blanko-PDF als base64 mitliefern. |
{
"type": "object",
"required": [],
"properties": {
"id": {
"type": "string",
"description": "Sprachneutrale Vorlagen-ID (mit lang kombinieren)."
},
"lang": {
"type": "string",
"description": "Basissprache, wenn per id adressiert."
},
"slug": {
"type": "string",
"description": "Global eindeutiger Slug (aus search_templates)."
},
"country": {
"type": "string",
"description": "Land ISO-2 für den passenden Rechtsraum."
},
"includeBlankPdf": {
"type": "boolean",
"description": "Blanko-PDF als base64 mitliefern."
}
},
"additionalProperties": false
}Überblick über Tamgara: Anzahl Vorlagen, Sprachen, Rechtsräume.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Ein BELIEBIGES PDF (base64) analysieren: Seitenzahl/-größen, ausfüllbare Formularfelder (Name, Typ, Label, Optionen), Signaturfelder und Unterschrifts-Positionen. Grundlage zum Ausfüllen fremder PDFs.
| Argument | Type | Description |
|---|---|---|
| pdfBase64* | string | Das PDF als base64. |
{
"type": "object",
"required": [
"pdfBase64"
],
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das PDF als base64."
}
},
"additionalProperties": false
}Vorlagen-Kategorien mit Anzahl (cancellation, sale, rental, …).
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Alle unterstützten Basissprachen mit Vorlagen-Anzahl, RTL-Flag und Rechtsräumen.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Alle Locales (Sprache×Land) mit lokalisierter Rechtsphrase.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Anbieter für Kündigungen (Kündigungsadresse/Fax/Frist). Länder: de, at, ch. Optional Freitextsuche.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max. Treffer (Default 25). |
| query | string | Freitext über Name/Aliase (min. 2 Zeichen). |
| country | string | Land: "de" | "at" | "ch" (Default de). |
| category | string | Anbieter-Kategorie (optional). |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"description": "Max. Treffer (Default 25)."
},
"query": {
"type": "string",
"description": "Freitext über Name/Aliase (min. 2 Zeichen)."
},
"country": {
"type": "string",
"description": "Land: \"de\" | \"at\" | \"ch\" (Default de)."
},
"category": {
"type": "string",
"description": "Anbieter-Kategorie (optional)."
}
},
"additionalProperties": false
}Aus einem oder mehreren Bildern (base64 PNG/JPEG) ein PDF bauen — ein Bild pro Seite (Foto/Scan → PDF).
| Argument | Type | Description |
|---|---|---|
| images* | array | base64-Bilder (mit oder ohne data:-Präfix). |
| filename | string | Dateiname (optional). |
{
"type": "object",
"required": [
"images"
],
"properties": {
"images": {
"type": "array",
"items": {
"type": "string"
},
"description": "base64-Bilder (mit oder ohne data:-Präfix)."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
}
},
"additionalProperties": false
}Vorlagen suchen/filtern. Freitext über Titel/Slug/Beschreibung, optional nach Sprache, Land (ISO-2, z. B. "DE", "EG") und Kategorie. Liefert Slugs zum Weiterverwenden.
| Argument | Type | Description |
|---|---|---|
| lang | string | Basissprache, z. B. "de", "en", "ar". |
| limit | integer | Max. Treffer (1–200, Default 50). |
| query | string | Freitext, z. B. "Kündigung" oder "car purchase". |
| country | string | Ländercode ISO-2 groß, z. B. "DE", "AT", "EG". |
| category | string | Kategorie aus list_categories. |
{
"type": "object",
"required": [],
"properties": {
"lang": {
"type": "string",
"description": "Basissprache, z. B. \"de\", \"en\", \"ar\"."
},
"limit": {
"type": "integer",
"description": "Max. Treffer (1–200, Default 50)."
},
"query": {
"type": "string",
"description": "Freitext, z. B. \"Kündigung\" oder \"car purchase\"."
},
"country": {
"type": "string",
"description": "Ländercode ISO-2 groß, z. B. \"DE\", \"AT\", \"EG\"."
},
"category": {
"type": "string",
"description": "Kategorie aus list_categories."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"ownerName",
"docName",
"pdfBase64"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"recipient",
"pageIndex",
"xRatio",
"yRatio"
],
"properties": {
"type": {
"enum": [
"signature",
"initials",
"text",
"date",
"checkbox"
],
"type": "string"
},
"label": {
"type": "string",
"description": "Feldbeschriftung."
},
"xRatio": {
"type": "number",
"description": "X-Position 0..1 (Mitte)."
},
"yRatio": {
"type": "number",
"description": "Y-Position 0..1 von oben (Mitte)."
},
"pageIndex": {
"type": "integer",
"description": "Seitenindex (0-basiert)."
},
"recipient": {
"type": "integer",
"description": "Index des Empfängers (0-basiert)."
}
},
"additionalProperties": false
},
"description": "Feld-Platzierungen."
},
"docName": {
"type": "string",
"description": "Dokumentname, z. B. \"Mietvertrag.pdf\"."
},
"message": {
"type": "string",
"description": "Begleitnachricht an die Empfänger (optional)."
},
"isPublic": {
"type": "boolean",
"description": "Öffentlicher Signier-Link statt fester Empfänger."
},
"ownerName": {
"type": "string",
"description": "Name des Absenders/Erstellers."
},
"pdfBase64": {
"type": "string",
"description": "Das zu signierende PDF (z. B. aus fill_template)."
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"lang": {
"type": "string",
"description": "Sprache der Einladung: de | en."
},
"name": {
"type": "string",
"description": "Name des Unterzeichners."
},
"email": {
"type": "string",
"description": "E-Mail (optional; für Einladung)."
},
"order": {
"type": "integer",
"description": "Reihenfolge (optional)."
}
},
"additionalProperties": false
},
"description": "Empfänger (bei isPublic leer)."
},
"expiresDays": {
"type": "integer",
"description": "Ablauf in Tagen (0 = kein Ablauf)."
}
},
"additionalProperties": false
}