ZBS Index What actually exists in applied AI, with the source next to it

mcp server

Layero

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

Description as published by the maintainer. Source

  • version 1.29.0
  • active
  • analytics

active — Registry entry last updated 2026-08-02. Dashed tags are derived by ZBS Index from the published description, not stated by the maintainer.

What this server can do

27 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.

add_integration(kind)
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. Required: kind.
cancel_deploy(deploy, project)
Остановить сборку, которая ещё идёт. Живой адрес при этом не меняется — на нём остаётся прошлая версия. Required: project.
check_copy(path, text, project)
Механические ошибки русской типографики — с точным местом и заменой. Это КОД, а не суждение модели: один и тот же текст даёт один и тот же список находок. Ловится то, что глаз не видит, а читатель чувствует: неразрывные пробелы, тире, прямые кавычки, точка вместо запятой в дробях, пробелы у знаков препинания, двойные пробелы. Каждая находка несёт готовую замену — подставляй её, а не переписывай фрагмент по-своему. ЧЕГО ЗДЕСЬ НЕТ. Инфостиль, длина фраз, канцелярит, признаки нейрослопа — это суждение, и оно живёт в ресурсе `layero://editorial/ru`. Прочитай его, если просят «сделать текст лучше», а не «исправить типографику».
check_domain(domain, project)
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. Required: project, domain.
check_performance(wait, project)
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. Required: project.
compose_landing(user_message)
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. Required: user_message.
compose_landing_submit(goal, tone, topic, palette, audience, integration, project_name, design_system)
Собрать лендинг по ответам из формы. Это НЕ инструмент для модели: его вызывает сама форма через мост хоста. Модель для того же зовёт `compose_landing`. Сборка идёт той же функцией, что и после квиза, — результат не должен зависеть от того, каким клиентом пользуется человек. Required: topic, design_system.
connect_analytics(branch, project)
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`. Required: project.
connect_domain(domain, project)
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. Required: project, domain.
deploy_logs(kind, tail, deploy, project)
Сырые строки лога — когда разбора `diagnose_deploy` не хватило. Начинай с `diagnose_deploy`: он уже вытащил причину и окрестности фатальной строки. Сюда иди, когда нужно посмотреть глазами — например, причина невнятная или интересует не отказ, а поведение приложения. Возвращается ХВОСТ. Сколько отброшено — видно по `truncated`; не выдавай хвост за весь лог. Required: project.
diagnose_deploy(deploy, project)
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. Required: project.
env_vars(keys, action, values, project)
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. Required: project.
list_deploys(limit, project)
Последние сборки проекта: какая чем кончилась и какая сейчас живая. Нужен, чтобы выбрать цель для `rollback` или `diagnose_deploy`. Для вопроса «что с сайтом прямо сейчас» хватает `site_status` — он дешевле. Required: project.
list_design_systems
Return the catalogue of design systems Layero ships with.
list_domains(project)
The project's own domains and their state. Required: project.
list_structures
Return the catalogue of landing structures Layero ships with.
my_projects(limit)
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.
publish_landing(files, project, project_name)
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`. Required: files, project_name.
read_site(path, project)
Что на самом деле опубликовано: заголовки, тексты, формы, мета, ссылки. Зови это ПЕРЕД тем, как что-то править на живом сайте, и ПОСЛЕ публикации, чтобы убедиться, что приехало ожидаемое. Без этого правка идёт вслепую: то, что лежит на диске у пользователя, и то, что отдаётся посетителю, — разные вещи, и расходятся они молча. Возвращается СТРУКТУРА, а не сырой HTML: страница с инлайн-стилями съела бы половину твоего контекста, а нужны из неё заголовки, тексты, формы и мета. Если нужен исходник целиком — он у пользователя на диске. `served_fallback=true` означает, что по этому пути отдали содержимое главной: страницы с таким адресом нет, а бакет ответил на отсутствующий ключ своим `index.html` с кодом 200. Не принимай это за успех. Required: project.
refactor_site(fix, html)
Одно названное преобразование разметки — с предсказуемым результатом. Инструмент НИЧЕГО НЕ ПУБЛИКУЕТ. Он возвращает изменённый HTML; показать его человеку, получить согласие и позвать `publish_landing` — твоя работа. Молча переписывать чужой сайт нельзя. Преобразования идемпотентны: повторный вызов ничего не меняет и честно отвечает `changed=false`. Пустой список изменений — не ошибка, а ответ «применять было нечего». ⚠️ ЧЕГО ЗДЕСЬ НЕТ И ПОЧЕМУ. Шрифты со сторонних хостов, перекодировка картинок в webp и разбор инлайн-стилей сюда НЕ входят: для них нужны сами файлы, которых у сервера нет, либо суждение о задуманном внешнем виде. Эти проблемы называет `site_issues` — с адресом и объяснением; правит их тот, у кого файлы на руках. Выигрыш меряется `check_performance` ДО и ПОСЛЕ публикации. Если разница меньше трёх баллов — это шум измерения, а не улучшение; так и скажи. Required: html, fix.
retry_deploy(deploy, project)
Поставить упавшую сборку в очередь заново. Разрешено ТОЛЬКО для сборок в состоянии `failed`. На идущей сборке (`queued`, `building`) платформа откажет — это не ошибка, а защита от второй параллельной сборки. ⚠️ Повтор осмыслен, когда причина отказа была внешней (сеть, реестр, таймаут). Если сборка упала на коде, повтор даст тот же результат: сначала `diagnose_deploy`, потом правка, и только потом повтор. Required: project.
rollback(deploy, project)
Вернуть на живой адрес предыдущую рабочую сборку. МЕНЯЕТ ТО, ЧТО ВИДЯТ ПОСЕТИТЕЛИ, — спроси человека перед вызовом, если он не попросил откат прямо. Действие обратимо (можно откатиться обратно), но промежуток времени с чужой версией на адресе вернуть нельзя. ⚠️ Для приложений (`ssr_next`, `streamlit`, `gradio`, `flask`) откат работает не так, как для статики, и часто невозможен: у приложения нет готового артефакта, который просто переключить. Если платформа откажет — объясни это человеку прямо и предложи собрать заново, а не повторяй вызов. Required: project.
site_analytics(period, project)
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. Required: project.
site_issues(path, project)
Конкретные проблемы страницы — каждая с адресом и что с ней делать. Это НЕ балл. Балл отдаёт `check_performance`, и по нему нечего чинить: «73 из 100» не говорит, что именно править. Здесь только то, у чего есть адрес и понятное действие: закрытая индексация, ресурсы с зарубежных хостов, растровые картинки без webp, отсутствующие мета и alt, формы без получателя. Находки отсортированы по важности. Не вываливай их списком — назови две-три главные и спроси, чинить ли. Required: project.
site_screenshot(project)
Снимок последней собранной версии сайта — как он выглядит. Дополняет `read_site` (что на странице) и `site_issues` (что с ней не так) третьим вопросом: как это смотрится. Полезно перед правкой оформления и после неё. ⚠️ Снимок делается при СБОРКЕ, а не сейчас. Если ты только что что-то опубликовал, свежий снимок появится не мгновенно — не выдавай прошлый за результат своей правки. Картинка стоит контекста заметно дороже текста. Не зови «на всякий случай»: для «что не так с сайтом» есть `site_issues`, он дешевле и конкретнее. Required: project.
site_status(project)
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. Required: project.
whoami
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.

Last successful function declaration observed on . Source: https://mcp.layero.ru/mcp. We list what the server declared; we do not call any of these functions.

Endpoint status observed on . Source: https://mcp.layero.ru/mcp.

Signals

These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.

Signal Value What it measures Window Observed Source
Latest published version 1.29.0 Latest version string the maintainer published to the registry. as of fetch Model Context Protocol
Registry record last updated 2026-08-02 When the registry record was last updated by its maintainer. point in time Model Context Protocol
First listed in the MCP Registry 2026-08-02 Date this server was first published to the official MCP Registry. Not a usage or quality measure. point in time Model Context Protocol
mcp tools declared 27 tools Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. as of probe mcp.layero.ru
mcp endpoint status ok The server listed 27 functions when asked. as of probe mcp.layero.ru

Where to get it

This record as data

Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.

GET /api/v1/entries/mcp_server.json

Sources

  1. Tools declared by the MCP server at https://mcp.layero.ru/mcp — mcp.layero.ru, observed , trust tier 1.
  2. Official MCP Registry — Model Context Protocol, observed , trust tier 1.