Skip to main content
Glama

layouts_push

Idempotent

Deploy layout and asset files from a local tree to Voog by reading manifest.json and PUTting each file to its mapped endpoint. Ensures byte-exact .js/.css uploads, avoiding JSON escape decoding issues.

Instructions

Read manifest.json + tracked files from target_dir and PUT each to the endpoint its manifest type maps to: type=layout → /layouts/{id} {body}, type=asset (legacy: layout_asset) → /layout_assets/{id} {data}. Optional files=["javascripts/app.js", ...] filter pushes only the named relative paths; files=null (or omitted) pushes every manifest entry. THE BYTE-EXACT WAY to deploy a .js/.css asset: content is read from disk here, whereas a string passed to layout_asset_update crosses a JSON boundary that decodes literal \uXXXX escapes in the source (issue #138). A PUT that returns 200 without persisting is reported as a failure, not a ✓. Returns per-file success/failure breakdown; missing files and PUT errors are captured per-entry and do not abort the remaining pushes. Recommended pre-flight: site_snapshot for full backup before a mass push.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
siteYesSite name from voog_list_sites
filesNoOptional list of relative paths to push (e.g. 'layouts/default.tpl'). Null/omitted = push all manifest entries.
target_dirYesAbsolute path of a previously-pulled tree (must contain manifest.json)
Behavior5/5

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

The description discloses rich behavioral details beyond the annotations: content read directly from disk (avoiding JSON boundary decoding), files filter semantics, 200-without-persisting reported as failure, per-entry error capture without aborting the batch, and return breakdown. No contradiction with annotations (idempotentHint=true, readOnlyHint=false, destructiveHint=false).

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?

The description is dense but well-organized, front-loading the core action, then filter behavior, critical warning, error handling, and pre-flight recommendation. A few sentences are long with embedded details, but each earns its place. Slightly tighter formatting would improve readability.

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

Completeness4/5

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

With no output schema, the description compensates by explaining the per-file success/failure breakdown and non-aborting error handling. It also mentions the pre-flight snapshot. Minor gaps remain (e.g., exact response format, how IDs are resolved from manifest), but overall it is complete enough for a deployment tool of moderate complexity.

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?

The input schema already covers all 3 parameters with descriptions (100% coverage). The description adds meaningful semantics: files=null/omitted means 'push all manifest entries', target_dir must contain manifest.json, and clarifies how file content is handled relative to layout_asset_update. This exceeds the baseline for high 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 clearly states the tool reads manifest.json and tracked files from target_dir and PUTs each to the type-mapped endpoint (layout or layout_asset), with explicit endpoint mapping. This specific verb+resource+scope distinguishes it from siblings like layouts_pull and layout_asset_update.

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?

The description explicitly positions this as the 'BYTE-EXACT WAY' to deploy JS/CSS assets, contrasting with layout_asset_update's JSON decoding issue. It also recommends site_snapshot as a pre-flight. However, it doesn't provide comprehensive when-to-use/when-not-to-use guidance for all sibling tools.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/runnel/voog-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server