Der Spanndecken-Preisrechner von Spanndecken ROTH ist zusätzlich zur Website über zwei kostenlose Schnittstellen nutzbar: eine öffentliche REST-API (ein GET-Aufruf, keine Anmeldung) und einen MCP-Server (Model Context Protocol) mit dem Tool calculate_spanndecken_price. Beide rechnen mit derselben Preisbasis wie der Online-Rechner und liefern einen unverbindlichen Nettopreis in Euro – zzgl. gesetzlicher Umsatzsteuer, Anfahrtskosten nicht enthalten, genau wie die Anzeige des Online-Rechners („zzgl. MwSt.“). Für eine Berechnung genügt die Deckenfläche in m².
Überblick
- REST-Endpoint
GET https://spanndecken-roth.de/api/v1/public/quote- MCP-Server
https://spanndecken-roth.de/mcp/spanndecken- MCP-Tool
calculate_spanndecken_price- Kosten / Anmeldung
- kostenlos · kein Schlüssel, kein Konto, keine Cookies
- Pflichtparameter
- nur
area_m2(Deckenfläche in m²) - Format / Transport
- JSON · nur HTTPS ·
Cache-Control: no-store - Nutzungsgrenzen (derzeit)
- REST 30/min, MCP 60/min je IP
- Preisbasis
- Stand
2026-09-26(Feldpricing_version) - Preisangabe
- unverbindlicher Nettopreis, zzgl. gesetzlicher Umsatzsteuer; Anfahrtskosten nicht enthalten
Die Schnittstellen sind ein Informationsangebot für Interessenten, Entwickler und KI-Assistenten. Jedes Ergebnis ist ein unverbindlicher Nettopreis zur Budgetplanung – zzgl. gesetzlicher Umsatzsteuer, Anfahrtskosten nicht enthalten (sie werden nach Entfernung zum Montageort separat berechnet); der verbindliche Preis wird nach Aufmaß vor Ort in einem schriftlichen Angebot genannt. Es gelten die Nutzungsbedingungen für den Preisrechner und seine Schnittstellen.
So gelangen KI-Assistenten und Programme an den Rechner
Wichtig: KI-Assistenten wie ChatGPT, Claude oder andere verbinden sich nicht automatisch mit diesem Server, nur weil sie die Adresse im Web finden. Es gibt drei tatsächlich unterstützte Wege:
- MCP-Verbindung, die Sie selbst hinzufügen. Sie tragen die Server-URL
https://spanndecken-roth.de/mcp/spanndeckenin Ihrem MCP-fähigen Assistenten oder Client ein (Authentifizierung: keine). Danach kann der Assistent das Toolcalculate_spanndecken_priceaufrufen. Anleitung im Abschnitt MCP-Server. - Direkter Aufruf der REST-API. Assistenten mit Web-Zugriff, Skripte oder eine „Action“ in einem eigenen GPT rufen
GET https://spanndecken-roth.de/api/v1/public/quote?area_m2=20auf und erhalten JSON. Die OpenAPI-Spezifikation beschreibt die Schnittstelle maschinenlesbar. - Eigene Software. Entwickler binden die REST-API oder den MCP-Server in eigene Anwendungen ein, zum Beispiel in Planungs- oder Angebotstools, unter Beachtung der Nutzungsbedingungen (Quellenangabe „Spanndecken ROTH“, Kennzeichnung als unverbindlicher Richtpreis).
REST-API: Schnellstart
Ein einziger GET-Aufruf ohne Schlüssel. Beispiel mit der Fläche allein — alle übrigen Werte setzt der Server auf Standardwerte und nennt sie unter defaults_applied:
GET https://spanndecken-roth.de/api/v1/public/quote?area_m2=20
Accept: application/json
Antwort (HTTP 200, Content-Type: application/json; live beim Laden dieser Seite berechnet):
{
"status": "ok",
"provider": {
"name": "Spanndecken ROTH",
"website": "https://spanndecken-roth.de",
"calculator_url": "https://spanndecken-roth.de/de/preise"
},
"quote": {
"total": 926,
"currency": "EUR",
"formatted": "926 €",
"is_estimate": true
},
"input": {
"area_m2": 20,
"category": "A",
"category_label": "Lack / Matt / Satin (Farbtonauswahl)",
"corners": 4,
"spotlights": 0,
"lamps": 0,
"volume_discount": false
},
"defaults_applied": [
"category",
"corners",
"spotlights",
"lamps",
"volume_discount"
],
"notice": {
"de": "Unverbindlicher Richtpreis auf Basis des Online-Rechners von Spanndecken ROTH. Der verbindliche Preis wird nach Aufmaß vor Ort im Angebot genannt.",
"en": "Non-binding estimate based on the Spanndecken ROTH online calculator. The binding price is given in the written offer after on-site measurement."
},
"calculated_at": "2026-10-26T20:23:57+01:00",
"pricing_version": "2026-09-26"
}
Das Ergebnis 926 € für 20 m² ist ein unverbindlicher Nettopreis – zzgl. gesetzlicher Umsatzsteuer, Anfahrtskosten nicht enthalten. Es ist derselbe Wert, den der Online-Rechner für 20 m², Kategorie A und 4 Ecken mit dem Zusatz „zzgl. MwSt.“ anzeigt.
Beispiel mit allen Parametern — eine 35,5 m² große Fotodruck-Decke (Kategorie C) mit 6 Ecken, 8 Einbaustrahlern, 2 Leuchten und Mengenrabatt-Option. Ergebnis: 2.856 € netto (zzgl. gesetzlicher Umsatzsteuer), defaults_applied ist leer, weil alles explizit übergeben wurde:
GET https://spanndecken-roth.de/api/v1/public/quote?area_m2=35.5&category=C&corners=6&spotlights=8&lamps=2&volume_discount=true
{
"status": "ok",
"provider": {
"name": "Spanndecken ROTH",
"website": "https://spanndecken-roth.de",
"calculator_url": "https://spanndecken-roth.de/de/preise"
},
"quote": {
"total": 2856,
"currency": "EUR",
"formatted": "2.856 €",
"is_estimate": true
},
"input": {
"area_m2": 35.5,
"category": "C",
"category_label": "Fotodruck",
"corners": 6,
"spotlights": 8,
"lamps": 2,
"volume_discount": true
},
"defaults_applied": [],
"notice": {
"de": "Unverbindlicher Richtpreis auf Basis des Online-Rechners von Spanndecken ROTH. Der verbindliche Preis wird nach Aufmaß vor Ort im Angebot genannt.",
"en": "Non-binding estimate based on the Spanndecken ROTH online calculator. The binding price is given in the written offer after on-site measurement."
},
"calculated_at": "2026-10-26T20:23:57+01:00",
"pricing_version": "2026-09-26"
}
Beispiel mit curl:
curl -s "https://spanndecken-roth.de/api/v1/public/quote?area_m2=20&category=A&corners=4" -H "Accept: application/json"
Parameter
Alle Parameter werden als Query-String übergeben. Dezimalzahlen mit Punkt oder Komma (35.5 oder 35,5); volume_discount akzeptiert true/false, 1/0, yes/no oder ja/nein. Die Grenzen sind technische Sicherheitsgrenzen des Rechners, keine Angebotsgrenzen.
| Parameter | Typ | Pflicht | Zulässig | Standardwert | Bedeutung |
|---|---|---|---|---|---|
area_m2 | Zahl | ja | > 0, max. 10000 | – | Deckenfläche in Quadratmetern |
category | Text | nein | A, B, C | A | Oberflächen-Kategorie: A = Lack / Matt / Satin (Farbtonauswahl), B = Metallic / Exclusive / Galaxy, C = Fotodruck |
corners | Ganzzahl | nein | 0 – 100 | 4 | Anzahl der Raumecken; vier Ecken sind im Preis enthalten |
spotlights | Ganzzahl | nein | 0 – 500 | 0 | Anzahl Einbaustrahler |
lamps | Ganzzahl | nein | 0 – 500 | 0 | Anzahl Leuchten / Deckenauslässe |
volume_discount | Boolean | nein | true, false | false | Mengenrabatt-Option des Online-Rechners, z. B. bei mehreren Räumen |
Antwortfelder
| Feld | Inhalt |
|---|---|
status | immer "ok" bei erfolgreicher Berechnung |
provider | Anbieter: name, website, calculator_url (Online-Rechner) |
quote | total (unverbindlicher Nettopreis in ganzen Euro, zzgl. gesetzlicher Umsatzsteuer, Anfahrtskosten nicht enthalten), currency (EUR), formatted (z. B. 926 €), is_estimate (immer true) |
input | die tatsächlich verwendeten Parameter nach Validierung und Standardwerten, inkl. category_label |
defaults_applied | Liste der Parameter, die der Server mit Standardwerten gefüllt hat; leer, wenn alles explizit übergeben wurde |
notice | Hinweis zur Unverbindlichkeit auf Deutsch (de) und Englisch (en) — bitte mit dem Preis anzeigen |
calculated_at | Zeitpunkt der Berechnung (ISO 8601) |
pricing_version | Stand der Preisbasis (JJJJ-MM-TT), derzeit 2026-09-26 |
Die Antwort enthält keine internen Tarife oder Faktoren — nur Gesamtpreis, Eingaben, Anbieter und Hinweis. Einen eigenen Steuerhinweis trägt die Antwort derzeit nicht: total und formatted sind Nettowerte. Programme und KI-Assistenten sollen den Betrag deshalb immer als „unverbindlicher Nettopreis, zzgl. gesetzlicher Umsatzsteuer, Anfahrtskosten nicht enthalten“ kennzeichnen.
Standardwerte
Fehlt ein optionaler Parameter, rechnet der Server mit dem Standardwert: Kategorie A (Lack / Matt / Satin (Farbtonauswahl)), 4 Ecken, 0 Einbaustrahler, 0 Leuchten, Mengenrabatt nein. Explizit übergebene Werte gewinnen immer — auch 0 und false. Welche Standardwerte eingesetzt wurden, steht in defaults_applied; KI-Assistenten sollen diese Annahmen dem Nutzer nennen. Ein ungültiger Wert (z. B. category=D) wird nicht durch den Standardwert ersetzt, sondern mit HTTP 422 abgewiesen.
Fehler und Statuscodes
Fehler kommen als JSON mit den Feldern error (stabiler Code) und message; Validierungsfehler zusätzlich mit errors je Feld. Beispiel für ?area_m2=0&category=D (HTTP 422):
{
"error": "validation_failed",
"message": "One or more parameters are invalid.",
"errors": {
"area_m2": [
"area_m2 must be greater than 0."
],
"category": [
"category must be one of A, B, C."
]
}
}
| Status | error | Bedeutung |
|---|---|---|
| 200 | – | Berechnung erfolgreich |
| 422 | validation_failed | ungültige oder fehlende Parameter; Details in errors |
| 429 | rate_limited | Nutzungsgrenze erreicht; Header Retry-After nennt die Wartezeit in Sekunden |
| 413 | body_too_large | Request-Body größer als 16 KB (nur bei POST/MCP relevant) |
| 503 | disabled | Schnittstelle vorübergehend abgeschaltet (Wartung); Header Retry-After |
| 405 | – | MCP-Endpoint mit GET oder DELETE aufgerufen — der MCP-Server akzeptiert nur POST |
| 401 / 403 | unauthorized / https_required | nur bei der geschützten Variante POST https://spanndecken-roth.de/api/v1/quote: fehlender Schlüssel bzw. Aufruf ohne HTTPS |
MCP-Server
Der MCP-Server stellt dieselbe Berechnung als ein einziges, nur lesendes Tool bereit — gedacht für KI-Assistenten und MCP-Clients. Er kennt keine Prompts und keine Ressourcen, schreibt nichts und benötigt keine Anmeldung.
- Server-URL
https://spanndecken-roth.de/mcp/spanndecken- Transport
- Streamable HTTP, JSON-RPC 2.0 per
POST; Antworten als JSON. GET/DELETE → 405 - Protokollversionen
- 2024-11-05 – 2026-07-28 (Aushandlung über
initialize) - Authentifizierung
- keine
- Tool
calculate_spanndecken_price— Pflichtargument nurarea_m2- Tool-Annotationen
readOnlyHint: true,idempotentHint: true,destructiveHint: false,openWorldHint: false
Verbindung herstellen
- Claude (Web/Desktop): Einstellungen → Connectors → „Add custom connector“ → Server-URL eintragen, keine Authentifizierung. Claude-API: MCP-Connector mit
type: "url"und der Server-URL. - ChatGPT: in den Einstellungen unter „Apps & Connectors“ (Developer Mode) einen Connector mit der Server-URL anlegen, Authentifizierung „None“. Die Bezeichnungen können sich je nach Version unterscheiden.
- Andere MCP-Clients (IDE-Assistenten, MCP Inspector, eigene Agenten): Transport
streamable-http, URLhttps://spanndecken-roth.de/mcp/spanndecken, keine Header erforderlich außerContent-Type: application/jsonundAccept: application/json, text/event-stream.
Eine Verbindung wird immer vom Nutzer oder vom Betreiber des Clients hergestellt; eine automatische Erkennung über die Website gibt es nicht.
Beispiel: initialize und tools/call
Handshake:
POST https://spanndecken-roth.de/mcp/spanndecken
Content-Type: application/json
Accept: application/json, text/event-stream
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {
"name": "my-client",
"version": "1.0"
}
}
}
Tool-Aufruf mit der Fläche allein (Standardwerte für alles Übrige):
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "calculate_spanndecken_price",
"arguments": {
"area_m2": 20
}
}
}
Ergebnis: result.structuredContent enthält genau dieselbe Struktur wie die REST-Antwort, result.content[0].text dieselben Daten als JSON-Zeichenkette, _meta.text_summary eine englische Kurzfassung mit den angenommenen Standardwerten:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "<structuredContent als JSON-Zeichenkette>"
}
],
"structuredContent": {
"status": "ok",
"provider": {
"name": "Spanndecken ROTH",
"website": "https://spanndecken-roth.de",
"calculator_url": "https://spanndecken-roth.de/de/preise"
},
"quote": {
"total": 926,
"currency": "EUR",
"formatted": "926 €",
"is_estimate": true
},
"input": {
"area_m2": 20,
"category": "A",
"category_label": "Lack / Matt / Satin (Farbtonauswahl)",
"corners": 4,
"spotlights": 0,
"lamps": 0,
"volume_discount": false
},
"defaults_applied": [
"category",
"corners",
"spotlights",
"lamps",
"volume_discount"
],
"notice": {
"de": "Unverbindlicher Richtpreis auf Basis des Online-Rechners von Spanndecken ROTH. Der verbindliche Preis wird nach Aufmaß vor Ort im Angebot genannt.",
"en": "Non-binding estimate based on the Spanndecken ROTH online calculator. The binding price is given in the written offer after on-site measurement."
},
"calculated_at": "2026-10-26T20:23:57+01:00",
"pricing_version": "2026-09-26"
},
"isError": false,
"_meta": {
"text_summary": "<englische Kurzfassung des Ergebnisses>"
}
}
}
Vollständiger Aufruf mit allen Argumenten (Ergebnis 2.856 € netto, zzgl. gesetzlicher Umsatzsteuer):
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "calculate_spanndecken_price",
"arguments": {
"area_m2": 35.5,
"category": "C",
"corners": 6,
"spotlights": 8,
"lamps": 2,
"volume_discount": true
}
}
}
Ungültige Argumente liefern ein Ergebnis mit isError: true und einer Textmeldung je Feld (kein JSON-RPC-Fehler); die Nutzungsgrenze meldet sich mit HTTP 429 wie bei der REST-API.
OpenAPI-Spezifikation
Die REST-API ist als OpenAPI-3.1-Dokument beschrieben (Version 1.2.0): https://spanndecken-roth.de/api/v1/public/openapi.json. Es enthält den öffentlichen Endpoint, die geschützte Variante mit Schlüssel, alle Schemata und Beispielantworten und lässt sich in API-Tools oder als „Action“ in einen eigenen GPT importieren. Das Dokument ist statisch und darf bis zu 24 Stunden zwischengespeichert werden; die Berechnungsergebnisse selbst nicht (siehe unten).
Nutzungsgrenzen, Caching, Verfügbarkeit
- Rate Limits (derzeit): REST-API 30 Anfragen/Minute je IP-Adresse, MCP-Server 60 Anfragen/Minute je IP-Adresse, zusätzlich 600 Anfragen/Minute für alle Schnittstellen zusammen. Die Header
X-RateLimit-LimitundX-RateLimit-Remainingzeigen den aktuellen Stand; bei Überschreitung HTTP 429 mitRetry-After. Die Grenzen können angepasst werden — maßgeblich sind die Antwort-Header. - Request-Body: maximal 16 KB (HTTP 413).
- Caching: Ergebnisse werden mit
Cache-Control: no-storegesendet, weil die Preisbasis sich ändern kann. Eine kurzzeitige technische Zwischenspeicherung innerhalb einer Sitzung ist zulässig, wenn Quelle („Spanndecken ROTH“),calculated_atund der Unverbindlichkeits-Hinweis erhalten bleiben; veraltete Ergebnisse dürfen nicht als aktuell ausgegeben werden — im Zweifel neu berechnen. - Verfügbarkeit: kostenlos und ohne Zusage einer bestimmten Verfügbarkeit. Bei Wartung antworten die Schnittstellen mit HTTP 503 und
Retry-After. Änderungen an Parametern oder Antwortformat werden in der OpenAPI-Spezifikation und auf dieser Seite dokumentiert. - Geschützte Variante:
POST https://spanndecken-roth.de/api/v1/quotemit Zugangsschlüssel (X-Api-KeyoderAuthorization: Bearer, 60 Anfragen/Minute je IP) liefert dieselbe Antwort. Schlüssel werden nur individuell vergeben — auf Anfrage über das Kontaktformular.
Darstellung der Ergebnisse
Damit Interessenten den Richtwert richtig einordnen, sollen Programme und KI-Assistenten das Ergebnis so wiedergeben:
- als unverbindlichen Nettopreis von Spanndecken ROTH – zzgl. gesetzlicher Umsatzsteuer, Anfahrtskosten nicht enthalten – zusammen mit dem Text aus
notice; - mit den tatsächlich verwendeten Parametern aus
inputund dem Hinweis, welche Standardwerte lautdefaults_appliedangenommen wurden; - mit dem Verweis auf spanndecken-roth.de bzw. den Online-Rechner für ein verbindliches Angebot nach Aufmaß;
- ohne eigene Preisrechnungen oder Hochrechnungen — nur die Schnittstelle kennt die aktuelle Preisbasis; bei mehreren Räumen jeden Raum einzeln berechnen.
Datenschutz und Nutzungsbedingungen
Über die Schnittstellen werden keine Cookies gesetzt, keine Sitzungen und keine Konten angelegt. Jede Anfrage wird in einem technischen Nutzungsprotokoll festgehalten: Zeitpunkt, Schnittstelle und Art der Anfrage, Status, die übermittelten Rechnerparameter mit dem berechneten Preis, die Programmkennung (User-Agent, gekürzt) sowie ein pseudonymer, täglich wechselnder Kennwert anstelle der IP-Adresse. Die Einträge werden nach 90 Tagen gelöscht. Einzelheiten und Rechtsgrundlage: Datenschutzerklärung, Abschnitt „Nutzung des Preisrechners über externe Schnittstellen (API/MCP)“.
Für die Nutzung gelten die Nutzungsbedingungen für den Online-Preisrechner und seine Schnittstellen (API/MCP): Ergebnisse sind unverbindlich, es kommt kein Vertrag zustande, die Preisbasis kann sich ändern, Ergebnisse dürfen nur mit Quellenangabe „Spanndecken ROTH“ und als Richtpreis gekennzeichnet weitergegeben werden, Umgehen der Nutzungsgrenzen und automatisierte Massenabfragen sind untersagt.
Kontakt und Änderungen
Fragen zur Schnittstelle, zu Zugangsschlüsseln oder zur Einbindung: info@spanndecken-roth.de oder über das Kontaktformular. Anbieter: Spanndecken ROTH, Konstantin Roth, Oberm Rohlande 110, 58710 Menden (siehe Impressum).