Skip to main content
Glama

Опубликовать сайт

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filesYesФайлы сайта целиком, с `index.html` в корне. Пути относительные (`assets/app.css`). Двоичные файлы — с `encoding="base64"`. Не более 200 файлов, 8 МБ всего, 2 МБ на файл.
projectNoid существующего проекта — для повторной публикации того же сайта. Без него платформа ищет проект по имени или создаёт новый.
project_nameYesСлаг проекта — строчные латинские буквы, цифры и дефис. Он станет частью адреса сайта. Если проект уже существует, передавай ещё и `project`, иначе платформа заведёт новый.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes
bytesYes
errorNo
filesYes
statusYes
deploy_idYes
project_idYes
next_actionYes
project_slugYes
created_projectYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed3 schema fields changed
    • addedInput schema / properties / files / description
      Added value: +"Файлы сайта целиком, с `index.html` в корне. Пути относительные (`assets/app.css`). Двоичные файлы — с `encoding=\"base64\"`. Не более 200 файлов, 8 МБ всего, 2 МБ на файл."
    • addedInput schema / properties / project / description
      Added value: +"id существующего проекта — для повторной публикации того же сайта. Без него платформа ищет проект по имени или создаёт новый."
    • addedInput schema / properties / project_name / description
      Added value: +"Слаг проекта — строчные латинские буквы, цифры и дефис. Он станет частью адреса сайта. Если проект уже существует, передавай ещё и `project`, иначе платформа заведёт новый."
  2. Changed1 schema field changed
    • addedInput schema / $defs / FilePayload / properties / encoding
      Added value: +{
      +  "default": "text",
      +  "description": "Use `base64` for binary files — images, fonts, favicons. Text files (html/css/js/svg) stay `text`. A binary sent as text is silently corrupted.",
      +  "enum": [
      +    "text",
      +    "base64"
      +  ],
      +  "title": "Encoding",
      +  "type": "string"
      +}
  3. Added

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is rich in behavioral caveats beyond the minimal `openWorldHint` annotation. It discloses that binary files sent as text are silently corrupted, the server does not remember the bundle between calls, and retrying a still-building deployment starts a second build. It also explains the early-return behavior with `status` and `deploy_id`, and advises following `next_action`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence carries essential information. It is front-loaded with the core purpose, then progresses logically through requirements, exclusions, state behavior, project mapping, and return semantics. No filler or redundancy; each paragraph earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description is remarkably complete. It covers file limits and constraints, encoding pitfalls, build-step exclusions, statelessness, project handling, and asynchronous return behavior. The presence of an output schema does not reduce the need for this behavioral detail, and the description fully satisfies that need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though the schema already covers all parameters (100%), the description adds critical semantics: `project` determines whether to create or reuse a project, `files` must contain actual current file contents because the server has no memory, and the encoding requirements for binary files are reinforced. This goes well beyond the baseline 3 for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement: 'Publish a site to Layero — from here, with no terminal.' It further clarifies that it accepts any ready static bundle, not just generated landings, and explicitly positions it as the answer to 'deploy my site', distinguishing it from sibling tools like compose_landing or diagnose_deploy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use and when-not-to-use guidance. It states that projects requiring a build step (Vite, Next, Astro) do NOT belong here, and directs users to publish the build output or use `npx layero@latest deploy` instead. It also explains when to pass `project` (republishing the same landing) versus when to omit it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct resource and action. The deploy lifecycle is cleanly separated into cancel, retry, rollback, diagnose, logs, list, and status, while the site_* tools each answer a different question. Even the two compose_landing tools are explicitly differentiated for model vs. internal use.

Naming Consistency3/5

Tool names mix verb-first patterns (check_domain, list_deploys, connect_analytics) with noun-first patterns (site_issues, deploy_logs, env_vars), and some are bare verbs (rollback, whoami). The naming is descriptive and readable, but not consistent enough to predict the style for a new tool.

Tool Count2/5

27 tools exceeds the typical well-scoped range and pushes into 'too many' territory. While the server covers a broad platform scope, many tools are highly specialized (check_copy, site_screenshot), and an agent may be overwhelmed by the sheer number of choices. Consolidation could reduce the load.

Completeness4/5

The core lifecycle is solid: compose, publish, monitor, diagnose, and rollback, with supporting tools for domains, analytics, performance, and content inspection. However, there are no delete/remove operations for projects, domains, or integrations, and integration management is limited to adding. These are minor gaps that agents can work around, but they are notable for a full platform.