Skip to main content
Glama

Plan Photo Edits

plan_photos

Several listing photos at once: one plan of photo steps (straighten, enhance, sky, lawn, staging, declutter…) with one total and one confirmation, instead of a confirm per photo. The first call runs nothing: it returns each step's cost, the total and a confirmationCode, and the Pixly card shows the plan with one button. After the user says yes in the chat, call again with only confirmationCode: it starts every step whose photo is ready and returns their jobs (poll with get_job jobIds). Steps that work on an earlier step's result start when you call again with the same confirmationCode once that result is completed. Only for photos; videos have their own tools.

Input Schema

NameRequiredDescriptionDefault
stepsNoWhat to do, step by step
photosNoEvery photo of the set, in order; steps refer to them by number (from 1)
listingIdNoA property folder (from list_listings or create_listing) to put the result in. Results of a photo that is already in a folder go there by themselves.
confirmationCodeNoThe plan's confirmationCode — only after the user agreed to the plan. Starts the steps whose photo is ready; call again with it later to start steps that work on earlier results.

Output Schema

NameRequiredDescriptionDefault
jobsNoSeveral jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results
noteNo
typeNo
errorNo
jobIdYesPass to get_job to poll
quoteNoPresent when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm
statusYespending | processing | completed | failed — anything not completed/failed is still running
createdAtNo
resultUrlsNoPresent when completed; valid 7 days
completedAtNo
resultPathsNoStorage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result
creditsChargedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: the first call is a dry-run that returns each step's cost, the total and a confirmationCode, the card shows one button, the second call starts only steps whose photo is ready, and dependent steps require re-calling with the same code once the earlier result completes. It also points to get_job for polling. This is exactly the rich context annotations alone cannot convey.

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 core purpose is front-loaded in the first sentence, followed by the two-phase protocol. Sentences are long and clause-heavy (em-dash lists, nested conditions), which makes it dense, but nearly every clause carries required protocol information so little is wasted.

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 an output schema existing, the description still explains what each phase returns (costs, total, confirmationCode, jobs), how dependent steps sequence, and the photo-vs-video scope. For a stateful two-call batch planner this covers everything an agent needs to invoke it correctly.

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, and the description earns above it by giving operational meaning to confirmationCode (gates the run, reused to trigger dependent steps) and to the steps array as an ordered plan. The dry-run-then-confirm semantics of confirmationCode are the added value the schema alone does not spell out.

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?

Names a specific verb+resource (plan photo edits across several listing photos) and states the key differentiator: one plan with one total and one confirmation rather than a confirm per photo. It also draws a clean boundary against video tools, so an agent can distinguish it from the single-step siblings like straighten_photo or enhance_photo.

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 explicit call-timing rules: the first call runs nothing and returns costs plus a confirmationCode, and the second call (only confirmationCode) starts the steps. It also states the photos-only restriction. It stops short of naming the single-edit siblings as the alternative path, so the routing guidance is clear but not fully explicit about when to prefer them.

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