Skip to main content
Glama

Publish pages

publish_pages
Destructive

Use this tool when the user asks to publish several pages at once: 「全部公開して」「このガイドページをまとめて公開して」, "publish these 20 pages", "make the new FAQ pages live" (ページの一括公開, ホームページ, Webサイト, ランディングページ).

Publishes the latest saved version of each page (siteIds, up to 10 per call) at its live URL, in two calls:

  1. dryRun: true publishes nothing. Per page it gives the live URL, the publish check's warnings, and a status: ready, already_live, or blocked (with the reason). headroom has the plan's room left, and confirmToken works for these same pages for a short time (until expiresAt).

  2. The real call takes the same siteIds and that confirmToken; without a valid token nothing is published (confirm_token_required, confirm_token_invalid), and a page saved after the dry run refuses the token (pages_changed): run the dry run again and show the user what changed. It is the step for after the user has seen the dry run and asked to publish. Per page the status is published, already_live, failed (with the reason), or limit_reached: a plan limit stopped the batch there, and the pages before it are live. summary counts each status. Like publish_site in production, the real call changes what anyone on the internet sees. idempotencyKey: a new id per batch; the same call sent again with the same key and token, after a timeout, returns the batch already run. A bigger job runs as several calls of up to 10 pages each, each with its own dry run. Every answer names the workspace (brand.id, name, host); with expectedBrandId, a connection that now works on another workspace changes nothing (brand_mismatch).

Input Schema

NameRequiredDescriptionDefault
dryRunNotrue: check the pages and get a confirmToken; nothing is published
siteIdsYesThe pages' ids (get_brand or list_pages)
confirmTokenNoThe confirmToken from a dry run of the same siteIds; the real call needs it
idempotencyKeyNoA new id for this batch, such as a UUID; the same one again only to retry
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

Output Schema

NameRequiredDescriptionDefault
brandYes
pagesYes
dryRunYes
summaryYes
guidanceNo
expiresAtNo
confirmTokenNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / expectedBrandId / description
      Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations (destructiveHint, openWorldHint) by spelling out that the real call changes what anyone on the internet sees, that dryRun publishes nothing, token expiry via expiresAt, plan headroom, per-page statuses, and error codes (confirm_token_required, confirm_token_invalid, pages_changed, brand_mismatch, limit_reached). The idempotencyKey guidance is consistent with idempotentHint=false, since retry safety requires an explicit key.

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?

Front-loaded with the trigger and organized as a numbered two-step flow, which is the right structure for this tool. It is dense and mostly earns its length, but some parameter wording duplicates the schema nearly verbatim and the parenthetical keyword lists add clutter.

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?

An output schema exists, yet the description still gives enough on statuses and summary counts for an agent to interpret results and retry correctly. With annotations covering the safety profile, nothing material is missing for a destructive, open-world batch publish.

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?

Schema coverage is 100% and the schema descriptions already cover dryRun, confirmToken, idempotencyKey and expectedBrandId, so much of the description's parameter text is reinforcing rather than additive. It still adds genuine meaning the schema lacks: token lifetime and the pages_changed refusal rule, plus the per-status behavior of limit_reached.

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?

States a specific verb and resource with scope ('publish several pages at once'), and contrasts itself with the sibling publish_site ('Like publish_site in production, the real call changes what anyone on the internet sees'). Real user utterances in Japanese and English make the intended trigger unmistakable.

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?

Explicitly says when to use it (batch publish requests), that a dry run must precede the real call, and what to do when the token is refused (pages_changed: rerun the dry run). It also states the batching rule for larger jobs (several calls of up to 10 pages, each with its own dry run).

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.