formkorrekt
Menü

Für KI-Agenten (MCP)

formkorrekt als Werkzeug für Claude, Cursor, VS Code und jeden anderen MCP-Client: derselbe API-Key, dieselben Preise, dasselbe Freikontingent wie die REST-API.

§ 1

Endpunkt und Key

≈ 30 s
https://formkorrekt.com/mcp

Remote-MCP über Streamable HTTP. Angemeldet wird mit dem API-Key als Authorization: Bearer sk_live_… (oder X-API-Key: sk_live_…). Noch kein Key? Konto erstellen und im Dashboard Key erstellen drücken – das Freikontingent braucht keine Zahlungsdaten.

§ 2

Client verbinden

≈ 1 min

Claude Code

claude mcp add --transport http formkorrekt https://formkorrekt.com/mcp \
  --header "Authorization: Bearer $KEY"

Claude Desktop

In claude_desktop_config.json (Einstellungen → Entwickler → Konfiguration bearbeiten), über die Brücke mcp-remote (braucht Node.js):

{
  "mcpServers": {
    "formkorrekt": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://formkorrekt.com/mcp", "--header", "Authorization:${AUTH}"],
      "env": { "AUTH": "Bearer sk_live_…" }
    }
  }
}

Cursor

~/.cursor/mcp.json (alle Projekte) oder .cursor/mcp.json (ein Projekt):

{
  "mcpServers": {
    "formkorrekt": {
      "url": "https://formkorrekt.com/mcp",
      "headers": { "Authorization": "Bearer sk_live_…" }
    }
  }
}

VS Code

.vscode/mcp.json – VS Code fragt den Key einmal ab und speichert ihn verschlüsselt:

{
  "inputs": [{ "type": "promptString", "id": "formkorrekt-key",
               "description": "formkorrekt API key", "password": true }],
  "servers": {
    "formkorrekt": {
      "type": "http",
      "url": "https://formkorrekt.com/mcp",
      "headers": { "Authorization": "Bearer ${input:formkorrekt-key}" }
    }
  }
}

Andere Clients

Jeder Client, der Streamable HTTP spricht und einen Header mitsenden kann, funktioniert. Der Server ist zustandslos (keine Session-ID, JSON-Antworten, kein SSE-Stream) und verhandelt die Protokollversionen 2024-11-05 bis 2026-07-28. Von Hand:

curl https://formkorrekt.com/mcp \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
§ 3

Tools

validate_invoiceXRechnung/ZUGFeRD prüfen, mit Regel-Codes und Korrekturhinweisen. 1 Dokument.
repair_invoiceDeterministische XML-Reparatur, nichts geraten. 3 Dokumente (1, wenn unverändert).
generate_invoiceJSON → XRechnung UBL/CII oder ZUGFeRD-PDF, erneut geprüft, direkt in der Antwort. 3 Dokumente.
get_creditGuthaben, verbleibendes Freikontingent, Preise. Kostenlos.

Rechnungen gehen als XML-Text (xml) oder Base64 (file_base64, XML oder ZUGFeRD-PDF, ≤ 10 MB) hinein. generate_invoice liefert die Datei direkt in der Antwort (XML als Text, PDF als Base64); gespeichert wird nichts. Ein Ergebnis über ca. 6 MB wird mit RESPONSE_TOO_LARGE abgelehnt und nicht berechnet. Keine Steuerberatung.

§ 4

Kosten, Grenzen, Fehler

Jeder Tool-Aufruf läuft durch denselben Code wie die REST-API: erst das monatliche Freikontingent, dann Prepaid-Guthaben; ist beides aufgebraucht, antwortet das Tool mit CREDIT_EXHAUSTED und einem Link zum Aufladen – mehr als das Guthaben wird nie abgerechnet. Jeder Tool-Aufruf zählt wie ein API-Request gegen das Rate-Limit des Keys, das Auflisten der Tools nicht. Kostenpflichtige Tools nehmen optional einen idempotency_key: eine Wiederholung mit demselben Key und Inhalt wird einmal berechnet (neu ausgeführt, nichts gespeichert außer einem Hash; bis zu 3 Wiederholungen innerhalb einer Stunde, danach IDEMPOTENCY_KEY_EXHAUSTED). Fehler kommen als MCP-Tool-Fehler mit demselben error_code wie in der API (Tabelle im Quickstart). Der Verbrauch steht im Dashboard wie jeder andere Request.

Maschinenlesbar: OpenAPI · MCP-Server-Card · llms.txt · API-Referenz