Tamgara
Fill in 1,000+ legal PDF templates in many languages, get a signed PDF back. Free, no API key.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (16)
- LOWen info
- LOWen list_languages
- LOWen list_locales
- LOWen get_template
- LOWen list_providers
- LOWen get_provider
- LOWen fax_countries
- LOWen fax_ping
- LOWen fax_quote
- LOWen brief_ping
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"tamgara": {
"url": "https://api.tamgara.com/api/mcp"
}
}
}Puntos de conexión remotos
https://api.tamgara.com/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (33)
⚪info
Überblick über Tamgara: Anzahl Vorlagen, Sprachen, Rechtsräume.
Esquema de entrada
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_languages
Alle unterstützten Basissprachen mit Vorlagen-Anzahl, RTL-Flag und Rechtsräumen.
Esquema de entrada
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_locales
Alle Locales (Sprache×Land) mit lokalisierter Rechtsphrase.
Esquema de entrada
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_categories
Vorlagen-Kategorien mit Anzahl (cancellation, sale, rental, …).
Esquema de entrada
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢search_templates(query, lang, country, category, limit)
Vorlagen suchen/filtern. Freitext über Titel/Slug/Beschreibung, optional nach Sprache, Land (ISO-2, z. B. "DE", "EG") und Kategorie. Liefert Slugs zum Weiterverwenden.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Freitext, z. B. \"Kündigung\" oder \"car purchase\"."
},
"lang": {
"type": "string",
"description": "Basissprache, z. B. \"de\", \"en\", \"ar\"."
},
"country": {
"type": "string",
"description": "Ländercode ISO-2 groß, z. B. \"DE\", \"AT\", \"EG\"."
},
"category": {
"type": "string",
"description": "Kategorie aus list_categories."
},
"limit": {
"type": "integer",
"description": "Max. Treffer (1–200, Default 50)."
}
},
"required": [],
"additionalProperties": false
}🟢get_template(slug, id, lang, country, includeBlankPdf)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Global eindeutiger Slug (aus search_templates)."
},
"id": {
"type": "string",
"description": "Sprachneutrale Vorlagen-ID (mit lang kombinieren)."
},
"lang": {
"type": "string",
"description": "Basissprache, wenn per id adressiert."
},
"country": {
"type": "string",
"description": "Land ISO-2 für den passenden Rechtsraum."
},
"includeBlankPdf": {
"type": "boolean",
"description": "Blanko-PDF als base64 mitliefern."
}
},
"required": [],
"additionalProperties": false
}🟢fill_template(slug, id, lang, answers, signaturePngDataUrl, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Slug der Vorlage."
},
"id": {
"type": "string",
"description": "Alternativ: sprachneutrale id (mit lang)."
},
"lang": {
"type": "string",
"description": "Basissprache, wenn per id adressiert."
},
"answers": {
"type": "object",
"description": "Feldname → Wert (String oder Boolean).",
"additionalProperties": true
},
"signaturePngDataUrl": {
"type": "string",
"description": "Unterschrift als PNG data:-URL (optional)."
},
"country": {
"type": "string",
"description": "Land ISO-2 für den Rechtsraum-Vermerk (optional)."
},
"ai": {
"type": "boolean",
"description": "KI-Dokumenterstellung nutzen (kostenpflichtig, 0,20 € vom Guthaben; normales Ausfüllen ist kostenlos)."
},
"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."
}
},
"required": [],
"additionalProperties": false
}🟢list_providers(country, query, category, limit)
Anbieter für Kündigungen (Kündigungsadresse/Fax/Frist). Länder: de, at, ch. Optional Freitextsuche.
Esquema de entrada
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Land: \"de\" | \"at\" | \"ch\" (Default de)."
},
"query": {
"type": "string",
"description": "Freitext über Name/Aliase (min. 2 Zeichen)."
},
"category": {
"type": "string",
"description": "Anbieter-Kategorie (optional)."
},
"limit": {
"type": "integer",
"description": "Max. Treffer (Default 25)."
}
},
"required": [],
"additionalProperties": false
}🟢get_provider(country, id)
Ein Anbieter per id (Kündigungsadresse, Fax, typische Frist).
Esquema de entrada
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Land: de | at | ch."
},
"id": {
"type": "string",
"description": "Anbieter-id."
}
},
"required": [
"id"
],
"additionalProperties": false
}⚪fax_countries
Unterstützte Fax-Zielländer + Hinweise zur E.164-Nummer.
Esquema de entrada
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}⚪fax_ping
Prüft, ob Faxversand verfügbar ist und ob er bezahlt (Stripe) läuft.
Esquema de entrada
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}⚪fax_quote(pdfBase64, pages, to)
Preis für einen Faxversand. Seitenzahl aus pdfBase64 abgeleitet, wenn nicht angegeben.
Esquema de entrada
{
"type": "object",
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das zu faxende PDF (z. B. aus fill_template)."
},
"pages": {
"type": "integer",
"description": "Seitenzahl (optional; sonst aus PDF)."
},
"to": {
"type": "string",
"description": "Zielnummer E.164 (optional, für Zonenpreis)."
}
},
"required": [],
"additionalProperties": false
}🟡fax_create_checkout(to, pdfBase64, filename, pages)
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.)
Esquema de entrada
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Zielnummer in E.164, z. B. +4976339202117."
},
"pdfBase64": {
"type": "string",
"description": "Das zu faxende PDF."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
},
"pages": {
"type": "integer",
"description": "Seitenzahl (optional)."
}
},
"required": [
"to",
"pdfBase64"
],
"additionalProperties": false
}🟡fax_confirm(jobId)
Nach erfolgter Zahlung: Fax in die Warteschlange geben. Braucht die job_id aus fax_create_checkout.
Esquema de entrada
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"description": "job_id aus fax_create_checkout."
}
},
"required": [
"jobId"
],
"additionalProperties": false
}⚪fax_status(id)
Zustellstatus eines Fax (queued/sending/success/failed) per id.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Fax-id."
}
},
"required": [
"id"
],
"additionalProperties": false
}⚪brief_ping
Prüft, ob Briefversand (Post via LetterXpress) verfügbar/bezahlt ist.
Esquema de entrada
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}⚪brief_quote(pdfBase64, pages, registered, country)
Preis für einen Postbrief (Standard oder Einschreiben). Länder: DE/AT/CH.
Esquema de entrada
{
"type": "object",
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das zu versendende PDF."
},
"pages": {
"type": "integer",
"description": "Seitenzahl (optional; sonst aus PDF)."
},
"registered": {
"type": "boolean",
"description": "Einwurf-Einschreiben statt Standard."
},
"country": {
"type": "string",
"description": "Zielland: DE | AT | CH (Default DE)."
}
},
"required": [],
"additionalProperties": false
}🟡brief_create_checkout(pdfBase64, recipient, country, registered, filename, ...)
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.)
Esquema de entrada
{
"type": "object",
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das zu versendende PDF."
},
"recipient": {
"type": "string",
"description": "Anzeigename des Empfängers (für Beleg)."
},
"country": {
"type": "string",
"description": "Zielland: DE | AT | CH."
},
"registered": {
"type": "boolean",
"description": "Einwurf-Einschreiben."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
},
"pages": {
"type": "integer",
"description": "Seitenzahl (optional)."
}
},
"required": [
"pdfBase64",
"recipient"
],
"additionalProperties": false
}🟡brief_confirm(jobId)
Nach Zahlung: Brief einreichen. Braucht die job_id aus brief_create_checkout.
Esquema de entrada
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"description": "job_id aus brief_create_checkout."
}
},
"required": [
"jobId"
],
"additionalProperties": false
}⚪brief_status(id)
Status/Tracking eines Briefs per id.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Brief-id."
}
},
"required": [
"id"
],
"additionalProperties": false
}🔴brief_cancel(id)
Storniert einen Brief im 15-Minuten-Fenster von LetterXpress.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Brief-id."
}
},
"required": [
"id"
],
"additionalProperties": false
}🟡envelope_create(ownerName, docName, pdfBase64, message, expiresDays, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"ownerName": {
"type": "string",
"description": "Name des Absenders/Erstellers."
},
"docName": {
"type": "string",
"description": "Dokumentname, z. B. \"Mietvertrag.pdf\"."
},
"pdfBase64": {
"type": "string",
"description": "Das zu signierende PDF (z. B. aus fill_template)."
},
"message": {
"type": "string",
"description": "Begleitnachricht an die Empfänger (optional)."
},
"expiresDays": {
"type": "integer",
"description": "Ablauf in Tagen (0 = kein Ablauf)."
},
"isPublic": {
"type": "boolean",
"description": "Öffentlicher Signier-Link statt fester Empfänger."
},
"recipients": {
"type": "array",
"description": "Empfänger (bei isPublic leer).",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name des Unterzeichners."
},
"email": {
"type": "string",
"description": "E-Mail (optional; für Einladung)."
},
"order": {
"type": "integer",
"description": "Reihenfolge (optional)."
},
"lang": {
"type": "string",
"description": "Sprache der Einladung: de | en."
}
},
"required": [
"name"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"description": "Feld-Platzierungen.",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"signature",
"initials",
"text",
"date",
"checkbox"
]
},
"label": {
"type": "string",
"description": "Feldbeschriftung."
},
"recipient": {
"type": "integer",
"description": "Index des Empfängers (0-basiert)."
},
"pageIndex": {
"type": "integer",
"description": "Seitenindex (0-basiert)."
},
"xRatio": {
"type": "number",
"description": "X-Position 0..1 (Mitte)."
},
"yRatio": {
"type": "number",
"description": "Y-Position 0..1 von oben (Mitte)."
}
},
"required": [
"type",
"recipient",
"pageIndex",
"xRatio",
"yRatio"
],
"additionalProperties": false
}
}
},
"required": [
"ownerName",
"docName",
"pdfBase64"
],
"additionalProperties": false
}⚪envelope_status(id, ownerKey, withInputs)
Status eines Signier-Vorgangs (wer hat gesehen/unterschrieben) per id + ownerKey.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"ownerKey": {
"type": "string",
"description": "Der bei create erhaltene ownerKey."
},
"withInputs": {
"type": "boolean",
"description": "Eingaben mitliefern."
}
},
"required": [
"id",
"ownerKey"
],
"additionalProperties": false
}🟡envelope_send_invite(id, ownerKey, recipient, email)
Verschickt (erneut) die Signier-Einladung per E-Mail an einen Empfänger. Nur mit ownerKey.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"ownerKey": {
"type": "string",
"description": "ownerKey."
},
"recipient": {
"type": "integer",
"description": "Empfänger-Index (0-basiert)."
},
"email": {
"type": "string",
"description": "Ziel-E-Mail."
}
},
"required": [
"id",
"ownerKey",
"recipient",
"email"
],
"additionalProperties": false
}⚪envelope_void(id, ownerKey)
Storniert/annulliert einen Signier-Vorgang. Nur mit ownerKey.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"ownerKey": {
"type": "string",
"description": "ownerKey."
}
},
"required": [
"id",
"ownerKey"
],
"additionalProperties": false
}🟡envelope_upload_final(id, ownerKey, pdfBase64)
Lädt das fertige (z. B. lokal signierte) PDF für einen Vorgang hoch. Nur mit ownerKey.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Vorgangs-id."
},
"ownerKey": {
"type": "string",
"description": "ownerKey."
},
"pdfBase64": {
"type": "string",
"description": "Fertiges PDF."
}
},
"required": [
"id",
"ownerKey",
"pdfBase64"
],
"additionalProperties": false
}🟢inspect_pdf(pdfBase64)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das PDF als base64."
}
},
"required": [
"pdfBase64"
],
"additionalProperties": false
}🟢fill_pdf(pdfBase64, answers, signaturePngDataUrl, lang, manualPlacement, ...)
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/…).
Esquema de entrada
{
"type": "object",
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das auszufüllende PDF (base64)."
},
"answers": {
"type": "object",
"description": "Feldname → Wert (String/Boolean).",
"additionalProperties": true
},
"signaturePngDataUrl": {
"type": "string",
"description": "Unterschrift als PNG data:-URL (optional)."
},
"lang": {
"type": "string",
"description": "Sprachhinweis für die Schrift (z. B. ar, zh, hi) — optional."
},
"manualPlacement": {
"type": "object",
"properties": {
"pageIndex": {
"type": "integer",
"description": "Seitenindex (0-basiert)."
},
"xRatio": {
"type": "number",
"description": "X 0..1."
},
"yRatio": {
"type": "number",
"description": "Y 0..1 von oben."
}
},
"required": [],
"additionalProperties": false
},
"extraText": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Zusatztext (z. B. Ort, Datum)."
},
"placement": {
"type": "object",
"properties": {
"pageIndex": {
"type": "integer",
"description": "Seitenindex."
},
"xRatio": {
"type": "number",
"description": "X 0..1."
},
"yRatio": {
"type": "number",
"description": "Y 0..1 von oben."
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
}
},
"required": [
"pdfBase64"
],
"additionalProperties": false
}⚪pdf_from_images(images, filename)
Aus einem oder mehreren Bildern (base64 PNG/JPEG) ein PDF bauen — ein Bild pro Seite (Foto/Scan → PDF).
Esquema de entrada
{
"type": "object",
"properties": {
"images": {
"type": "array",
"items": {
"type": "string"
},
"description": "base64-Bilder (mit oder ohne data:-Präfix)."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
}
},
"required": [
"images"
],
"additionalProperties": false
}🟡add_cover_page(pdfBase64, recipient, senderLine, filename)
Stellt einem PDF ein DIN-5008-Adressblatt voran (für den Postversand). recipient = {name,street,zip,city,country}.
Esquema de entrada
{
"type": "object",
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das PDF (base64)."
},
"recipient": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Empfängername."
},
"street": {
"type": "string",
"description": "Straße + Nr."
},
"zip": {
"type": "string",
"description": "PLZ."
},
"city": {
"type": "string",
"description": "Ort."
},
"country": {
"type": "string",
"description": "ISO-2, z. B. DE/AT/CH."
}
},
"required": [
"name",
"street",
"zip",
"city"
],
"additionalProperties": false
},
"senderLine": {
"type": "string",
"description": "Einzeilige Rücksendeangabe über dem Adressblock (optional)."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
}
},
"required": [
"pdfBase64",
"recipient"
],
"additionalProperties": false
}⚪apply_scan_answers(pdfBase64, fields, values, lang, filename)
Befüllt erkannte Felder eines gescannten (nicht-AcroForm-)PDFs: Text auf Schreiblinien, X in Checkboxen — per Ratio-Positionen (z. B. aus einer Feld-Erkennung).
Esquema de entrada
{
"type": "object",
"properties": {
"pdfBase64": {
"type": "string",
"description": "Das gescannte PDF (base64)."
},
"fields": {
"type": "array",
"description": "Erkannte Felder.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Feld-id (Schlüssel in values)."
},
"type": {
"type": "string",
"enum": [
"line",
"checkbox",
"signature"
]
},
"pageIndex": {
"type": "integer",
"description": "Seitenindex (0-basiert)."
},
"xStartRatio": {
"type": "number",
"description": "X-Start 0..1."
},
"xEndRatio": {
"type": "number",
"description": "X-Ende 0..1."
},
"yRatio": {
"type": "number",
"description": "Y 0..1 von oben (Basislinie/Mitte)."
}
},
"required": [
"id",
"type",
"pageIndex",
"xStartRatio",
"xEndRatio",
"yRatio"
],
"additionalProperties": false
}
},
"values": {
"type": "object",
"description": "Feld-id → Wert (Text; \"true\" für Checkbox).",
"additionalProperties": true
},
"lang": {
"type": "string",
"description": "Sprachhinweis für die Schrift (optional)."
},
"filename": {
"type": "string",
"description": "Dateiname (optional)."
}
},
"required": [
"pdfBase64",
"fields",
"values"
],
"additionalProperties": false
}⚪account_balance(account_id)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Bestehendes Konto (optional)."
}
},
"required": [],
"additionalProperties": false
}⚪account_topup(account_id, amount_cents)
Guthaben aufladen. Hinweis: Die Zahlung wird gerade eingerichtet — der Aufladewunsch wird vermerkt, aber noch nicht real belastet (die kostenlosen Funktionen bleiben ohnehin frei).
Esquema de entrada
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Konto (optional; sonst neu)."
},
"amount_cents": {
"type": "integer",
"description": "Wunschbetrag in Cent (optional)."
}
},
"required": [],
"additionalProperties": false
}Comunidad
Evidencia