Skip to main content
Glama

Change how the pages look, through the print rules, and see them.

set_style
Idempotent

Changes any line of the book’s style file, for every page or for one person, and returns what was set, what a print rule changed with its reason, what was refused with its reason, and pictures of the pages as they now print. A path is a part and a property, such as codes.size_mm, codes.align, words.size_pt, heading.italic, photo.grayscale, ink or margins_mm.top. A smaller code on the right, for the voice note only, is [{path:"codes.size_mm",value:15},{path:"codes.align",value:"right"},{path:"codes.which",value:"voice"}]. Green ink on Niamh’s pages only is [{path:"ink",value:"#1F4D2B",person:"Niamh"}]. reset: true takes every change off and goes back to the standard page.

Input Schema

NameRequiredDescriptionDefault
bookYesThe book’s handle.
resetNotrue takes every change off, back to the standard page, before the listed changes apply.
changesNoEach change: path (a part and a property, as the style file lists them), value, and person when it is for one person’s pages only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / book / description
      Previous value: -"The handle start_book gave you."New value: +"The book’s handle."
    • changedInput schema / properties / changes / description
      Previous value: -"Each change: path (a part and a property, as get_style lists them), value, and person when it is for one person’s pages only."New value: +"Each change: path (a part and a property, as the style file lists them), value, and person when it is for one person’s pages only."
    • changedInput schema / properties / reset / description
      Previous value: -"true takes every change off, back to the September page, before any changes listed."New value: +"true takes every change off, back to the standard page, before the listed changes apply."
  2. Added

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered; the description adds real value beyond that by disclosing that the call may be partly refused (with a reason) and that print rules can override a requested value (with a reason). It also states the response includes rendered page images, which no structured field conveys. Minor gap: it does not say what reset does to previously applied per-person overrides.

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

Conciseness3/5

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

The response-contract sentence is front-loaded and earns its place, and the two JSON examples are dense but useful. However, the framing sentence for the second example ("A smaller code on the right, for the voice note only") is confusing and obscures what the example actually demonstrates, and the examples are not labelled by purpose, so the reader must decode them.

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?

There is no output schema, and the description correctly fills that gap by describing all four return elements (applied values, print-rule overrides with reasons, refusals with reasons, rendered page images). For a three-parameter mutation tool with full annotation coverage and full schema coverage, the remaining omission is only the exhaustive set of valid paths.

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%, so the baseline is 3, but the nested change object's path field carries no format description in the schema and the description supplies the missing DSL semantics with concrete examples (codes.size_mm, words.size_pt, heading.italic, ink, margins_mm.top) and shows how person scopes a change to one person's pages. The list is illustrative ("such as") rather than exhaustive, so an agent still has to guess at valid parts.

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?

"Changes any line of the book's style file, for every page or for one person" gives a specific verb and resource plus the two scoping modes, which is enough to tell it apart from the read-side sibling get_style and from preview_pages. It stops short of explicitly naming those siblings, so it is clear but not maximally differentiated.

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

Usage Guidelines2/5

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

The description explains what can be changed and that reset returns to the standard page, but never states when to use this versus get_style (read the current style) or preview_pages (see the result), nor any prerequisite such as needing the book handle first. Usage is only implied by the field examples.

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