Tamgara
Fill in 1,000+ legal PDF templates in many languages, get a signed PDF back. Free, no API key.
我该使用它吗
质量与安全性
发现(16)
- LOW在 info 中
- LOW在 list_languages 中
- LOW在 list_locales 中
- LOW在 get_template 中
- LOW在 list_providers 中
- LOW在 get_provider 中
- LOW在 fax_countries 中
- LOW在 fax_ping 中
- LOW在 fax_quote 中
- LOW在 brief_ping 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"tamgara": {
"url": "https://api.tamgara.com/api/mcp"
}
}
}远程端点
https://api.tamgara.com/api/mcpstreamable-http它能做什么
工具清单
工具(33)
⚪info
Überblick über Tamgara: Anzahl Vorlagen, Sprachen, Rechtsräume.
输入模式
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_languages
Alle unterstützten Basissprachen mit Vorlagen-Anzahl, RTL-Flag und Rechtsräumen.
输入模式
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_locales
Alle Locales (Sprache×Land) mit lokalisierter Rechtsphrase.
输入模式
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_categories
Vorlagen-Kategorien mit Anzahl (cancellation, sale, rental, …).
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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).
输入模式
{
"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.
输入模式
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}⚪fax_ping
Prüft, ob Faxversand verfügbar ist und ob er bezahlt (Stripe) läuft.
输入模式
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}⚪fax_quote(pdfBase64, pages, to)
Preis für einen Faxversand. Seitenzahl aus pdfBase64 abgeleitet, wenn nicht angegeben.
输入模式
{
"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.)
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.)
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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/…).
输入模式
{
"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).
输入模式
{
"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}.
输入模式
{
"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).
输入模式
{
"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.
输入模式
{
"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).
输入模式
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Konto (optional; sonst neu)."
},
"amount_cents": {
"type": "integer",
"description": "Wunschbetrag in Cent (optional)."
}
},
"required": [],
"additionalProperties": false
}社区
证据