Mmcp.market

Layero

by layero·ru.layero/layero·v2.2.0

Deploy and operate sites on Layero — hosting with build servers in Russia: domains, env, Data API.

Grade B.Solid. Minor gaps such as missing repository or slow maintenance.

Tools (34, 10 write)

write = sends, deletes, buys or posts; agents should confirm first
  • cancel_deploywrite actionFree

    Остановить сборку, которая ещё идёт. Живой адрес при этом не меняется — на нём остаётся прошлая версия.

  • check_copyFree

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

  • check_domainFree

    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.

  • check_performancewrite actionFree

    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.

  • connect_analyticsFree

    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`.

  • connect_domainFree

    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.

  • data_api_grantFree

    Кто может вызывать метод таблицы или функции: показывает SQL и применяет после согласия. ОТКРЫВАЕТ ДАННЫЕ ИНТЕРНЕТУ. Сначала вызывай без apply: платформа вернёт команды и предупреждения (например, «защита строк выключена — посетитель получит все строки»). Покажи их человеку. С apply=true клиент с формами спросит его сам; без форм — получи согласие в чате и передай confirmed=true вместе с expected_sql из показа. Неназванные методы таблицы сохраняют текущий уровень. Применяются ровно показанные команды: если права успели измениться, платформа откажет — покажи новые. Нужен токен со scope admin — и для показа тоже.

  • data_api_keysFree

    Ключи Data API базы: список, выпуск, отзыв. Значения ключа в списке нет никогда. Выпуск и отзыв — только с согласия человека: клиент с формами спросит сам, без форм спроси в чате и передай confirmed=true. Значение выпущенного ключа возвращается один раз: секретный платформа не хранит. Отдай его человеку для сервера и не повторяй дальше. Отзыв ломает всех, кто пользуется ключом, — и сайт, если ключ в его сборке (`in_build`). Для выпуска и отзыва нужен токен со scope admin.

  • data_api_methodsFree

    REST и RPC базы с уровнем доступа на каждый HTTP-метод. Уровень — кто может вызвать метод: closed, visitor (любой посетитель), user (вошедшие), server (только сервер). Читается из действующих прав ролей в самой базе — так, как их увидит шлюз.

  • data_api_originsFree

    Сайты, которым можно звать базу из браузера: список, добавить, убрать. Адреса подключённых проектов и их веток пускаются сами — их не добавляют. Добавленный сайт данных не открывает: что можно читать и писать, решают уровни доступа. Добавить и убрать — только с согласия человека; убранный сайт получает отказ на все запросы. Для этого нужен токен со scope admin.

  • data_api_probeFree

    Настоящий запрос к методу через шлюз — от имени посетителя, пользователя или сервера. Ключ и токен подставляет платформа. Запись (POST, PATCH, DELETE, вызов функции) откатывается: строки в базе не меняются, но откат не отменяет номера последовательностей, вызовы из базы наружу, сессионные блокировки и суточную квоту вызовов. Ответ настоящий: права, правила строк и отказы те же, что увидит сайт. Нужен токен со scope admin.

  • data_api_statusFree

    Включён ли у базы Data API, его адрес, ключи и сайты, которым можно звать базу. Ключи — только префиксы: значения платформа не отдаёт, секретные не хранит. Включить API инструментом нельзя: после включения у базы появляется публичный адрес, и это решение человека в панели.

  • deploy_logswrite actionFree

    Сырые строки лога — когда разбора `diagnose_deploy` не хватило. Начинай с `diagnose_deploy`: он уже вытащил причину и окрестности фатальной строки. Сюда иди, когда нужно посмотреть глазами — например, причина невнятная или интересует не отказ, а поведение приложения. Возвращается ХВОСТ. Сколько отброшено — видно по `truncated`; не выдавай хвост за весь лог.

  • diagnose_deploywrite actionFree

    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.

  • env_varswrite actionFree

    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.

  • import_repowrite actionFree

    Create a Layero project from a repository — path (a) without the dashboard. From then on a push to the branch is a preview, a push to the production branch is production. After the link the tool finishes the setup wizard itself (detect → settings → first build), exactly what the dashboard's "Start deploy" button does; `setup` in the result says whether that happened. Until 2.1.1 the project stayed in `pending_setup` while the answer promised a build that never started. Two shapes, same as the CLI: GitHub goes through the App installation (project and webhook in one call); other providers create the project first and then connect the source — that step reports whether the webhook could be registered. If the provider is not connected, the result says `needs_connection` with the dashboard address: the person connects the token there, never through the chat.

  • list_deploysFree

    Последние сборки проекта: какая чем кончилась и какая сейчас живая. Нужен, чтобы выбрать цель для `rollback` или `diagnose_deploy`. Для вопроса «что с сайтом прямо сейчас» хватает `site_status` — он дешевле.

  • list_domainsFree

    The project's own domains and their state.

  • list_environmentsFree

    The project's environments — one per branch (or the single `cli` one), each with its address and the state of its latest build. Answers «где превью моей ветки» and «что сейчас на проде». There is no separate environments endpoint on the platform: branches and deploys are read and joined here, the same way the CLI does.

  • list_sourcesFree

    Which git providers Layero supports and which of them the organization has connected (GitHub App installations and provider tokens). Call before `import_repo` when you are not sure the provider is connected. Connecting a provider token is done by the person in the dashboard — never ask them to paste the token into the chat.

  • my_projectsFree

    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.

  • project_createwrite actionFree

    Create an empty project with no repository — an address reserved for a later `publish_site` or `npx layero@latest deploy`. For a project FROM a repository use `import_repo` instead. Nothing is built or served yet: the address answers only after the first publish.

  • publish_landingwrite actionFree

    DEPRECATED — use `publish_site`. Same behaviour, same arguments. Kept for one release (removed in the next) so that configs and prompts written before 17.09.2026 keep working; new instructions must call `publish_site`.

  • publish_sitewrite actionFree

    Publish a static site to Layero — from here, with no terminal. Takes ANY ready static bundle, so it is the answer to "deploy my site" when the project has no connected repository. 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. Do NOT use it for a project with a connected repository (`site_status` shows one): the next git push would overwrite what you published. Publishing without a Layero account is not possible from here — the server requires sign-in. For that case there is the CLI: `npx layero@latest deploy --claim` deploys first and lets the person claim the site later. An empty project for a future publish is created with `project_create`. 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 site; 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`.

  • read_siteFree

    Что на самом деле опубликовано: заголовки, тексты, формы, мета, ссылки. Зови это ПЕРЕД тем, как что-то править на живом сайте, и ПОСЛЕ публикации, чтобы убедиться, что приехало ожидаемое. Без этого правка идёт вслепую: то, что лежит на диске у пользователя, и то, что отдаётся посетителю, — разные вещи, и расходятся они молча. Возвращается СТРУКТУРА, а не сырой HTML: страница с инлайн-стилями съела бы половину твоего контекста, а нужны из неё заголовки, тексты, формы и мета. Если нужен исходник целиком — он у пользователя на диске. `served_fallback=true` означает, что по этому пути отдали содержимое главной: страницы с таким адресом нет, а бакет ответил на отсутствующий ключ своим `index.html` с кодом 200. Не принимай это за успех.

  • refactor_siteFree

    Одно названное преобразование разметки — с предсказуемым результатом. Инструмент НИЧЕГО НЕ ПУБЛИКУЕТ. Он возвращает изменённый HTML; показать его человеку, получить согласие и позвать `publish_site` — твоя работа. Молча переписывать чужой сайт нельзя. Преобразования идемпотентны: повторный вызов ничего не меняет и честно отвечает `changed=false`. Пустой список изменений — не ошибка, а ответ «применять было нечего». ⚠️ ЧЕГО ЗДЕСЬ НЕТ И ПОЧЕМУ. Шрифты со сторонних хостов, перекодировка картинок в webp и разбор инлайн-стилей сюда НЕ входят: для них нужны сами файлы, которых у сервера нет, либо суждение о задуманном внешнем виде. Эти проблемы называет `site_issues` — с адресом и объяснением; правит их тот, у кого файлы на руках. Выигрыш меряется `check_performance` ДО и ПОСЛЕ публикации. Если разница меньше трёх баллов — это шум измерения, а не улучшение; так и скажи.

  • retry_deploywrite actionFree

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

  • rollbackFree

    Вернуть на живой адрес предыдущую рабочую сборку. МЕНЯЕТ ТО, ЧТО ВИДЯТ ПОСЕТИТЕЛИ, — спроси человека перед вызовом, если он не попросил откат прямо. Действие обратимо (можно откатиться обратно), но промежуток времени с чужой версией на адресе вернуть нельзя. ⚠️ Для приложений (`ssr_next`, `streamlit`, `gradio`, `flask`) откат работает не так, как для статики, и часто невозможен: у приложения нет готового артефакта, который просто переключить. Если платформа откажет — объясни это человеку прямо и предложи собрать заново, а не повторяй вызов.

  • search_docsFree

    Search docs.layero.ru — no token needed. Use it before guessing how the platform works: build settings and `layero.json`, environments and preview URLs, custom domains, env vars, runtime apps, Data API, CLI flags and JSON events. Returns the page title, a direct URL (with anchor) and a snippet; open the URL with your own fetch tool when the snippet is not enough. The index is the site's own search index, refreshed hourly.

  • site_analyticsFree

    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.

  • site_issuesFree

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

  • site_screenshotFree

    Снимок последней собранной версии сайта — как он выглядит. Дополняет `read_site` (что на странице) и `site_issues` (что с ней не так) третьим вопросом: как это смотрится. Полезно перед правкой оформления и после неё. ⚠️ Снимок делается при СБОРКЕ, а не сейчас. Если ты только что что-то опубликовал, свежий снимок появится не мгновенно — не выдавай прошлый за результат своей правки. Картинка стоит контекста заметно дороже текста. Не зови «на всякий случай»: для «что не так с сайтом» есть `site_issues`, он дешевле и конкретнее.

  • site_statusFree

    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.

  • whoamiFree

    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.

Public scan report

scanner v0.1.2 · 2026-09-18 · same rubric, same numbers if you re-run it

no findings
  • Code scanremote-only server, no package to scann/a
  • Live reliabilityremote reachable in 6197ms12/20
  • Tool poisoning34 tool descriptions checked15/15
  • Auth qualityAPI key sent as a header8/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identitynamespace and repository owner differ; website matches verified namespace6/10
Overall 75/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

Grade history

  • 2026-09-18downgradeABscore 75

Install directly

claude mcp add --transport http layero https://mcp.layero.ru/mcp
Add to Cursor