API калькулятора цен и MCP-сервер: документация для разработчиков и AI-ассистентов

Калькулятор стоимости натяжных потолков 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 и другие) не подключаются автоматически к этому серверу только потому, что нашли его адрес в интернете. Реально поддерживаются три способа:

  1. MCP-подключение, которое вы добавляете сами. Укажите URL сервера https://spanndecken-roth.de/mcp/spanndecken в вашем MCP-совместимом ассистенте или клиенте (аутентификация: нет). После этого ассистент сможет вызывать инструмент calculate_spanndecken_price. Инструкция — в разделе MCP-сервер.
  2. Прямой вызов REST-API. Ассистенты с доступом в интернет, скрипты или «Action» в собственном GPT вызывают GET https://spanndecken-roth.de/api/v1/public/quote?area_m2=20 и получают JSON. Спецификация OpenAPI описывает интерфейс в машиночитаемом виде.
  3. Собственное программное обеспечение. Разработчики встраивают 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. Границы значений — технические ограничения калькулятора, а не границы предложения.

Параметры REST-API и инструмента MCP
ПараметрТипОбязателенДопустимоПо умолчаниюЗначение
area_m2числода> 0, макс. 10000–площадь потолка в квадратных метрах
categoryтекстнетA, B, CAкатегория поверхности: A = Lack / Matt / Satin (Farbtonauswahl) (лак / мат / сатин с выбором цвета), B = Metallic / Exclusive / Galaxy, C = Fotodruck (фотопечать)
cornersцелоенет0 – 1004число углов помещения; четыре угла включены в цену
spotlightsцелоенет0 – 5000число встроенных светильников
lampsцелоенет0 – 5000число люстр / выводов под светильники
volume_discountлогическийнетtrue, falsefalseопция скидки за объём онлайн-калькулятора, например при нескольких помещениях

Поля ответа

Поля JSON-ответа
ПолеСодержание
statusвсегда "ok" при успешном расчёте
providerпоставщик: name, website, calculator_url (онлайн-калькулятор)
quotetotal (ориентировочная цена без НДС в целых евро; НДС начисляется дополнительно, стоимость выезда рассчитывается отдельно), 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."
        ]
    }
}
HTTP-коды состояния интерфейсов
КодerrorЗначение
200–расчёт выполнен
422validation_failedнедопустимые или отсутствующие параметры; подробности в errors
429rate_limitedдостигнут лимит запросов; заголовок Retry-After указывает время ожидания в секундах
413body_too_largeтело запроса больше 16 КБ (актуально только для POST/MCP)
503disabledинтерфейс временно отключён (обслуживание); заголовок Retry-After
405–MCP-endpoint вызван методом GET или DELETE — MCP-сервер принимает только POST
401 / 403unauthorized / 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, URL https://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).

Документация проверена: 26.10.2026 · ценовая основа 2026-09-26 · OpenAPI 1.2.0 · MCP-сервер «Spanndecken ROTH Preisrechner». Эта страница есть и на немецком языке.

Обратный звонок
Оставьте свой номер телефона, и мы перезвоним вам в ближайшее время для консультации.
Рассчитать цену
Рассчитайте предварительную стоимость натяжного потолка с помощью онлайн-калькулятора всего за 5 минут
Начните сейчас
Запросите предложение без обязательств

Планируете новый натяжной потолок? Отправьте нам основные сведения о вашем проекте. Мы лично рассмотрим вашу заявку, обсудим возможные варианты и свяжемся с вами, чтобы согласовать дальнейшие шаги.

015777 053 056
Сообщение успешно отправлено!
Менеджер свяжется с вами в ближайшее время.
Написать в WhatsApp