Skip to main content
Glama
utilitlyPDF

@utilitly/mcp

by utilitlyPDF

Rotate pages

rotate_pdf

Rotates PDF pages clockwise by multiples of 90 degrees, including selected pages, and writes the output to a new file while keeping the original unchanged.

Instructions

Turns pages clockwise by a multiple of 90 degrees (negative turns counter-clockwise), every page unless pages is given. Named with -rotated. Writes the result as a new file next to the input (or to output_path) and never replaces an existing file; the input is left unchanged.

Input Schema

NameRequiredDescriptionDefault
pathYesAbsolute path to a PDF file, or one starting with ~/.
angleYesDegrees clockwise: 90, 180, 270, or -90 for counter-clockwise
pagesNoPages, such as "2", "1-3, 5" or "4-end". Commas separate parts. Every page when left out.
output_pathNoOptional absolute path for the new PDF, ending in .pdf. It must not exist yet. By default the result goes next to the input.

Output Schema

NameRequiredDescriptionDefault
pagesYesPages in the new PDF
output_pathYesWhere the new PDF was written

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: output is written to a new file (input-rotated by default or output_path), existing files are never overwritten, and the input is unchanged. This directly corroborates destructiveHint=false and readOnlyHint=false rather than contradicting them.

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?

Front-loads the core action, then the scoping default, then the output/non-destructive behavior in a tight multi-clause structure. No filler sentences; every clause carries usable information.

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?

With annotations and an output schema present, the remaining burden is behavioral disclosure of the write path, which the description fully covers (new file, no overwrite, input preserved). Nothing an agent needs in order to call it safely is missing.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents angle direction, page-range syntax, and output_path constraints. The description restates the defaults (every page, result next to input) but adds no syntax or edge-case detail beyond the schema, so baseline 3 applies.

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 (turns pages clockwise by multiples of 90 degrees) plus the default scope (every page unless pages is given). Rotation is clearly distinct from all listed siblings (info, merge, split, extract, delete, reorder, duplicate).

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 clear operational context: the default is all pages, angles may be negative for counter-clockwise, and the result goes to a new file. It doesn't name a when-not condition or an alternative tool, but no sibling actually overlaps with rotation, so little is left ambiguous.

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