Skip to main content
Glama

Propose a multi-file change (published for review)

propose_files

Propose multi-file changes (create, edit, rename, delete) as one atomic set for review in Galley; lands all-or-nothing on approval.

Instructions

Proposes a change set across MULTIPLE files as ONE atomic proposal — create new files, edit existing ones, rename/move them (rename also moves into a folder), or delete them (e.g. add chapters/intro.typ and #include it from main.typ). It never changes the project directly: the set is published for review — if this project has agent auto-accept armed it may apply automatically (the response says status "applied"), otherwise it awaits a human Accept in Galley. Inspect the returned status to know what happened; the whole set lands all-or-nothing. For edit ops each search must match that file's current text exactly once; failures come back as structured data — refine and retry. Delete is a recoverable soft-delete. Paths must be safe in-tree project paths (leading slash, no traversal, not under /.galley). For binary files you may either inline the bytes (create-binary, base64) or, when the source already lives on the machine running the Galley kernel, reference it by ABSOLUTE local path (create-binary-path) so no base64 transfer is needed — both publish the same content-addressed pointer. A single proposal is capped at 32 ops (with aggregate size limits); to change more files, split the work across multiple sequential propose_files calls — each is reviewed and lands independently (there is no import-group transaction spanning proposals).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
opsYesThe file operations — applied all-or-nothing on Accept.
requestYesA short human-readable title for the whole change set (shown in the review card).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses that the proposal is published for review rather than applied directly, may auto-apply, returns a status to inspect, lands all-or-nothing, requires exact-once matches for edits, uses recoverable soft-delete for deletions, imposes safe-path constraints, and has no cross-proposal transaction.

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 earns its place because the tool is genuinely complex with six operation kinds and several behavioral caveats. The core purpose is front-loaded in the first sentence, and constraints are grouped logically rather than buried.

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?

Despite having no output schema, the description tells the agent what to inspect after the call (status), what failure looks like (structured data), and all key behavioral outcomes. Combined with the detailed input schema, an agent has enough context to invoke this tool correctly and react to its results.

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?

Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it explains atomicity, the review workflow, exact-match edit semantics, soft-delete behavior, binary transfer alternatives, path safety requirements, and the 32-op cap. This materially helps an agent choose correct parameter values and interpret results.

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 states a specific verb and resource: it 'Proposes a change set across MULTIPLE files as ONE atomic proposal' and enumerates the supported operations. This clearly differentiates it from the single-file sibling propose_edit without needing to inspect that tool.

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 gives clear use context: it is for multi-file atomic proposals, and it explicitly instructs splitting work across multiple sequential calls when the 32-op cap is exceeded. However, it never explicitly names propose_edit as the single-file alternative or states when not to use this tool, so it falls short of full exclusion guidance.

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