Skip to main content
Glama

frame

Straighten, crop, rotate, flip, and correct perspective in photos while measuring remaining tilt or keystone and reporting auto fixes; returns the framed preview.

Instructions

Compose the picture: straighten, perspective correction, crop, rotate and flip.

Only the fields you pass change. Every call measures the straight lines under the new framing and reports any remaining tilt or keystone, with the auto correction that would fix it. Returns the framed preview. Call with reset_framing=true and no other fields to look at the whole uncropped photo.

Input Schema

NameRequiredDescriptionDefault
autoNoMeasure straight lines and correct automatically, like Lightroom Upright: 'level' straightens the horizon (or the verticals if there is no horizon); 'vertical' also fixes converging verticals (architecture); 'full' also fixes horizontal perspective. Fields you pass explicitly win.
gridNoOverlay a grid on the returned preview, to check level and verticals by eye.
aspectNoCrop aspect ratio (width:height). 'original' keeps the photo's own ratio. 65:24 is XPan panoramic. Default 'original'. One of: original, 3:2, 2:3, 4:3, 3:4, 1:1, 4:5, 5:4, 16:9, 9:16, 65:24, 1.85:1, 2.39:1.
crop_xNoHorizontal centre of the crop, 0 = as far left as possible, 1 = as far right. Range 0.0 to 1.0. Default 0.5.
crop_yNoVertical centre of the crop, 0 = as far up as possible, 1 = as far down. Range 0.0 to 1.0. Default 0.5.
flip_hNoMirror left-right. Default False.
flip_vNoMirror top-bottom. Default False.
rotateNoRotate in 90° steps, clockwise. Default '0'. One of 0, 90, 180, 270.
crop_zoomNoHow tight the crop is: 1 = the largest crop of that aspect ratio, 2 = half the width and height. Range 1.0 to 5.0. Default 1.0.
straightenNoLevel the horizon. Positive rotates the picture clockwise. The frame zooms in automatically so no empty corners show. Range -45.0 to 45.0. Default 0.0.
perspective_hNoPositive widens the right side: corrects a subject shot at an angle from the left. Range -100.0 to 100.0. Default 0.0.
perspective_vNoKeystone correction. Positive widens the top: straightens verticals that converge upward when shooting up at buildings. Range -100.0 to 100.0. Default 0.0.
reset_framingNoClear all framing (back to the full, unrotated photo) before applying the given fields.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations at all, the description carries the full behavioral burden and mostly succeeds: it discloses the partial-update semantics, that every call re-measures straight lines and reports residual tilt or keystone with a suggested auto correction, and that it returns a framed preview. It does not say whether the framing is non-destructive to the source image or what error conditions look like, which are notable gaps for a 13-parameter mutation tool.

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?

Four short sentences, front-loaded with purpose, then behavior, then the reset recipe. The measurement sentence is the densest but earns its place because the returned diagnostic report is not obvious from the name. Minor redundancy in restating that every call re-measures under the new framing.

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?

For a 13-parameter tool with no annotations and no output schema, the description covers what changes, what the response contains (framed preview plus a tilt/keystone report), and one important invocation pattern. It falls short only on non-destructiveness and failure behavior, which an agent would want before chain-calling with undo and export.

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 description coverage is 100%, so the schema already explains every parameter in detail, including ranges, defaults, and what auto levels mean. The description adds little beyond restating that only passed fields change and describing the reset_framing-plus-nothing invocation pattern. Baseline 3 is appropriate when the schema does this much work.

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?

The description opens with a specific verb and resource set: 'Compose the picture: straighten, perspective correction, crop, rotate and flip.' That enumerates exactly which geometric operations the tool owns, which implicitly separates it from siblings like develop (tone/color) and loupe (viewing). It never explicitly names those siblings, so the differentiation is inferred rather than stated.

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?

'Only the fields you pass change' establishes this as a partial-update tool, and 'Call with reset_framing=true and no other fields to look at the whole uncropped photo' gives a concrete invocation recipe. What is missing is any explicit routing against alternatives (e.g., when to use this versus develop or compare), so an agent must infer the boundary from the operation list.

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