Калькулятор стоимости натяжных потолков Spanndecken ROTH доступен не только на сайте, но и через два бесплатных интерфейса: публичный REST-API (один GET-запрос, без регистрации) и MCP-сервер (Model Context Protocol) с инструментом calculate_spanndecken_price. Оба считают по той же ценовой основе, что и онлайн-калькулятор, и возвращают ориентировочную цену без НДС в евро, не имеющую обязательной силы: НДС начисляется дополнительно, стоимость выезда рассчитывается отдельно — как и в онлайн-калькуляторе («без НДС»). Для расчёта достаточно площади потолка в м².
Обзор
- REST-endpoint
GET https://spanndecken-roth.de/api/v1/public/quote- MCP-сервер
https://spanndecken-roth.de/mcp/spanndecken- Инструмент MCP
calculate_spanndecken_price- Стоимость / регистрация
- бесплатно · без ключа, аккаунта и cookie
- Обязательный параметр
- только
area_m2(площадь потолка в м²) - Формат / транспорт
- JSON · только HTTPS ·
Cache-Control: no-store - Лимиты (на сегодня)
- REST 30/мин, MCP 60/мин на IP-адрес
- Ценовая основа
- версия
2026-09-26(полеpricing_version) - Что означает цена
- ориентировочная цена без НДС; НДС начисляется дополнительно; стоимость выезда рассчитывается отдельно
Интерфейсы — информационный сервис для клиентов, разработчиков и AI-ассистентов. Любой результат — ориентировочная цена без НДС для планирования бюджета: НДС начисляется дополнительно, стоимость выезда рассчитывается отдельно по расстоянию до объекта; окончательная цена указывается в письменном предложении после замера на месте. Действуют условия использования калькулятора и его интерфейсов.
Как AI-ассистенты и программы получают доступ к калькулятору
Важно: AI-ассистенты (ChatGPT, Claude и другие) не подключаются автоматически к этому серверу только потому, что нашли его адрес в интернете. Реально поддерживаются три способа:
- MCP-подключение, которое вы добавляете сами. Укажите URL сервера
https://spanndecken-roth.de/mcp/spanndeckenв вашем MCP-совместимом ассистенте или клиенте (аутентификация: нет). После этого ассистент сможет вызывать инструментcalculate_spanndecken_price. Инструкция — в разделе MCP-сервер. - Прямой вызов REST-API. Ассистенты с доступом в интернет, скрипты или «Action» в собственном GPT вызывают
GET https://spanndecken-roth.de/api/v1/public/quote?area_m2=20и получают JSON. Спецификация OpenAPI описывает интерфейс в машиночитаемом виде. - Собственное программное обеспечение. Разработчики встраивают REST-API или MCP-сервер в свои приложения, например в инструменты планирования или подготовки предложений, с соблюдением условий использования (указание источника «Spanndecken ROTH», пометка «ориентировочная цена»).
REST-API: быстрый старт
Один GET-запрос без ключа. Пример только с площадью — остальные значения сервер подставляет по умолчанию и перечисляет их в defaults_applied:
GET https://spanndecken-roth.de/api/v1/public/quote?area_m2=20
Accept: application/json
Ответ (HTTP 200, Content-Type: application/json; рассчитан в момент загрузки этой страницы):
{
"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:27:41+01:00",
"pricing_version": "2026-09-26"
}
Результат 926 € за 20 м² — ориентировочная цена без НДС; НДС начисляется дополнительно, стоимость выезда рассчитывается отдельно. Это то же значение, которое онлайн-калькулятор показывает для 20 м², категории A и 4 углов с пометкой «без НДС».
Пример со всеми параметрами — потолок с фотопечатью (категория C) площадью 35,5 м², 6 углов, 8 встроенных светильников, 2 люстры и опция скидки за объём. Результат: 2.856 € без НДС, список defaults_applied пуст, так как всё передано явно:
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:27:41+01:00",
"pricing_version": "2026-09-26"
}
Пример с curl:
curl -s "https://spanndecken-roth.de/api/v1/public/quote?area_m2=20&category=A&corners=4" -H "Accept: application/json"
Параметры
Все параметры передаются в строке запроса. Десятичные числа — с точкой или запятой (35.5 или 35,5); volume_discount принимает true/false, 1/0, yes/no или ja/nein. Границы значений — технические ограничения калькулятора, а не границы предложения.
| Параметр | Тип | Обязателен | Допустимо | По умолчанию | Значение |
|---|---|---|---|---|---|
area_m2 | число | да | > 0, макс. 10000 | – | площадь потолка в квадратных метрах |
category | текст | нет | A, B, C | A | категория поверхности: A = Lack / Matt / Satin (Farbtonauswahl) (лак / мат / сатин с выбором цвета), B = Metallic / Exclusive / Galaxy, C = Fotodruck (фотопечать) |
corners | целое | нет | 0 – 100 | 4 | число углов помещения; четыре угла включены в цену |
spotlights | целое | нет | 0 – 500 | 0 | число встроенных светильников |
lamps | целое | нет | 0 – 500 | 0 | число люстр / выводов под светильники |
volume_discount | логический | нет | true, false | false | опция скидки за объём онлайн-калькулятора, например при нескольких помещениях |
Поля ответа
| Поле | Содержание |
|---|---|
status | всегда "ok" при успешном расчёте |
provider | поставщик: name, website, calculator_url (онлайн-калькулятор) |
quote | total (ориентировочная цена без НДС в целых евро; НДС начисляется дополнительно, стоимость выезда рассчитывается отдельно), currency (EUR), formatted (например 926 €), is_estimate (всегда true) |
input | фактически использованные параметры после проверки и подстановки значений по умолчанию, включая category_label |
defaults_applied | список параметров, которые сервер заполнил значениями по умолчанию; пуст, если всё передано явно |
notice | уведомление о необязательности цены на немецком (de) и английском (en) — показывайте вместе с ценой |
calculated_at | момент расчёта (ISO 8601) |
pricing_version | версия ценовой основы (ГГГГ-ММ-ДД), сейчас 2026-09-26 |
Ответ не содержит внутренних тарифов и коэффициентов — только итог, входные данные, поставщика и уведомление. Отдельного указания на НДС в ответе пока нет: total и formatted — суммы без НДС. Поэтому программы и AI-ассистенты должны всегда помечать сумму как «ориентировочная цена без НДС; НДС начисляется дополнительно, стоимость выезда рассчитывается отдельно».
Значения по умолчанию
Если необязательный параметр не передан, сервер считает со значением по умолчанию: категория A (Lack / Matt / Satin (Farbtonauswahl)), 4 угла, 0 встроенных светильников, 0 люстр, скидка за объём — нет. Явно переданные значения всегда имеют приоритет, в том числе 0 и false. Какие значения были подставлены, указано в defaults_applied; AI-ассистентам следует называть эти допущения пользователю. Недопустимое значение (например category=D) не заменяется значением по умолчанию, а отклоняется с HTTP 422.
Ошибки и коды состояния
Ошибки возвращаются в JSON с полями error (стабильный код) и message; ошибки валидации дополнительно содержат errors по каждому полю. Пример для ?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."
]
}
}
| Код | error | Значение |
|---|---|---|
| 200 | – | расчёт выполнен |
| 422 | validation_failed | недопустимые или отсутствующие параметры; подробности в errors |
| 429 | rate_limited | достигнут лимит запросов; заголовок Retry-After указывает время ожидания в секундах |
| 413 | body_too_large | тело запроса больше 16 КБ (актуально только для POST/MCP) |
| 503 | disabled | интерфейс временно отключён (обслуживание); заголовок Retry-After |
| 405 | – | MCP-endpoint вызван методом GET или DELETE — MCP-сервер принимает только POST |
| 401 / 403 | unauthorized / https_required | только для защищённого варианта POST https://spanndecken-roth.de/api/v1/quote: отсутствует ключ или запрос без HTTPS |
MCP-сервер
MCP-сервер предоставляет тот же расчёт в виде одного инструмента только для чтения — для AI-ассистентов и MCP-клиентов. У него нет промптов и ресурсов, он ничего не записывает и не требует регистрации.
- URL сервера
https://spanndecken-roth.de/mcp/spanndecken- Транспорт
- Streamable HTTP, JSON-RPC 2.0 через
POST; ответы в JSON. GET/DELETE → 405 - Версии протокола
- 2024-11-05 – 2026-07-28 (согласование через
initialize) - Аутентификация
- нет
- Инструмент
calculate_spanndecken_price— обязательный аргумент толькоarea_m2- Аннотации инструмента
readOnlyHint: true,idempotentHint: true,destructiveHint: false,openWorldHint: false
Как подключиться
- Claude (веб/десктоп): Settings → Connectors → «Add custom connector» → указать URL сервера, без аутентификации. Claude API: MCP-коннектор с
type: "url"и URL сервера. - ChatGPT: в настройках в разделе «Apps & Connectors» (Developer Mode) создать коннектор с URL сервера, аутентификация «None». Названия пунктов могут отличаться в зависимости от версии.
- Другие MCP-клиенты (ассистенты в IDE, MCP Inspector, собственные агенты): транспорт
streamable-http, URLhttps://spanndecken-roth.de/mcp/spanndecken, из заголовков нужны толькоContent-Type: application/jsonиAccept: application/json, text/event-stream.
Подключение всегда выполняет пользователь или оператор клиента; автоматического обнаружения сервера через сайт не существует.
Пример: initialize и tools/call
Рукопожатие:
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"
}
}
}
Вызов инструмента только с площадью (остальное — значения по умолчанию):
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "calculate_spanndecken_price",
"arguments": {
"area_m2": 20
}
}
}
Результат: result.structuredContent содержит ту же структуру, что и ответ REST-API, result.content[0].text — те же данные строкой JSON, _meta.text_summary — краткое резюме на английском с перечнем подставленных значений:
{
"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:27:41+01:00",
"pricing_version": "2026-09-26"
},
"isError": false,
"_meta": {
"text_summary": "<englische Kurzfassung des Ergebnisses>"
}
}
}
Полный вызов со всеми аргументами (результат 2.856 € без НДС):
{
"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
}
}
}
При недопустимых аргументах возвращается результат с isError: true и текстовым сообщением по каждому полю (не ошибка JSON-RPC); превышение лимита сообщается кодом HTTP 429, как и в REST-API.
Спецификация OpenAPI
REST-API описан документом OpenAPI 3.1 (версия 1.2.0): https://spanndecken-roth.de/api/v1/public/openapi.json. Он содержит публичный endpoint, защищённый вариант с ключом, все схемы и примеры ответов; его можно импортировать в API-инструменты или как «Action» в собственный GPT. Документ статичен и может кешироваться до 24 часов; сами результаты расчёта — нет (см. ниже).
Лимиты, кеширование, доступность
- Лимиты запросов (на сегодня): REST-API — 30 запросов в минуту на IP-адрес, MCP-сервер — 60 запросов в минуту на IP-адрес, дополнительно 600 запросов в минуту для всех интерфейсов вместе. Заголовки
X-RateLimit-LimitиX-RateLimit-Remainingпоказывают текущее состояние; при превышении — HTTP 429 сRetry-After. Лимиты могут изменяться — ориентируйтесь на заголовки ответа. - Тело запроса: не более 16 КБ (HTTP 413).
- Кеширование: результаты отправляются с
Cache-Control: no-store, так как ценовая основа может меняться. Кратковременное техническое кеширование в рамках сеанса допустимо, если сохраняются источник («Spanndecken ROTH»),calculated_atи уведомление о необязательности; устаревшие результаты нельзя выдавать за актуальные — при сомнении выполните новый расчёт. - Доступность: сервис бесплатный и предоставляется без гарантии определённой доступности. На время обслуживания интерфейсы отвечают HTTP 503 с
Retry-After. Изменения параметров или формата ответа документируются в спецификации OpenAPI и на этой странице. - Защищённый вариант:
POST https://spanndecken-roth.de/api/v1/quoteс ключом доступа (X-Api-KeyилиAuthorization: Bearer, 60 запросов в минуту на IP) возвращает тот же ответ. Ключи выдаются только индивидуально — по запросу через контактную форму.
Как показывать результат
Чтобы клиент правильно понял ориентир, программам и AI-ассистентам следует представлять результат так:
- как ориентировочную цену Spanndecken ROTH без НДС, не имеющую обязательной силы — НДС начисляется дополнительно, стоимость выезда рассчитывается отдельно — вместе с текстом из
notice; - с фактически использованными параметрами из
inputи указанием, какие значения по умолчанию были подставлены согласноdefaults_applied; - со ссылкой на spanndecken-roth.de или онлайн-калькулятор для получения обязывающего предложения после замера;
- без собственных пересчётов и экстраполяций — актуальную ценовую основу знает только интерфейс; при нескольких помещениях рассчитывайте каждое отдельно.
Защита данных и условия использования
Через интерфейсы не устанавливаются cookie, не создаются сеансы и аккаунты. Каждый запрос фиксируется в техническом журнале использования: время, интерфейс и тип запроса, статус, переданные параметры калькулятора с рассчитанной ценой, идентификатор программы (User-Agent, укороченный) и псевдонимный, ежедневно меняющийся код вместо IP-адреса. Записи удаляются через 90 дней. Подробности и правовое основание: Политика конфиденциальности, раздел «Использование калькулятора цен через внешние интерфейсы (API/MCP)».
Использование регулируют Условия использования онлайн-калькулятора и его интерфейсов (API/MCP): результаты не имеют обязательной силы, договор не заключается, ценовая основа может меняться, результаты можно передавать только с указанием источника «Spanndecken ROTH» и пометкой «ориентировочная цена», обход лимитов и автоматизированные массовые запросы запрещены.
Контакт и изменения
Вопросы об интерфейсе, ключах доступа или интеграции: info@spanndecken-roth.de или через контактную форму. Поставщик: Spanndecken ROTH, Konstantin Roth, Oberm Rohlande 110, 58710 Menden (см. Impressum).