# Layero MCP server

Build a landing page from your IDE chat, publish it, then manage domains and analytics.

## Links
- Registry page: https://www.getdrio.com/mcp/ru-layero-layero
- Repository: https://github.com/LayeroInfra/layero-claude
- Website: https://docs.layero.ru/en/plugin/intro/

## Install
- Endpoint: https://mcp.layero.ru/mcp
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://mcp.layero.ru/mcp
- Header: Authorization

## Tools
- compose_landing_submit (Форма подбора отправлена) - Собрать лендинг по ответам из формы.

    Это НЕ инструмент для модели: его вызывает сама форма через мост хоста.
    Модель для того же зовёт `compose_landing`.

    Сборка идёт той же функцией, что и после квиза, — результат не должен
    зависеть от того, каким клиентом пользуется человек.
     Endpoint: https://mcp.layero.ru/mcp
- list_design_systems (Каталог дизайн-систем) - Return the catalogue of design systems Layero ships with. Endpoint: https://mcp.layero.ru/mcp
- list_structures (Каталог структур лендингов) - Return the catalogue of landing structures Layero ships with. Endpoint: https://mcp.layero.ru/mcp
- compose_landing (Собрать лендинг по идее) - Drive the 3-step quiz flow and produce a complete landing.

    This is the **main entry point**. Don't ask the user questions in chat
    before calling this — the tool opens native quiz dialogs in the IDE
    itself. Call this immediately when the user describes what they want.

    The three quizzes are:

    1. **Motivation** — what's being built, for whom, the desired action.
    2. **Look & feel** — palette, tone, optional references.
    3. **Final picks** — design system (top 3 matched), where submissions go,
       project name slug.

    Returns a ``ComposeResult`` with the file bundle to write to disk. The
    agent then writes the files using the IDE's filesystem tool and proceeds
    to integration setup / deploy.
     Endpoint: https://mcp.layero.ru/mcp
- add_integration (Рецепт приёма заявок) - Wire form submissions into a destination.

    Returns the integration recipe. The agent executes the steps itself —
    runs terminal commands, edits files, deploys a relay if needed.
     Endpoint: https://mcp.layero.ru/mcp
- whoami (Кто подключён к Layero) - Who is connected to Layero and how many projects they have.

    Call this first when you are unsure the token is configured: a clear
    error here is cheaper than one halfway through a deploy.
     Endpoint: https://mcp.layero.ru/mcp
- my_projects (Мои сайты) - The user's sites on Layero.

    Thirty most recent by default. The full list is rarely needed, while
    flooding half your context with it is easy: an active user has dozens
    of projects.
     Endpoint: https://mcp.layero.ru/mcp
- site_status (Как дела у сайта) - How a site is doing: whether it is being served and how its build ended.

    `project` is an id or a slug. One call instead of three (project,
    deploys, live check of the address): an agent needs the conclusion, not
    the raw material to assemble it from.
     Endpoint: https://mcp.layero.ru/mcp
- env_vars (Переменные окружения проекта) - Project environment variables: list names, set them, remove them.

    VALUES ARE NEVER READ BACK — not by you, not by the platform in its
    response. Only names and lengths are returned. This is a deliberate rule
    rather than an implementation limit: anything that reaches your answer
    settles into the conversation history, and a secret that lands there
    cannot be taken back. If the user asks "what is my key", say plainly
    that you cannot show it and offer to set a new one.

    `set` does not require knowing the other variables — the platform keeps
    them. `unset` removes only the named ones.

    A change needs a new deploy: variables are picked up at build time, not
    on the fly. Say so, or the user will think nothing happened.
     Endpoint: https://mcp.layero.ru/mcp
- connect_analytics (Подключить Яндекс.Метрику) - Connect Yandex Metrika to a site.

    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the
    platform can do that step for the user. The tool returns a link — show
    it and ask them to open it and grant access. Do not poll in a loop: the
    person may walk away for an hour. Check later through this same tool
    without the `branch` argument, or through `site_analytics`.
     Endpoint: https://mcp.layero.ru/mcp
- site_analytics (Трафик сайта) - Site traffic: totals, direction and top sources.

    The time series is collapsed into a direction and breakdowns are cut to
    five: ninety chart points are useless in your context, and the
    conclusion is yours to draw anyway.
     Endpoint: https://mcp.layero.ru/mcp
- check_performance (Замерить скорость сайта) - Measure a site's speed and say whether it got worse after a deploy.

    The verdict comes FROM THE SCORE, not from timings: repeated runs of the
    same deploy vary by at most one point, while LCP and TTFB on identical
    code swing by 37-40%. A difference of 3 points or more is meaningful;
    anything smaller is measurement noise, and calling that a regression is
    inventing a problem.

    A run takes tens of seconds. With `wait=true` the tool waits for you; do
    not start a second measurement in parallel — it will occupy the queue
    and add nothing.
     Endpoint: https://mcp.layero.ru/mcp
- connect_domain (Подключить свой домен) - Connect a custom domain to a site.

    IMPORTANT: between this call and a working domain stands A PERSON. You
    get DNS records — show them to the user and explain they go in at their
    domain registrar. Do not wait for readiness: DNS propagates in minutes
    to an hour, the platform re-checks on its own, and you check later via
    `check_domain`. Spinning here burns time and context for nothing.

    The address can be passed as-is: the platform reduces
    `https://shop.example.com/page` to `shop.example.com` itself.
     Endpoint: https://mcp.layero.ru/mcp
- check_domain (Проверить, заработал ли домен) - Check whether a connected domain has started working.

    Runs the DNS check immediately instead of waiting for the background
    re-check. If the records have not propagated yet, that is normal — say
    so and suggest coming back later.
     Endpoint: https://mcp.layero.ru/mcp
- list_domains (Домены проекта) - The project's own domains and their state. Endpoint: https://mcp.layero.ru/mcp
- read_site (Прочитать страницу сайта) - Что на самом деле опубликовано: заголовки, тексты, формы, мета, ссылки.

    Зови это ПЕРЕД тем, как что-то править на живом сайте, и ПОСЛЕ публикации,
    чтобы убедиться, что приехало ожидаемое. Без этого правка идёт вслепую: то,
    что лежит на диске у пользователя, и то, что отдаётся посетителю, —
    разные вещи, и расходятся они молча.

    Возвращается СТРУКТУРА, а не сырой HTML: страница с инлайн-стилями съела бы
    половину твоего контекста, а нужны из неё заголовки, тексты, формы и мета.
    Если нужен исходник целиком — он у пользователя на диске.

    `served_fallback=true` означает, что по этому пути отдали содержимое
    главной: страницы с таким адресом нет, а бакет ответил на отсутствующий
    ключ своим `index.html` с кодом 200. Не принимай это за успех.
     Endpoint: https://mcp.layero.ru/mcp
- site_screenshot (Показать снимок сайта) - Снимок последней собранной версии сайта — как он выглядит.

    Дополняет `read_site` (что на странице) и `site_issues` (что с ней не так)
    третьим вопросом: как это смотрится. Полезно перед правкой оформления и
    после неё.

    ⚠️ Снимок делается при СБОРКЕ, а не сейчас. Если ты только что что-то
    опубликовал, свежий снимок появится не мгновенно — не выдавай прошлый за
    результат своей правки.

    Картинка стоит контекста заметно дороже текста. Не зови «на всякий случай»:
    для «что не так с сайтом» есть `site_issues`, он дешевле и конкретнее.
     Endpoint: https://mcp.layero.ru/mcp
- site_issues (Что чинить на сайте) - Конкретные проблемы страницы — каждая с адресом и что с ней делать.

    Это НЕ балл. Балл отдаёт `check_performance`, и по нему нечего чинить:
    «73 из 100» не говорит, что именно править. Здесь только то, у чего есть
    адрес и понятное действие: закрытая индексация, ресурсы с зарубежных
    хостов, растровые картинки без webp, отсутствующие мета и alt, формы без
    получателя.

    Находки отсортированы по важности. Не вываливай их списком — назови две-три
    главные и спроси, чинить ли.
     Endpoint: https://mcp.layero.ru/mcp
- refactor_site (Применить правку к разметке сайта) - Одно названное преобразование разметки — с предсказуемым результатом.

    Инструмент НИЧЕГО НЕ ПУБЛИКУЕТ. Он возвращает изменённый HTML; показать
    его человеку, получить согласие и позвать `publish_landing` — твоя работа.
    Молча переписывать чужой сайт нельзя.

    Преобразования идемпотентны: повторный вызов ничего не меняет и честно
    отвечает `changed=false`. Пустой список изменений — не ошибка, а ответ
    «применять было нечего».

    ⚠️ ЧЕГО ЗДЕСЬ НЕТ И ПОЧЕМУ. Шрифты со сторонних хостов, перекодировка
    картинок в webp и разбор инлайн-стилей сюда НЕ входят: для них нужны сами
    файлы, которых у сервера нет, либо суждение о задуманном внешнем виде.
    Эти проблемы называет `site_issues` — с адресом и объяснением; правит их
    тот, у кого файлы на руках.

    Выигрыш меряется `check_performance` ДО и ПОСЛЕ публикации. Если разница
    меньше трёх баллов — это шум измерения, а не улучшение; так и скажи.
     Endpoint: https://mcp.layero.ru/mcp
- check_copy (Вычитать русский текст) - Механические ошибки русской типографики — с точным местом и заменой.

    Это КОД, а не суждение модели: один и тот же текст даёт один и тот же
    список находок. Ловится то, что глаз не видит, а читатель чувствует:
    неразрывные пробелы, тире, прямые кавычки, точка вместо запятой в дробях,
    пробелы у знаков препинания, двойные пробелы.

    Каждая находка несёт готовую замену — подставляй её, а не переписывай
    фрагмент по-своему.

    ЧЕГО ЗДЕСЬ НЕТ. Инфостиль, длина фраз, канцелярит, признаки нейрослопа —
    это суждение, и оно живёт в ресурсе `layero://editorial/ru`. Прочитай его,
    если просят «сделать текст лучше», а не «исправить типографику».
     Endpoint: https://mcp.layero.ru/mcp
- list_deploys (История сборок проекта) - Последние сборки проекта: какая чем кончилась и какая сейчас живая.

    Нужен, чтобы выбрать цель для `rollback` или `diagnose_deploy`. Для
    вопроса «что с сайтом прямо сейчас» хватает `site_status` — он дешевле.
     Endpoint: https://mcp.layero.ru/mcp
- rollback (Откатить сайт на прошлую сборку) - Вернуть на живой адрес предыдущую рабочую сборку.

    МЕНЯЕТ ТО, ЧТО ВИДЯТ ПОСЕТИТЕЛИ, — спроси человека перед вызовом, если он
    не попросил откат прямо. Действие обратимо (можно откатиться обратно), но
    промежуток времени с чужой версией на адресе вернуть нельзя.

    ⚠️ Для приложений (`ssr_next`, `streamlit`, `gradio`, `flask`) откат
    работает не так, как для статики, и часто невозможен: у приложения нет
    готового артефакта, который просто переключить. Если платформа откажет —
    объясни это человеку прямо и предложи собрать заново, а не повторяй вызов.
     Endpoint: https://mcp.layero.ru/mcp
- retry_deploy (Перезапустить упавшую сборку) - Поставить упавшую сборку в очередь заново.

    Разрешено ТОЛЬКО для сборок в состоянии `failed`. На идущей сборке
    (`queued`, `building`) платформа откажет — это не ошибка, а защита от
    второй параллельной сборки.

    ⚠️ Повтор осмыслен, когда причина отказа была внешней (сеть, реестр,
    таймаут). Если сборка упала на коде, повтор даст тот же результат: сначала
    `diagnose_deploy`, потом правка, и только потом повтор.
     Endpoint: https://mcp.layero.ru/mcp
- cancel_deploy (Отменить идущую сборку) - Остановить сборку, которая ещё идёт.

    Живой адрес при этом не меняется — на нём остаётся прошлая версия.
     Endpoint: https://mcp.layero.ru/mcp
- deploy_logs (Логи сборки и приложения) - Сырые строки лога — когда разбора `diagnose_deploy` не хватило.

    Начинай с `diagnose_deploy`: он уже вытащил причину и окрестности фатальной
    строки. Сюда иди, когда нужно посмотреть глазами — например, причина
    невнятная или интересует не отказ, а поведение приложения.

    Возвращается ХВОСТ. Сколько отброшено — видно по `truncated`; не выдавай
    хвост за весь лог.
     Endpoint: https://mcp.layero.ru/mcp
- diagnose_deploy (Почему упала сборка) - Why a deploy failed — with the cause parsed out, not a raw log.

    Without `deploy` the latest build is used; that is what reflects the
    current state. To examine a specific older one, pass its id.

    The response is not a log tail but the neighbourhood of the fatal line:
    the platform has already picked out what matters. Read `verdict` and the
    summary, fix the code, deploy again — you close this loop yourself,
    without involving the person.
     Endpoint: https://mcp.layero.ru/mcp
- publish_landing (Опубликовать сайт) - Publish a site to Layero — from here, with no terminal.

    Not only generated landings: this takes ANY ready static bundle, so it is
    also the answer to "deploy my site". Requirements — `index.html` at the
    root, at most 200 files, 8 MB in total, 2 MB per file. Binary files
    (images, fonts) must come with `encoding="base64"`; sent as text they are
    silently corrupted.

    A project that still needs a build step (Vite, Next, Astro — anything
    where the answer is `npm run build`) does NOT go here: publish its build
    output, or tell the user to run `npx layero@latest deploy`, which builds
    on our side.

    Send the ACTUAL file contents: the server does not remember the bundle
    between calls. If the user edited the text after generation, pass the
    current versions, or what gets published is what used to be there.

    Pass `project` (the id of an existing project) when republishing the
    same landing; without it the platform finds a project with that name or
    creates a new one.

    Returns as soon as the build finishes, or after ~40s with `status`
    `building` and the `deploy_id` — the build keeps going on its own. Never
    call this tool a second time to "retry" a build that is still running:
    that starts a SECOND build. Follow `next_action`.
     Endpoint: https://mcp.layero.ru/mcp

## Resources
- ui://layero/compose.html - Подбор лендинга Форма подбора: тема, аудитория, цель, оформление, приём заявок. MIME type: text/html;profile=mcp-app
- layero://soul - The Layero philosophy. Read on every new conversation. MIME type: text/plain
- layero://playbook - Как ведётся разговор целиком: развилка, ход за ходом, жёсткие правила.

    🚨 ЭТОТ ТЕКСТ ЛЕЖАЛ МЁРТВЫМ. `prompts/system.md` — 5,9 КБ подробного
    регламента: что делать на первом ходу, что после `compose_landing`, шесть
    жёстких правил, таблица «какой инструмент когда». Написан аккуратно и
    заметно богаче того, что сервер отдаёт в `instructions`. И не загружался
    НИ ОДНИМ путём кода — проверено сплошным поиском 03.08.2026.

    Хуже, чем просто потерянная работа: следующий, кто взялся бы чинить
    поведение модели, поправил бы `system.md` и не понял, почему ничего не
    изменилось. При этом `check-tool-names.py` исправно проверял этот файл как
    «поверхность» — то есть сторожил текст, которого никто не читает.

    Отдаётся ресурсом, а не вливается в `instructions`: `instructions` уходят
    каждому клиенту при каждом рукопожатии и стоят его контекста, а ресурс
    клиент тянет по запросу. Развилка «строим или публикуем» остаётся и в
    `instructions` — она нужна ДО того, как агент решит что-то читать. MIME type: text/plain
- layero://editorial/ru - Часть русской редактуры, которую нельзя проверить кодом.

    Механику проверяет `check_copy` — там ответ детерминирован. Здесь то, что
    требует суждения: инфостиль, признаки текста, написанного не для читателя,
    и границы вмешательства в чужой текст.

    Ресурсом, а не описанием инструмента: свод читают по запросу, а описания
    инструментов клиент тянет при каждом `tools/list` и платит за них
    контекстом на каждом разговоре. MIME type: text/plain
- layero://catalogue - Full catalogue of design systems + structures, descriptive metadata. MIME type: text/plain

## Prompts
- welcome - First-turn greeting: announce Layero, ask for motivation.
- make_premium
- make_friendly

## Metadata
- Owner: ru.layero
- Version: 1.29.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Aug 2, 2026
- Source: https://registry.modelcontextprotocol.io
