Skip to main content
Glama

Server Details

Every visual AI tool for property listings — staging, enhancement, decluttering, cinematic video.

Ownership verified
Status
Healthy
Uptime
99.8% over 57 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 31 tools

Disambiguation4/5

Each tool has a distinct primary action, but the large editing family contains adjacent tools (virtual_staging vs edit_staged_photo vs restyle_room; touch_up_exterior vs replace_sky/replace_lawn) whose boundaries must be read carefully from descriptions. The video tools are similarly close (cinematic_motion, photo_to_video, flythrough_video, before_after_reel) but are largely separable by input requirements.

Naming Consistency4/5

Most names follow a snake_case verb_noun pattern (remove_furniture, replace_sky, draw_floor_plan, get_job), with minor deviations like upscale_hd and touch_up_exterior. Several names are noun phrases rather than verb_noun (cinematic_motion, virtual_staging, day_to_night, photo_to_video, before_after_image), which slightly breaks the pattern but remains predictable.

Tool Count2/5

31 tools is well beyond the recommended 3-15 range and places a heavy selection burden on the agent, even though the domain is broad. While many tools are distinct and earn their place, the surface is large enough that accidental misuse is likely.

Completeness4/5

Coverage is broad and professional: staging, decluttering, furniture removal, sky/lawn/season edits, floor plans, video, credits, uploads, library listing, watermarking and blurring. Minor gaps exist (no library deletion, no job cancellation, no explicit batch workflow), but agents can work around them.

Available Tools

35 tools
before_after_imageBefore & After ImageInspect

Free (no credits): one comparison image from a before and an after photo of the same place — e.g. an empty room and its virtual staging, a daylight shot and its dusk version, a room before and after a restyle. Side by side, stacked, or split by a line; original shape, square, 4:5 or 9:16. Write the labels in the user's language. Returns a finished image at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
aspectNoShape of the image: original (follows the photos), 1:1 square, 4:5 Instagram post, 9:16 Stories/Reels.original
labelsNoShow the Before / After labels.
layoutNoside = next to each other, stack = one above the other, vsplit = one frame split by a vertical line, diagonal = split by a slanted line.side
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.
afterLabelNoLabel text for the after photo, in the user's language (default "After").
afterR2PathNoStorage path of the after photo — the alternative to afterImageUrl.
beforeLabelNoLabel text for the before photo, in the user's language (default "Before").
beforeR2PathNoStorage path of the before photo — the alternative to beforeImageUrl. For a Pixly result, its original photo is the job's source.
afterImageUrlNoThe AFTER photo (e.g. the staged room, the dusk version). Public https URL or data: URI; or afterR2Path.
beforeImageUrlNoThe BEFORE photo (e.g. the empty room, the daylight shot). Public https URL or data: URI; or beforeR2Path.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
before_after_reelBefore & After VideoInspect

Before and after video: animate a before→after transformation (e.g. empty room → staged, or a renovation, or a daylight photo → its Day to Night version with videoIntent day_to_night) into a social-ready reveal reel from two photos. Both photos are required. Only have one? Make the other first with a photo tool — virtual_staging (empty room → furnished), remove_furniture (furnished → empty), day_to_night, restyle_room, makeover_exterior and the other edit tools — and pass its result as afterImageUrl (or beforeImageUrl). Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoVideo shape. original (default) keeps the photos' own shape; 9:16, 16:9 or 1:1 crop both photos, centred, to that shape first.original
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.
afterR2PathNoR2 path of the end frame — the alternative to afterImageUrl.
revealStyleNoHow the transformation is revealedsmooth
videoIntentNostaging_reveal: an empty room becoming a furnished one (or a renovation). day_to_night: Before is a daylight photo and After its dusk version (a Pixly Day to Night result and its original) — the video turns day into the lit evening; revealStyle does not apply.staging_reveal
beforeR2PathNoR2 path of the start frame — the alternative to beforeImageUrl.
afterImageUrlNoEnd frame (e.g. the staged result) — https URL or data: URI
beforeImageUrlNoStart frame (e.g. the empty room photo) — https URL or data: URI
durationSecondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
blur_faces_platesBlur Faces & PlatesInspect

Free (no credits): find and blur people's faces and car licence plates in property photos before they're posted — street and exterior shots, open houses. Automatic detection, 1–5 photos per call. Says so when nothing is found.

ParametersJSON Schema
NameRequiredDescriptionDefault
facesNo
styleNoblur
photosYesThe photos, 1–5. Each item takes imageUrl or r2Path.
platesNo
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
cinematic_motionCinematic MotionInspect

Photo to video: turn a single listing photo into a short cinematic real estate video with a professional camera move (zoom, orbit, fly-through, crane up…). No second frame needed. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoVideo shape. original (default) keeps the photo's own shape; 9:16 or 16:9 crop the photo, centred, to that shape before it is animated.original
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
directionNoThe direction the camera travels, for the moves that have one (orbit, pan, drone-orbit). 'left-to-right' sends the camera rightward, 'right-to-left' leftward. Ignored by every other move; omit to use the move's own default.
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.
cameraMoveNoCamera-move presetzoom
durationSecondsNoClip length in seconds. Leave out for the default 5 s; 10 s costs about twice as much — use it only when the user asks for a longer video.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
create_listingNew Property FolderInspect

Create a property folder before work on a whole property (a set of listing photos, a walkthrough). Ask the user once which property it is and pass that as title; if they skip, leave title out. Pass the returned listingId to the tools so their results land in it. Costs nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoThe property in the user's words, e.g. "12 Oak St" — leave out if they skipped the question
create_upload_ticketUpload a Local PhotoAInspect

Get a presigned upload URL for a LOCAL image file — the one case a URL can't cover. PUT the file to uploadUrl with the same Content-Type, then pass the returned r2Path to a generation tool instead of imageUrl. Ticket expires in 1 hour.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesOriginal filename, used for the extension
sizeBytesNoExact byte size of the file. Recommended: when given it is signed into the URL, so the upload is bounded server-side.
contentTypeYesMIME type the PUT request will send

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=false, destructiveHint=false), the description adds useful behavioral details: the ticket expires in 1 hour, the upload requires matching Content-Type, and the returned r2Path is used in place of imageUrl. No contradictions with annotations.

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?

Three sentences, each earning its place: the local-file use case, the exact upload workflow, and the expiration caveat. The key differentiator (LOCAL) is front-loaded and the instructions are immediately actionable.

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 no output schema, the description compensates by naming the critical return fields (uploadUrl, r2Path) and explaining how to use them. It also covers the lifecycle (1-hour expiry), the required PUT behavior, and the integration with generation tools—everything an agent needs to invoke the tool correctly.

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 filename, sizeBytes, and contentType are already documented. The description reinforces the 'same Content-Type' requirement, which is helpful context for using contentType, but it doesn't add substantial meaning beyond the schema.

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 clearly states the tool's purpose: 'Get a presigned upload URL for a LOCAL image file.' It also distinguishes it from the URL-upload sibling by calling out 'the one case a URL can't cover,' and names the relevant output fields (uploadUrl, r2Path) so an agent immediately knows what this tool produces.

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 provides explicit use context: this is for LOCAL files, not URLs, and it gives a step-by-step flow (PUT to uploadUrl with same Content-Type, then pass r2Path to a generation tool). It stops short of naming the sibling tool upload_image_from_url as the alternative, but the 'URL can't cover' phrase effectively routes the agent.

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

day_to_nightDay to NightInspect

Day to dusk (virtual twilight): turn a daytime listing photo into a magazine-style evening scene — lights on, warm glow, dusk sky — with the building and camera angle unchanged. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
declutter_photoDeclutterInspect

Remove clutter, mess, and personal items from a listing photo while keeping the room, furniture, and architecture intact. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
draw_floor_planDraw Floor PlanInspect

Free (no credits): draw a clean 2D floor plan from a layout YOU write — read the user's description, or look at their hand sketch or brochure plan, and send every room as a rectangle in metres (or feet) plus doors and windows. Returns the drawn plan (areas and dimensions on it) at once, saved so the user can fine-tune it in Pixly's floor plan editor. If the layout has problems (overlapping rooms, a door between rooms that don't touch) you get exactly what to fix — fix it and call again. To change a plan, call again with its planId and the whole updated layout; the new version is saved as its own plan and the earlier one is kept.

ParametersJSON Schema
NameRequiredDescriptionDefault
doorsNo
roomsYesEvery room as an axis-aligned rectangle. Neighbouring rooms must share the wall exactly (one's right edge = the other's left edge) and must not overlap. An L-shaped space = two rectangles joined by a doorway. Lay out a typical sensible plan when the user gives only rough sizes.
titleNoAddress or listing name for the plan's title block.
unitsNoUnits of every number below, and of the labels on the plan.m
planIdNoTo CHANGE a plan you drew before: its planId from that result, with the whole updated layout — saved as a new plan beside it (nothing is overwritten). Omit for a new plan.
windowsNo
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
edit_staged_photoEdit PhotoInspect

Change one thing in a photo and keep everything else exactly as it is — the parts the edit doesn't touch are copied from the photo, not redrawn. Works on any photo: a staged room, any Pixly result, or the user's own picture (swap the sofa, recolour a wall, remove a car, change the words on a sign). Optional mask limits the change to a marked area. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
maskNoOptional area to change: a PNG as a data:image/png;base64 URI or an https URL, the photo's shape, WHITE where the photo may change and BLACK (or transparent) everywhere else. Leave it out to let the request alone decide — that already keeps the rest of the photo.
styleNoOptional. Style id of the staging being edited (the ids virtual_staging takes). Left out, it is read from the photo's history; a photo that was never staged needs none.
r2PathNoStorage path of the photo to edit (a resultPaths entry, or an upload) — the alternative to imageUrl.
imageUrlNoThe photo to edit: a Pixly result (a resultUrls entry), the user's own photo, or any public image URL / data:image URI. Either imageUrl or r2Path is required.
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.
maskR2PathNoStorage path of a mask — the alternative to mask.
sourceJobIdNoJob the photo came from, when it is a Pixly result (lineage)
sourceResultIndexNoWhich of that job's results was edited
customInstructionsYesThe change to make, in the user's words, e.g. "make the sofa dark green", "remove the car from the driveway", "change the sign to SOLD".

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
enhance_photoEnhanceInspect

Real estate photo editing in one step: turn an amateur listing photo into a finished, professional photo (exposure, color, clarity). Returns 3 variants to pick from. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
flythrough_videoFlythroughInspect

Flythrough video: one continuous camera move through a home from 2-4 room photos in walking order. Each pair of neighbouring photos becomes a 3-second move that flies from one room into the next, and the moves are stitched into one film with a cinematic speed ramp. Returns one job: poll get_job until the film is ready (a few minutes). Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional name for the tour, e.g. the street address.
formatNoFilm shape. Omit to follow the photos (landscape photos → 16:9).
photosYesThe rooms in walking order, 2 to 4 photos (e.g. hallway → living room → kitchen). Each photo should show the doorway or opening into the next room — the camera flies through it. Each item takes imageUrl or r2Path.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
get_credit_balanceCredit BalanceA
Read-only
Inspect

The user's current Pixly credit balance and plan.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the useful context that the balance is 'current' and tied to the authenticated user, but does not disclose any additional behavior such as return format or potential errors. With annotations providing the main behavioral safety, a mid-range score is appropriate.

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 a single clear sentence with no wasted words. It front-loads the key information (credit balance and plan) and avoids any redundant detail.

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 simple read-only tool with no parameters and no output schema, the description is sufficient for an agent to know what the tool does and when to call it. It could optionally mention that this is a read-only operation, but the annotations already convey that. The only minor gap is not specifying the exact response fields, but that is not essential given the title and description.

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?

The tool has zero parameters, so there are no parameter semantics to document. The baseline for a no-parameter tool is 4, and the description appropriately focuses on what the tool returns rather than input details.

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 clearly identifies the resource being accessed: the user's current Pixly credit balance and plan. It lacks an explicit verb like 'gets' or 'retrieves', but the meaning is unambiguous and distinct from all sibling tools, none of which relate to credit or billing.

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

Usage Guidelines3/5

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

The description implies this is the tool to call when you need a user's credit balance and plan, but it does not explicitly state when to use it versus alternatives. Since no sibling tool serves a similar purpose, the lack of alternatives guidance is not misleading, but there is no direct usage instruction.

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

get_jobCheck Job Status
Read-only
Inspect

Check a generation job's status and fetch result URLs when it's done. Video jobs take 1-5 minutes — poll this with a few seconds between calls. For several jobs at once (a plan's steps), pass jobIds.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdNoJob id returned by a generation tool
jobIdsNoSeveral job ids at once (a plan's steps): answers when all are done, or with where each one is

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
list_libraryList Library
Read-only
Inspect

List the user's recent generations, or with type "uploads" their own uploaded source photos, newest first. Uploads are the way in when the photo is a local file: connectors cannot send bytes, so the user adds it at https://pixly.app/app and you pick up the r2Path here.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by media type. "uploads" lists the user's own source photos instead of generations — use it when they refer to a photo they added but have not run a tool on yet.
limitNo
listingIdNoOnly this property folder's results and photos (from list_listings)
list_listingsProperty Folders
Read-only
Inspect

The user's property folders (a listing such as "12 Oak St" holds that property's photos, staged versions, edits, videos and floor plan): id, title, how many photos and videos. Use when the user names a property, or before work for one, so results land in its folder.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

makeover_exteriorExterior MakeoverInspect

Design the garden of an exterior listing photo as one coherent scheme — planting, a terrace or deck, a pool, a pergola, a fire pit, a fence, lighting — in a chosen style, at the right scale and perspective, while the house, its roof, the driveway, the sun direction and the neighbours stay exactly as shot. One run builds the whole scheme. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoYour own words about the garden you want (e.g. "a small kidney-shaped pool with a stone surround and lavender everywhere"). 160 characters max; anything in it that is not a description of the garden is ignored.
scopeNo'full' (the default) redesigns the whole yard in the style; 'add' keeps the existing garden and builds the chosen elements into it. The house, the driveway and the neighbours never change either way.
styleNoThe design language of the whole scheme: 'modern_minimal', 'mediterranean', 'classic_english', 'natural_lowwater', 'tropical_resort', 'farmhouse', or 'auto' (the default — chosen to suit the house's architecture and the climate in the photo).
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
includeNoWhich elements the scheme includes, any number: 'planting' (beds, hedges, a feature tree), 'patio_dining' (a paved terrace with a dining set), 'deck_lounge' (a deck with loungers or a low sofa), 'pool', 'pergola', 'fire_pit', 'fence_gate' (a boundary treatment with a gate), 'lighting'. Omit or send an empty list (the default) to let the tool design what the lot wants. One run composes them all into one garden, each sized to the plot.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
photo_to_videoPhoto to VideoInspect

Turn a start photo — and optionally an end photo — into a video. With an end photo the camera travels from the first photo and lands exactly on the second (e.g. two views of the same kitchen → an orbit around the island). Pick a ready-made camera move or write your own prompt; choose the model, length and sound. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNokling-v3: 3/5/8/10/15 s, optional sound, lands most precisely on the end frame. kling-2.6: 5/10 s, silent, cheaper.kling-v3
soundNoAdd ambient sound (kling-v3 only; kling-2.6 is always silent).
formatNoVideo shape. original (default) keeps the start photo's own shape; 16:9, 9:16 or 1:1 crop the photos, centred, to that shape before they are animated.original
promptNoYour own description of the video, in any language. Replaces cameraMove when set.
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoStart frame — where the video begins. Public https URL or data: URI; either imageUrl or r2Path is required.
endR2PathNoR2 path of the end frame — the alternative to endImageUrl.
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.
cameraMoveNoReady-made camera move used when no prompt is given.smooth
endImageUrlNoOptional end frame — the camera travels from the start photo and lands exactly on this one. Best when both photos show the same space from different spots.
durationSecondsNoClip length. kling-v3 takes 3, 5, 8, 10 or 15; kling-2.6 takes 5 or 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
plan_photosPlan Photo EditsInspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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
plot_signPlot NumberInspect

Place a photorealistic 3D monument sign with your exact text (price, area, SOLD) onto a photo of an empty plot, matched to perspective and lighting. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
lookNoSign material/style; defaults server-side
textYesSign label, verbatim — a price ("$1,200,000"), area ("800 m²"), or short word ("SOLD")
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.
orientationNoLetter orientation (letter looks only); defaults server-side

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
remove_furnitureRemove FurnitureInspect

Remove furniture from a photo: empty a room and rebuild the surfaces behind what was taken out, keeping the architecture and camera angle identical — the blank canvas for restaging. By default it also removes the room's own joinery (fitted kitchen, built-in wardrobes, bathroom fixtures); mode 'movable' leaves those alone, and an optional extra takes the floor covering out too, for a full renovation strip-back. Doors always stay. (Declutter is the opposite: it keeps the furniture.) Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoHow far to strip the room. 'fitted' (the default) removes the movable contents AND the room's own joinery — the fitted kitchen and its appliances, built-in wardrobes and shelving, and bathroom sanitaryware. 'movable' removes only furniture, rugs, curtains, art, plants and lamps, leaving the kitchen, built-ins, sanitaryware, floor and doors exactly as they are.
extrasNoExtra things to take out, for a full strip-back. Only applies with mode 'fitted' and is ignored otherwise: 'floor' takes the floor covering down to bare concrete screed. Omit to keep the floor. Doors always stay, as do walls, ceiling, windows, structural openings and the camera.
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
render_floor_planFloor Plan RenderInspect

Turn a picture of any floor plan — a hand sketch, a photo of a brochure page, a blueprint, a screenshot — into a polished real-estate floor plan: a furnished top-down 2D plan with real floors and room names, or a 3D isometric cutaway. The rooms, walls, doors and windows are kept exactly as drawn; nothing is added and written dimensions are left off. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
lookNoWhich picture to make of the plan: 'furnished' (the default — a polished top-down 2D plan with real floors, furniture and room names) or 'isometric' (a 3D cutaway of the same layout, furnished, no text). The photo must show a floor plan: a hand sketch, a brochure page, a blueprint, a screenshot. The layout is kept exactly as drawn; written dimensions are left off.
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
replace_lawnLawn ReplacementInspect

Turn patchy, brown or bare grass in an exterior listing photo into a healthy green lawn, leaving driveways, paths, beds and the house untouched. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
lawnNoLawn style. 'auto' lets the tool pick a healthy lawn that suits the photo.auto
shadeNoHow green; only used with a chosen lawn style.medium
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
stripesNoMowing stripes: auto (stripes for fresh_mown and golf, none otherwise), on, off.auto
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
replace_skySky ReplacementInspect

Replace a grey, overcast or blown-out sky in an exterior listing photo with a natural clear blue sky, matching the light and keeping the building, trees and reflections unchanged. A run takes about 1–2 minutes; poll get_job until it completes. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
skyNoSky style. 'auto' lets the tool pick what suits the photo's light.auto
sunNoSun glow: auto (a glow for sunset/sunrise styles, none otherwise), on (place it with sunX/sunY), off.auto
sunXNoWith sun=on: glow position from the left edge, 0..1.
sunYNoWith sun=on: glow position from the top edge, 0..1 (kept in the top 60%).
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
reset_seasonSeasonal ResetInspect

Photograph the same property in another season: take the snow off the ground, the roof and the branches and put the garden in leaf, or move a summer shot to autumn or winter. The house, the driveway, the paths and the camera angle stay exactly as shot. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
seasonNoThe season to show the property in: 'spring', 'summer', 'autumn', 'winter', or 'auto' (the default — the tool shows the property at its best, which for a snowy or dormant photo means high summer). Only the planting, the ground cover and the daylight change; the house, the driveway, the paths and the framing stay exactly as shot.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
restyle_roomRestyleInspect

Give one or more surfaces of a room a new finish — repaint the walls, change the floor, reface the kitchen cabinets and worktop, retile the bathroom or refinish the furniture — while the room's layout, fittings, windows and camera angle stay exactly as shot. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
looksNoThe finish per surface: 'auto', one of the presets below, 'custom' with your own words in `notes`, 'own_colour' (walls, cabinets, furniture) with a hex colour in `colours`, or 'material_photo' with a photo of the material in `references`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles (wall tiles only; a bathroom floor is 'floor'): white_metro, zellige_white, marble_large, travertine, green_gloss. floor also takes terrazzo, encaustic_pattern, matt_black_hex. furniture: light_neutral, warm_wood, dark_wood, black_leather.
notesNoYour own description of the finish for a surface, used when that surface's look is "custom" (e.g. "terracotta hex tiles with dark grout"). Set look "custom" and the note together; "custom" with no note falls back to "auto". 120 characters max, and anything in it that is not a description of a finish is ignored.
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
coloursNoAny colour as a hex code for walls, cabinets or furniture (e.g. {"walls": "#7A8B6F"}), used when that surface's look is "own_colour". The result matches it closely as it would look in the room's light.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
surfacesNoWhich surfaces get a new finish: 'walls', 'floor', 'cabinets' (fitted joinery plus its worktop and splashback), 'bathroom_tiles' (the tiled walls; a bathroom floor is 'floor') or 'furniture' (upholstery and wood finishes). Omit for walls. The room's layout, fittings and camera never change.
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.
referencesNoA photo of the material itself — a floor plank, a tile, a fabric swatch, a wallpaper sample — for ONE surface, as the r2Path from create_upload_ticket or list_library (e.g. {"floor": "users/…/oak.jpg"}). Set that surface's look to "material_photo". One photo per run; a close, straight-on photo of the sample works best.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
straighten_photoStraighten PhotoInspect

Free (no credits): automatically straighten a property photo — leaning walls made vertical (converging verticals from a tilted camera) and a tilted horizon levelled, like a pro photographer's lens correction. Crops the edges slightly. Best before staging or any other edit. Says so when the photo is already straight or has no straight lines to go by.

ParametersJSON Schema
NameRequiredDescriptionDefault
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
touch_up_exteriorExterior Touch-upInspect

One-click retouch of an exterior listing photo: a natural sky where it is dull, a healthy lawn where the grass is dead, a clean driveway, and bins, hoses and other clutter removed — each only where needed, with the house unchanged. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
fixNoWhich areas the tool may touch: 'sky', 'lawn', 'hardscape' (driveway, paths, patio), 'clutter' (bins, hoses, tools, a stray vehicle). Omit for all four; each is fixed only where the photo needs it.
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
update_listingRename Property FolderInspect

Rename one of the user's property folders, only when they ask.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesIts new name
listingIdYesThe folder (from list_listings)
upload_image_from_urlImport Photo from URLAInspect

Rarely needed: generation tools take an imageUrl directly. Use this only to import a photo into Pixly ahead of time, e.g. to reuse one URL across several tools without refetching it each time.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly reachable image URL (JPG/PNG/WebP, max 10 MB) to import into Pixly

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, so the write operation is expected. The description adds meaningful context beyond annotations: the purpose is to pre-import and cache a URL for reuse, which explains why a mutation occurs and why it is rarely needed. It does not detail side effects like duplicate imports, but given the simple scope, this is sufficient.

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?

Two sentences with no wasted words. The 'Rarely needed' warning is front-loaded, and the rest explains the specific use case. Every sentence earns its place.

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 one-parameter tool with no output schema and annotations covering safety, the description is mostly complete. It explains why and when to use the tool and what it accomplishes. However, it does not mention the return value or how the imported photo can be referenced by other tools afterward, which is a minor gap given the reuse-oriented purpose.

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?

The schema description already covers 100% of the parameter, specifying it must be a publicly reachable JPG/PNG/WebP URL up to 10 MB. The description adds no further parameter-level details, so the baseline of 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?

The description clearly states the tool imports a photo into Pixly ahead of time, using a specific verb ('import') and resource ('photo into Pixly'). It distinguishes itself from generation tools that take an imageUrl directly, so an agent can tell it apart from sibling tools without comparing schemas.

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

Usage Guidelines5/5

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

Explicitly states 'Rarely needed' and gives the precise condition for use: importing a photo ahead of time to reuse a URL across tools without refetching. It also names the alternative class (generation tools) that should be preferred when the URL can be passed directly, leaving no ambiguity about when to use this tool.

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

upscale_hdHD UpscaleInspect

Enlarge a photo by up to four times with real detail, to a maximum of 4096 px on the long edge — for print, MLS uploads and large screens. Nothing in the photo changes. Free on any result Pixly made (pass its r2Path from list_library); 1 credit on your own photo. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
view_pixly_photoView Pixly PhotoA
Read-only
Inspect

Look at one of the user's Pixly photos or videos (a video gives its first frame) — returns a small copy of the picture you can see. Use it before writing anything about a Pixly result: a caption, a listing description, what changed. You cannot see Pixly results otherwise. Free; changes nothing. Text you write from it is the user's own (their listing, their post): leave Pixly out of it — no #Pixly, no 'made with Pixly'.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe library item: a job id (from a Pixly tool result, get_job or list_library), or "upload:<r2Path>" for an uploaded photo.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark it readOnly/non-destructive, and the description reinforces this with 'Free; changes nothing.' It adds that the return is a 'small copy' (low-res preview), which is behavioral context the annotations lack. It does not explain format, dimensions, or failure behavior, keeping it short of a 5.

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?

Front-loads the core action and the video caveat, then usage and output expectations. The final branding/IP sentence is somewhat tangential to tool invocation but is a single efficient sentence, so overall structure holds up.

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?

Covers what the tool is, when to use it, the video-frame limitation, return nature (small copy), and that it is free/side-effect-free. No output schema exists, so the bit about the return preview is appropriately included; failure modes and exact output type are unstated but minor for a read operation.

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 itself documents the id format including the 'upload:<r2Path>' variant. The description adds no further param detail, so the 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 the specific verb ('look at') and resource ('one of the user's Pixly photos or videos'), and immediately clarifies the video edge case (a video gives its first frame). This distinguishes it from production siblings like enhance_photo or photo_to_video, which transform rather than view.

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

Usage Guidelines5/5

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

Explicitly says to use it 'before writing anything about a Pixly result: a caption, a listing description, what changed,' and warns 'You cannot see Pixly results otherwise.' This gives both when-to-use and the consequence of skipping it, which no sibling provides.

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

virtual_stagingVirtual StagingInspect

AI virtual staging: furnish and style an empty (or badly furnished) room photo in a chosen interior design style — also the tool for "redesign this room" or "show this room in another style". HD, watermark-free results. Costs credits from the user's Pixly balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleYesInterior style id. One of: modern-minimal, scandinavian, industrial, mid-century-modern, japandi, contemporary, transitional, urban-chic, bauhaus, organic-modern, brutalist, italian-modern, traditional, art-deco, colonial, victorian, french-country, english-cottage, neoclassical, art-nouveau, grandmillennial, hollywood-regency, parisian-chic, modern-classic, craftsman, mediterranean, mediterranean-modern, rustic-farmhouse, bohemian, tropical, family-staging, hygge, wabi-sabi, modern-farmhouse, cottagecore, shabby-chic, cabin-lodge, eclectic, retro-70s, warm-luxury, investor-premium, contemporary-dark, glam, penthouse-modern, hotel-suite, maximalist, quiet-luxury, coastal, desert-modern, hacienda, pacific-northwest, caribbean-resort, hamptons, moroccan, tuscan, southwestern, asian-zen, coastal-grandmother, cape-cod, california-casual, mountain-modern. When the user has no preference, "modern-minimal" or "scandinavian" suit most listings.
r2PathNoStorage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl.
imageUrlNoPublic https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
roomTypeNoRoom type hint; omit to let vision infer it from the photo
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.
numImagesNoIgnored — staging always returns one image. Call again for another take.
stagingQualityNoIgnored — the Pro tier is retired. Every staging costs 1 credit.
customInstructionsNoOptional: ONLY a wish the user stated beyond the style and room, in their words (e.g. "add a reading chair", "no rug"). Leave it out otherwise — Pixly writes the staging prompt itself (keeps walls, windows and camera angle, furnishes to scale); never restate the request or list furniture here.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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
watermark_photosWatermark PhotosInspect

Free (no credits): put the agent's or agency's mark on listing photos — text (name, phone) and/or the logo saved on their Pixly account — in a corner or the middle, up to 10 photos per call. Returns every marked photo at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNomedium
textNoThe text, e.g. "Smith Realty · 555-0100". Optional when the account has a saved logo.
photosYesThe photos to mark, 1–10. Each item takes imageUrl or r2Path.
useLogoNoAdd the logo saved on the account (Pixly floor plan settings), when there is one.
positionNobottom-right
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 30 tool updates
    • Changedbefore_after_image2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedbefore_after_reel2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedblur_faces_plates2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedcinematic_motion2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Addedcreate_listing
    • Changedday_to_night2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changeddeclutter_photo2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changeddraw_floor_plan2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changededit_staged_photo2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedenhance_photo2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedflythrough_video2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_job3 fields changed
      • addedInput schema / properties / jobIds
        Added value: +{
        +  "description": "Several job ids at once (a plan's steps): answers when all are done, or with where each one is",
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "jobId"
        -]
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedlist_library1 field changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "Only this property folder's results and photos (from list_listings)",
        +  "type": "string"
        +}
    • Addedlist_listings
    • Changedmakeover_exterior2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedphoto_to_video2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Addedplan_photos
    • Changedplot_sign2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedremove_furniture2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedrender_floor_plan2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedreplace_lawn2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedreplace_sky2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedreset_season2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedrestyle_room2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedstraighten_photo2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedtouch_up_exterior2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Addedupdate_listing
    • Changedupscale_hd2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedvirtual_staging2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedwatermark_photos2 fields changed
      • addedInput schema / properties / listingId
        Added value: +{
        +  "description": "A 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.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs
        Added value: +{
        +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  2. 1 tool update
    • Changedvirtual_staging1 field changed
      • changedInput schema / properties / customInstructions / description
        Previous value: -"Optional extra instructions blended into the staging prompt"New value: +"Optional: ONLY a wish the user stated beyond the style and room, in their words (e.g. \"add a reading chair\", \"no rug\"). Leave it out otherwise — Pixly writes the staging prompt itself (keeps walls, windows and camera angle, furnishes to scale); never restate the request or list furniture here."
  3. 3 tool updates
    • Changedbefore_after_reel3 fields changed
      • changedInput schema / properties / format / default
        Previous value: -"9:16"New value: +"original"
      • addedInput schema / properties / format / description
        Added value: +"Video shape. original (default) keeps the photos' own shape; 9:16, 16:9 or 1:1 crop both photos, centred, to that shape first."
      • changedInput schema / properties / format / enum
        Previous value: -[
        -  "9:16",
        -  "16:9",
        -  "1:1"
        -]New value: +[
        +  "original",
        +  "9:16",
        +  "16:9",
        +  "1:1"
        +]
    • Changedcinematic_motion3 fields changed
      • changedInput schema / properties / format / default
        Previous value: -"9:16"New value: +"original"
      • changedInput schema / properties / format / description
        Previous value: -"Aspect ratio"New value: +"Video shape. original (default) keeps the photo's own shape; 9:16 or 16:9 crop the photo, centred, to that shape before it is animated."
      • changedInput schema / properties / format / enum
        Previous value: -[
        -  "9:16",
        -  "16:9"
        -]New value: +[
        +  "original",
        +  "9:16",
        +  "16:9"
        +]
    • Changedphoto_to_video3 fields changed
      • changedInput schema / properties / format / default
        Previous value: -"16:9"New value: +"original"
      • changedInput schema / properties / format / description
        Previous value: -"Label for the clip's shape; the video follows the start photo's own shape."New value: +"Video shape. original (default) keeps the start photo's own shape; 16:9, 9:16 or 1:1 crop the photos, centred, to that shape before they are animated."
      • changedInput schema / properties / format / enum
        Previous value: -[
        -  "16:9",
        -  "9:16",
        -  "1:1"
        -]New value: +[
        +  "original",
        +  "16:9",
        +  "9:16",
        +  "1:1"
        +]
  4. 25 tool updates
    • Changedbefore_after_image1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedbefore_after_reel1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedblur_faces_plates1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedcinematic_motion2 fields changed
      • changedInput schema / properties / durationSeconds / description
        Previous value: -"Clip length; the routed model validates its supported tiers"New value: +"Clip length in seconds. Leave out for the default 5 s; 10 s costs about twice as much — use it only when the user asks for a longer video."
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedday_to_night1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changeddeclutter_photo1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changeddraw_floor_plan1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changededit_staged_photo1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedenhance_photo1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedflythrough_video1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedget_job1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedmakeover_exterior1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedphoto_to_video1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedplot_sign1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedremove_furniture1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedrender_floor_plan1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedreplace_lawn1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedreplace_sky1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedreset_season1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedrestyle_room1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedstraighten_photo1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedtouch_up_exterior1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedupscale_hd1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedvirtual_staging1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
    • Changedwatermark_photos1 field changed
      • addedOutput schema / properties / quote
        Added value: +{
        +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
        +  "type": "object"
        +}
  5. 1 tool update
    • Changedrestyle_room2 fields changed
      • changedInput schema / properties / looks / description
        Previous value: -"The finish per surface: 'auto', one of the presets below, 'custom' with your own words in `notes`, 'own_colour' (walls, cabinets, furniture) with a hex colour in `colours`, or 'material_photo' with a photo of the material in `references`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles: white_metro, marble_large, terrazzo, matt_black_hex, travertine. furniture: light_neutral, warm_wood, dark_wood, black_leather."New value: +"The finish per surface: 'auto', one of the presets below, 'custom' with your own words in `notes`, 'own_colour' (walls, cabinets, furniture) with a hex colour in `colours`, or 'material_photo' with a photo of the material in `references`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles (wall tiles only; a bathroom floor is 'floor'): white_metro, zellige_white, marble_large, travertine, green_gloss. floor also takes terrazzo, encaustic_pattern, matt_black_hex. furniture: light_neutral, warm_wood, dark_wood, black_leather."
      • changedInput schema / properties / surfaces / description
        Previous value: -"Which surfaces get a new finish: 'walls', 'floor', 'cabinets' (fitted joinery plus its worktop and splashback), 'bathroom_tiles' or 'furniture' (upholstery and wood finishes). Omit for walls. The room's layout, fittings and camera never change."New value: +"Which surfaces get a new finish: 'walls', 'floor', 'cabinets' (fitted joinery plus its worktop and splashback), 'bathroom_tiles' (the tiled walls; a bathroom floor is 'floor') or 'furniture' (upholstery and wood finishes). Omit for walls. The room's layout, fittings and camera never change."
  6. 1 tool update
    • Changedrestyle_room4 fields changed
      • changedInput schema / properties / colours / description
        Previous value: -"Walls only: any paint colour as a hex code (e.g. {\"walls\": \"#7A8B6F\"}), used when the walls look is \"own_colour\". The result matches it closely as that paint would look in the room's light."New value: +"Any colour as a hex code for walls, cabinets or furniture (e.g. {\"walls\": \"#7A8B6F\"}), used when that surface's look is \"own_colour\". The result matches it closely as it would look in the room's light."
      • changedInput schema / properties / looks / additionalProperties / enum
        Previous value: -[
        -  "auto",
        -  "custom",
        -  "own_colour",
        -  "warm_white",
        -  "crisp_white",
        -  "soft_grey",
        -  "greige",
        -  "warm_beige",
        -  "clay_pink",
        -  "sage",
        -  "soft_blue",
        -  "olive_green",
        -  "graphite",
        -  "deep_navy",
        -  "terracotta_walls",
        -  "panelling",
        -  "wallpaper_textured",
        -  "limewash",
        -  "microcement",
        -  "exposed_brick",
        -  "timber_slats",
        -  "light_oak",
        -  "mid_oak",
        -  "wide_ash",
        -  "walnut",
        -  "herringbone_oak",
        -  "grey_plank",
        -  "polished_concrete",
        -  "stone_tile",
        -  "terracotta_floor",
        -  "slate_tile",
        -  "checker_tile",
        -  "carpet_neutral",
        -  "white_shaker",
        -  "cream_shaker",
        -  "handleless_white",
        -  "handleless_grey",
        -  "charcoal",
        -  "matt_black_cabinets",
        -  "natural_oak",
        -  "walnut_cabinets",
        -  "sage_cabinets",
        -  "forest_green",
        -  "navy_cabinets",
        -  "two_tone",
        -  "gloss_white",
        -  "white_metro",
        -  "zellige_white",
        -  "white_large",
        -  "grey_porcelain",
        -  "marble_large",
        -  "travertine",
        -  "terrazzo",
        -  "encaustic_pattern",
        -  "matt_black_hex",
        -  "slate_dark",
        -  "wood_effect_tile",
        -  "green_gloss",
        -  "light_neutral",
        -  "mid_grey_wool",
        -  "warm_greige",
        -  "cream_boucle",
        -  "tan_leather",
        -  "black_leather",
        -  "green_velvet",
        -  "navy_velvet",
        -  "rust_velvet",
        -  "warm_wood",
        -  "dark_wood",
        -  "black_metal"
        -]New value: +[
        +  "auto",
        +  "custom",
        +  "own_colour",
        +  "material_photo",
        +  "warm_white",
        +  "crisp_white",
        +  "soft_grey",
        +  "greige",
        +  "warm_beige",
        +  "clay_pink",
        +  "sage",
        +  "soft_blue",
        +  "olive_green",
        +  "graphite",
        +  "deep_navy",
        +  "terracotta_walls",
        +  "panelling",
        +  "wallpaper_textured",
        +  "limewash",
        +  "microcement",
        +  "exposed_brick",
        +  "timber_slats",
        +  "light_oak",
        +  "mid_oak",
        +  "wide_ash",
        +  "walnut",
        +  "herringbone_oak",
        +  "grey_plank",
        +  "polished_concrete",
        +  "stone_tile",
        +  "terracotta_floor",
        +  "slate_tile",
        +  "checker_tile",
        +  "carpet_neutral",
        +  "white_shaker",
        +  "cream_shaker",
        +  "handleless_white",
        +  "handleless_grey",
        +  "charcoal",
        +  "matt_black_cabinets",
        +  "natural_oak",
        +  "walnut_cabinets",
        +  "sage_cabinets",
        +  "forest_green",
        +  "navy_cabinets",
        +  "two_tone",
        +  "gloss_white",
        +  "white_metro",
        +  "zellige_white",
        +  "white_large",
        +  "grey_porcelain",
        +  "marble_large",
        +  "travertine",
        +  "terrazzo",
        +  "encaustic_pattern",
        +  "matt_black_hex",
        +  "slate_dark",
        +  "wood_effect_tile",
        +  "green_gloss",
        +  "light_neutral",
        +  "mid_grey_wool",
        +  "warm_greige",
        +  "cream_boucle",
        +  "tan_leather",
        +  "black_leather",
        +  "green_velvet",
        +  "navy_velvet",
        +  "rust_velvet",
        +  "warm_wood",
        +  "dark_wood",
        +  "black_metal"
        +]
      • changedInput schema / properties / looks / description
        Previous value: -"The finish per surface: 'auto', one of the presets below, 'custom' with your own words in `notes`, or (walls only) 'own_colour' with a hex paint colour in `colours`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles: white_metro, marble_large, terrazzo, matt_black_hex, travertine. furniture: light_neutral, warm_wood, dark_wood, black_leather."New value: +"The finish per surface: 'auto', one of the presets below, 'custom' with your own words in `notes`, 'own_colour' (walls, cabinets, furniture) with a hex colour in `colours`, or 'material_photo' with a photo of the material in `references`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles: white_metro, marble_large, terrazzo, matt_black_hex, travertine. furniture: light_neutral, warm_wood, dark_wood, black_leather."
      • addedInput schema / properties / references
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "A photo of the material itself — a floor plank, a tile, a fabric swatch, a wallpaper sample — for ONE surface, as the r2Path from create_upload_ticket or list_library (e.g. {\"floor\": \"users/…/oak.jpg\"}). Set that surface's look to \"material_photo\". One photo per run; a close, straight-on photo of the sample works best.",
        +  "propertyNames": {
        +    "enum": [
        +      "walls",
        +      "floor",
        +      "cabinets",
        +      "bathroom_tiles",
        +      "furniture"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
  7. 1 tool update
    • Changededit_staged_photo10 fields changed
      • changedInput schema / properties / customInstructions / description
        Previous value: -"The concrete edit to apply, e.g. \"change the sofa to grey\""New value: +"The change to make, in the user's words, e.g. \"make the sofa dark green\", \"remove the car from the driveway\", \"change the sign to SOLD\"."
      • changedInput schema / properties / imageUrl / description
        Previous value: -"URL of the PREVIOUS staged result to edit (the resultUrls entry from its job). Either imageUrl or r2Path is required."New value: +"The photo to edit: a Pixly result (a resultUrls entry), the user's own photo, or any public image URL / data:image URI. Either imageUrl or r2Path is required."
      • addedInput schema / properties / mask
        Added value: +{
        +  "description": "Optional area to change: a PNG as a data:image/png;base64 URI or an https URL, the photo's shape, WHITE where the photo may change and BLACK (or transparent) everywhere else. Leave it out to let the request alone decide — that already keeps the rest of the photo.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / maskR2Path
        Added value: +{
        +  "description": "Storage path of a mask — the alternative to mask.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / r2Path / description
        Previous value: -"R2 path of the previous staged result — the alternative to imageUrl."New value: +"Storage path of the photo to edit (a resultPaths entry, or an upload) — the alternative to imageUrl."
      • changedInput schema / properties / sourceJobId / description
        Previous value: -"Job the edited result came from (lineage)"New value: +"Job the photo came from, when it is a Pixly result (lineage)"
      • changedInput schema / properties / sourceResultIndex / description
        Previous value: -"Which variation was edited"New value: +"Which of that job's results was edited"
      • changedInput schema / properties / style / description
        Previous value: -"Style id of the staging being edited (the same ids virtual_staging takes), used as context to match new elements"New value: +"Optional. Style id of the staging being edited (the ids virtual_staging takes). Left out, it is read from the photo's history; a photo that was never staged needs none."
      • removedInput schema / properties / style / minLength
        Removed value: -1
      • changedInput schema / required
        Previous value: -[
        -  "style",
        -  "customInstructions"
        -]New value: +[
        +  "customInstructions"
        +]
  8. 1 tool update
    • Changedrestyle_room3 fields changed
      • addedInput schema / properties / colours
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Walls only: any paint colour as a hex code (e.g. {\"walls\": \"#7A8B6F\"}), used when the walls look is \"own_colour\". The result matches it closely as that paint would look in the room's light.",
        +  "propertyNames": {
        +    "enum": [
        +      "walls",
        +      "floor",
        +      "cabinets",
        +      "bathroom_tiles",
        +      "furniture"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • changedInput schema / properties / looks / additionalProperties / enum
        Previous value: -[
        -  "auto",
        -  "custom",
        -  "warm_white",
        -  "crisp_white",
        -  "soft_grey",
        -  "greige",
        -  "warm_beige",
        -  "clay_pink",
        -  "sage",
        -  "soft_blue",
        -  "olive_green",
        -  "graphite",
        -  "deep_navy",
        -  "terracotta_walls",
        -  "panelling",
        -  "wallpaper_textured",
        -  "limewash",
        -  "microcement",
        -  "exposed_brick",
        -  "timber_slats",
        -  "light_oak",
        -  "mid_oak",
        -  "wide_ash",
        -  "walnut",
        -  "herringbone_oak",
        -  "grey_plank",
        -  "polished_concrete",
        -  "stone_tile",
        -  "terracotta_floor",
        -  "slate_tile",
        -  "checker_tile",
        -  "carpet_neutral",
        -  "white_shaker",
        -  "cream_shaker",
        -  "handleless_white",
        -  "handleless_grey",
        -  "charcoal",
        -  "matt_black_cabinets",
        -  "natural_oak",
        -  "walnut_cabinets",
        -  "sage_cabinets",
        -  "forest_green",
        -  "navy_cabinets",
        -  "two_tone",
        -  "gloss_white",
        -  "white_metro",
        -  "zellige_white",
        -  "white_large",
        -  "grey_porcelain",
        -  "marble_large",
        -  "travertine",
        -  "terrazzo",
        -  "encaustic_pattern",
        -  "matt_black_hex",
        -  "slate_dark",
        -  "wood_effect_tile",
        -  "green_gloss",
        -  "light_neutral",
        -  "mid_grey_wool",
        -  "warm_greige",
        -  "cream_boucle",
        -  "tan_leather",
        -  "black_leather",
        -  "green_velvet",
        -  "navy_velvet",
        -  "rust_velvet",
        -  "warm_wood",
        -  "dark_wood",
        -  "black_metal"
        -]New value: +[
        +  "auto",
        +  "custom",
        +  "own_colour",
        +  "warm_white",
        +  "crisp_white",
        +  "soft_grey",
        +  "greige",
        +  "warm_beige",
        +  "clay_pink",
        +  "sage",
        +  "soft_blue",
        +  "olive_green",
        +  "graphite",
        +  "deep_navy",
        +  "terracotta_walls",
        +  "panelling",
        +  "wallpaper_textured",
        +  "limewash",
        +  "microcement",
        +  "exposed_brick",
        +  "timber_slats",
        +  "light_oak",
        +  "mid_oak",
        +  "wide_ash",
        +  "walnut",
        +  "herringbone_oak",
        +  "grey_plank",
        +  "polished_concrete",
        +  "stone_tile",
        +  "terracotta_floor",
        +  "slate_tile",
        +  "checker_tile",
        +  "carpet_neutral",
        +  "white_shaker",
        +  "cream_shaker",
        +  "handleless_white",
        +  "handleless_grey",
        +  "charcoal",
        +  "matt_black_cabinets",
        +  "natural_oak",
        +  "walnut_cabinets",
        +  "sage_cabinets",
        +  "forest_green",
        +  "navy_cabinets",
        +  "two_tone",
        +  "gloss_white",
        +  "white_metro",
        +  "zellige_white",
        +  "white_large",
        +  "grey_porcelain",
        +  "marble_large",
        +  "travertine",
        +  "terrazzo",
        +  "encaustic_pattern",
        +  "matt_black_hex",
        +  "slate_dark",
        +  "wood_effect_tile",
        +  "green_gloss",
        +  "light_neutral",
        +  "mid_grey_wool",
        +  "warm_greige",
        +  "cream_boucle",
        +  "tan_leather",
        +  "black_leather",
        +  "green_velvet",
        +  "navy_velvet",
        +  "rust_velvet",
        +  "warm_wood",
        +  "dark_wood",
        +  "black_metal"
        +]
      • changedInput schema / properties / looks / description
        Previous value: -"The finish per surface: 'auto', one of the presets below, or 'custom' with your own words in `notes`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles: white_metro, marble_large, terrazzo, matt_black_hex, travertine. furniture: light_neutral, warm_wood, dark_wood, black_leather."New value: +"The finish per surface: 'auto', one of the presets below, 'custom' with your own words in `notes`, or (walls only) 'own_colour' with a hex paint colour in `colours`. A finish that does not belong to its surface falls back to 'auto' (the tool picks one that suits the room; several on auto are made to agree). walls: warm_white, soft_grey, greige, sage, deep_navy. floor: light_oak, walnut, grey_plank, polished_concrete, stone_tile. cabinets: white_shaker, charcoal, natural_oak, forest_green, navy_cabinets. bathroom_tiles: white_metro, marble_large, terrazzo, matt_black_hex, travertine. furniture: light_neutral, warm_wood, dark_wood, black_leather."
  9. 1 tool update
    • Changedvirtual_staging1 field changed
      • changedInput schema / properties / stagingQuality / description
        Previous value: -"Ignored — the Pro tier is retired. Every staging costs 1 credit and may render a second version on another model for free."New value: +"Ignored — the Pro tier is retired. Every staging costs 1 credit."
  10. 1 tool update
    • Changeddraw_floor_plan1 field changed
      • changedInput schema / properties / planId / description
        Previous value: -"To CHANGE a plan you drew before: its planId from that result, with the whole updated layout. Omit for a new plan."New value: +"To CHANGE a plan you drew before: its planId from that result, with the whole updated layout — saved as a new plan beside it (nothing is overwritten). Omit for a new plan."
  11. 25 tool updates
    • Changedbefore_after_image1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedbefore_after_reel1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedblur_faces_plates1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedcinematic_motion1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedday_to_night1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changeddeclutter_photo1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changeddraw_floor_plan1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changededit_staged_photo1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedenhance_photo1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedflythrough_video1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedget_job1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedmakeover_exterior1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedphoto_to_video1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedplot_sign1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedremove_furniture1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedrender_floor_plan1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedreplace_lawn1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedreplace_sky1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedreset_season1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedrestyle_room1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedstraighten_photo1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedtouch_up_exterior1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedupscale_hd1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedvirtual_staging1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedwatermark_photos1 field changed
      • addedOutput schema / properties / resultPaths
        Added value: +{
        +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  12. 1 tool update
    • Changeddraw_floor_plan11 fields changed
      • removedInput schema / properties / doors / items / properties / width / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / doors / items / properties / width / minimum
        Added value: +0.1
      • removedInput schema / properties / planId / format
        Removed value: -"uuid"
      • addedInput schema / properties / planId / maxLength
        Added value: +40
      • removedInput schema / properties / planId / pattern
        Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • removedInput schema / properties / rooms / items / properties / depth / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / rooms / items / properties / depth / minimum
        Added value: +0.1
      • removedInput schema / properties / rooms / items / properties / width / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / rooms / items / properties / width / minimum
        Added value: +0.1
      • removedInput schema / properties / windows / items / properties / width / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / windows / items / properties / width / minimum
        Added value: +0.1
  13. 1 tool update
    • Addedblur_faces_plates
  14. 1 tool update
    • Addedwatermark_photos
  15. 3 tool updates
    • Addeddraw_floor_plan
    • Addedstraighten_photo
    • Addedview_pixly_photo
  16. 1 tool update
    • Addedbefore_after_image
  17. 1 tool update
    • Addedflythrough_video

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI assistants with real-estate visual tools including virtual staging, photo enhancement, decluttering, day-to-night conversion, plot signs, and cinematic property videos via the Pixly API.
    69 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI-driven interior, exterior, and landscape design, photoreal rendering, image editing, video generation, and 3D model creation directly inside Claude, Cursor, VS Code, and other MCP clients. It also supports virtual staging, sketching to render, texture and pattern generation, background removal, and architectural consultation through natural language.
    24
    49 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Marketing on autopilot from any AI agent, 900+ tools. Research winning ads across ad libraries and organic social, make image and video ads with your real product, batch static ads from a product catalog, swap a real or AI presenter into any video, publish to 10 social channels or let Autopilot posting fill your calendar, automate DMs, and run campaigns on 12 ad platforms.
    185
    3,383 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources