Skip to main content
Glama

Publish site

deploy
Destructive

Publishes a new static site or version. New: every file, or a template. Update: site and base_revision with every file, or patch: true with changed files and deleted paths.

Input Schema

NameRequiredDescriptionDefault
siteNo
filesNo
patchNotrue: only the changed files
deletedNopatch: paths to remove
previewNotrue: save a private preview, not live
stagingNo
templateNoTemplate, e.g. "brasa" (files sent replace its paths)
workspaceNoNew sites: workspace id or name, or "private"
site_tokenNoFrom an anonymous deploy (secret)
base_revisionNoUpdate: the live revision id last read
confirm_tokenNo
idempotency_keyNoNew sites: a UUID (retries replay)

Output Schema

NameRequiredDescriptionDefault
siteNo
revisionNo
claim_urlNo
site_tokenNo
agent_messageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"New sites: a UUID; a retry replays the result"New value: +"New sites: a UUID (retries replay)"
  2. Changed4 schema fields changed
    • addedInput schema / properties / base_revision / description
      Added value: +"Update: the live revision id last read"
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"New sites: a random UUID; a retry with the same files replays the result"New value: +"New sites: a UUID; a retry replays the result"
    • addedInput schema / properties / site_token / description
      Added value: +"From an anonymous deploy (secret)"
    • changedInput schema / properties / workspace / description
      Previous value: -"New sites: workspace id or name, or \"private\" (omitted with several, the reply asks)"New value: +"New sites: workspace id or name, or \"private\""
  3. Changed1 schema field changed
    • changedInput schema / properties / workspace / description
      Previous value: -"New sites: workspace id or name, or \"private\"; omitted with several places, the reply asks which"New value: +"New sites: workspace id or name, or \"private\" (omitted with several, the reply asks)"
  4. Changed4 schema fields changed
    • addedInput schema / properties / confirm_token
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / site / description
      Removed value: -"Site name"
    • removedInput schema / properties / site_token / description
      Removed value: -"From the first deploy (no account)"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "agent_message": {
      +      "type": "string"
      +    },
      +    "claim_url": {
      +      "type": "string"
      +    },
      +    "revision": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "number": {
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "site": {
      +      "properties": {
      +        "name": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "site_token": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Changed13 schema fields changed
    • changedInput schema / properties / deleted / description
      Previous value: -"patch only: paths to remove"New value: +"patch: paths to remove"
    • changedInput schema / properties / files / items / properties / encoding / description
      Previous value: -"utf8 (default) for text, base64 for images and other binaries"New value: +"utf8 (default), or base64 for binaries"
    • changedInput schema / properties / files / items / properties / path / description
      Previous value: -"Relative path, e.g. index.html or assets/app.js"New value: +"e.g. img/a.png"
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"New sites: a fresh random value (e.g. a UUID); a retry with the same key and files replays the first result"New value: +"New sites: a random UUID; a retry with the same files replays the result"
    • removedInput schema / properties / idempotency_key / maxLength
      Removed value: -128
    • changedInput schema / properties / patch / description
      Previous value: -"true: files are only the changed ones"New value: +"true: only the changed files"
    • addedInput schema / properties / preview
      Added value: +{
      +  "description": "true: save a private preview, not live",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / site / description
      Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
    • changedInput schema / properties / site_token / description
      Previous value: -"site_token from the first deploy (anonymous sites only)"New value: +"From the first deploy (no account)"
    • addedInput schema / properties / staging
      Added value: +{
      +  "type": "boolean"
      +}
    • changedInput schema / properties / template / description
      Previous value: -"Template name, e.g. \"brasa\": its files become the site (files given replace those paths); then patch-deploy edits"New value: +"Template, e.g. \"brasa\" (files sent replace its paths)"
    • changedInput schema / properties / workspace / description
      Previous value: -"New sites: this workspace (id or name from get_account) or \"private\" (the person's own personal site). Omitted: the only place the site can go; when it could be personal or in a workspace (or one of several), nothing is published and the reply asks the user which"New value: +"New sites: workspace id or name, or \"private\"; omitted with several places, the reply asks which"
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": {},
      -  "properties": {
      -    "agent_message": {
      -      "type": "string"
      -    },
      -    "confirm_token": {
      -      "type": "string"
      -    },
      -    "error": {
      -      "description": "On failure (isError): {code, message}"
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  6. Changed1 schema field changed
    • changedInput schema / properties / workspace / description
      Previous value: -"New sites: this workspace (id or name from get_account) or \"private\" (the person's own private site). Omitted: the only paid workspace, else private; required when the person is in several"New value: +"New sites: this workspace (id or name from get_account) or \"private\" (the person's own personal site). Omitted: the only place the site can go; when it could be personal or in a workspace (or one of several), nothing is published and the reply asks the user which"
  7. Changed3 schema fields changed
    • removedInput schema / properties / folder
      Removed value: -{
      -  "description": "With upload: target folder (default images)",
      -  "type": "string"
      -}
    • removedInput schema / properties / upload
      Removed value: -{
      -  "description": "With site: a 1-hour upload link for the user instead of deploying; get_site lists the files after",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / workspace / description
      Previous value: -"New sites: this workspace (id or name from get_account) or \"private\" (a private site of your own). Omitted: the only paid workspace, else private; required when you are in several"New value: +"New sites: this workspace (id or name from get_account) or \"private\" (the person's own private site). Omitted: the only paid workspace, else private; required when the person is in several"
  8. Changed1 schema field changed
    • changedInput schema / properties / workspace / description
      Previous value: -"New sites: this workspace (id or name from get_account) or \"private\" (your own account). Omitted: the only paid workspace, else your own account; required when you are in several"New value: +"New sites: this workspace (id or name from get_account) or \"private\" (a private site of your own). Omitted: the only paid workspace, else private; required when you are in several"
  9. Changed1 schema field changed
    • changedInput schema / properties / workspace / description
      Previous value: -"New sites: create it in this workspace (id or name from get_account)"New value: +"New sites: this workspace (id or name from get_account) or \"private\" (your own account). Omitted: the only paid workspace, else your own account; required when you are in several"
  10. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so safety burden is partly covered. The description adds behavioral context by implying that an update requires base_revision (a concurrency guard) and that patch mode needs deleted paths, but it never states that publishing overwrites the live site, how conflicts are handled, or what preview/staging do. It does not contradict the annotations.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action, and zero filler. The telegraphic 'New: ... Update: ...' phrasing is dense but readable, though a couple of fragments are cryptic enough to cost a point.

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?

For a 12-parameter destructive publish tool with an output schema present, the description covers the mode selection that actually determines whether a call succeeds. The remaining gaps (auth requirements, conflict semantics on base_revision mismatch) are genuine but modest given annotations and an output schema. If strict, a 4 could be argued, but the mode routing is the load-bearing information and it is present.

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

Parameters4/5

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

With 12 parameters and only 67% schema coverage, the description earns credit for tying parameters into coherent bundles ('Update: site and base_revision', 'patch: true with changed files and deleted paths'), which the schema does not express. It leaves patch/preview/staging/workspace/site_token/confirm_token relationships largely unexplained, so it is not a 5.

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

Purpose4/5

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

States a specific verb and resource ('Publishes a new static site or version') and splits the operation into New vs Update modes, which is more precise than the title 'Publish site'. It does not name any sibling (rollback, list_versions, delete_site) to differentiate itself, so it falls short of a 5.

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

Usage Guidelines4/5

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

Gives explicit conditional guidance for choosing between invocation modes: 'New: every file, or a template' and 'Update: site and base_revision with every file, or patch: true with changed files and deleted paths.' That is real when-to-use guidance, but it is scoped to internal modes and says nothing about when to prefer this over rollback, preview_as_user, or list_versions.

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.

Resources