Pixly
REMOTE · PIXLY.APP
Every visual AI tool for property listings — staging, enhancement, decluttering, cinematic video.
Available components
Last scanned (22 hours ago)
Scores higher than 99% of remote servers
Reachable. Last reached 16 Oct 2026.
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 9050 tokens (~258/item across 35 items; 35 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
- Structured output schemas are declared (74% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 36 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 12 Oct 26 0
- Tool “get_job” rewrote its description, which is the text the model reads security
- Tool coverage: 81% → 74% ▼ functional
- Schema quality: 7534 → 9050 ▼ functional
- New tool “create_listing” functional
- New tool “list_listings” functional
- New tool “plan_photos” functional
- New tool “update_listing” functional
- “before_after_image” added an optional parameter “listingId” cosmetic
- “before_after_reel” added an optional parameter “listingId” cosmetic
- “blur_faces_plates” added an optional parameter “listingId” cosmetic
- “cinematic_motion” added an optional parameter “listingId” cosmetic
- “day_to_night” added an optional parameter “listingId” cosmetic
- “declutter_photo” added an optional parameter “listingId” cosmetic
- “draw_floor_plan” added an optional parameter “listingId” cosmetic
- “edit_staged_photo” added an optional parameter “listingId” cosmetic
- “enhance_photo” added an optional parameter “listingId” cosmetic
- “flythrough_video” added an optional parameter “listingId” cosmetic
- “get_job” added an optional parameter “jobIds” cosmetic
- “list_library” added an optional parameter “listingId” cosmetic
- “makeover_exterior” added an optional parameter “listingId” cosmetic
- “photo_to_video” added an optional parameter “listingId” cosmetic
- “plot_sign” added an optional parameter “listingId” cosmetic
- “remove_furniture” added an optional parameter “listingId” cosmetic
- “render_floor_plan” added an optional parameter “listingId” cosmetic
- “replace_lawn” added an optional parameter “listingId” cosmetic
- “replace_sky” added an optional parameter “listingId” cosmetic
- “reset_season” added an optional parameter “listingId” cosmetic
- “restyle_room” added an optional parameter “listingId” cosmetic
- “straighten_photo” added an optional parameter “listingId” cosmetic
- “touch_up_exterior” added an optional parameter “listingId” cosmetic
- “upscale_hd” added an optional parameter “listingId” cosmetic
- “virtual_staging” added an optional parameter “listingId” cosmetic
- “watermark_photos” added an optional parameter “listingId” cosmetic
- “get_job” made “jobId” optional cosmetic
- 3 Oct 26 0
- Schema quality: 5649 → 6905 ▼ functional
- Tool coverage: 97% → 92% ▼ functional
- New tool “before_after_image” functional
- New tool “blur_faces_plates” functional
- New tool “draw_floor_plan” functional
- New tool “straighten_photo” functional
- New tool “view_pixly_photo” functional
- New tool “watermark_photos” functional
- 2 Oct 26 0
- Tool “before_after_reel” rewrote its description, which is the text the model reads security
- New tool “flythrough_video” functional
- “before_after_reel” reworded the description of “videoIntent” cosmetic
- Tool “before_after_reel” changed its title: Before/After Reel → Before & After Video cosmetic
- 1 Oct 26 −3
- Resource “pixly-result-card” was removed ▼ functional
- The server no longer declares the “resources” capability functional
- Server version: 1.4.0 → 1.5.0 functional
- 30 Sept 26 +3
- The server now declares the “resources” capability functional
- First check of Capabilities: pass functional
- First check of Schema quality: 100 functional
- New resource “pixly-result-card” functional
- Server version: 1.3.1 → 1.4.0 functional
- Server version: 1.3.0 → 1.3.1 functional
- “virtual_staging” reworded the description of “style” cosmetic
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 23 Sept 26 −1
- Tool “virtual_staging” rewrote its description, which is the text the model reads security
- Server version: 1.2.1 → 1.3.0 functional
- New tool “render_floor_plan” functional
- “virtual_staging” reworded the description of “r2Path” cosmetic
- “cinematic_motion” reworded the description of “r2Path” cosmetic
- “day_to_night” reworded the description of “r2Path” cosmetic
- “declutter_photo” reworded the description of “r2Path” cosmetic
- “enhance_photo” reworded the description of “r2Path” cosmetic
- “makeover_exterior” reworded the description of “r2Path” cosmetic
- “photo_to_video” reworded the description of “r2Path” cosmetic
- “plot_sign” reworded the description of “r2Path” cosmetic
- “remove_furniture” reworded the description of “r2Path” cosmetic
- “replace_lawn” reworded the description of “r2Path” cosmetic
- “replace_sky” reworded the description of “r2Path” cosmetic
- “reset_season” reworded the description of “r2Path” cosmetic
- “restyle_room” reworded the description of “r2Path” cosmetic
- “touch_up_exterior” reworded the description of “r2Path” cosmetic
- “upscale_hd” reworded the description of “r2Path” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 16 Oct 2026 · Probed https://pixly.app/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=pixly.app | CN=WE1,O=Google Trust Services,C=US | 2 Sept 2026 | 1 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | a5a6e85c01688ad8135c1d66cb765bc9 |
| SANs: pixly.app, *.pixly.app | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of pixly.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| pixly.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://pixly.app/.well-known/oauth-protected-resource/api/mcp", scope="tools"
Bearer resource_metadata="https://pixly.app/.well-known/oauth-protected-resource/api/mcp", scope="tools" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
Protected resource metadata
| Document | https://pixly.app/.well-known/oauth-protected-resource/api/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://pixly.app/api/mcp |
| Authorisation server | https://pixly.app |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://pixly.app/api/mcp | Verified | 200 | |
| http (plaintext) | http://pixly.app/api/mcp | HTTPS enforced | 301 | https://pixly.app/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
before_after_image Before & After Image ~412
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.
| Name | Type | Req | Description |
|---|---|---|---|
| afterImageUrl | string | – | The AFTER photo (e.g. the staged room, the dusk version). Public https URL or data: URI; or afterR2Path. |
| afterLabel | string | – | Label text for the after photo, in the user's language (default "After"). |
| afterR2Path | string | – | Storage path of the after photo — the alternative to afterImageUrl. |
| aspect | string | – | Shape of the image: original (follows the photos), 1:1 square, 4:5 Instagram post, 9:16 Stories/Reels. |
| beforeImageUrl | string | – | The BEFORE photo (e.g. the empty room, the daylight shot). Public https URL or data: URI; or beforeR2Path. |
| beforeLabel | string | – | Label text for the before photo, in the user's language (default "Before"). |
| beforeR2Path | string | – | Storage path of the before photo — the alternative to beforeImageUrl. For a Pixly result, its original photo is the job's source. |
| labels | boolean | – | Show the Before / After labels. |
| layout | string | – | side = next to each other, stack = one above the other, vsplit = one frame split by a vertical line, diagonal = split by a slanted line. |
| listingId | string | – | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
before_after_reel Before & After Video ~410
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.
| Name | Type | Req | Description |
|---|---|---|---|
| afterImageUrl | string | – | End frame (e.g. the staged result) — https URL or data: URI |
| afterR2Path | string | – | R2 path of the end frame — the alternative to afterImageUrl. |
| beforeImageUrl | string | – | Start frame (e.g. the empty room photo) — https URL or data: URI |
| beforeR2Path | string | – | R2 path of the start frame — the alternative to beforeImageUrl. |
| durationSeconds | – | – | – |
| format | string | – | Video shape. original (default) keeps the photos' own shape; 9:16, 16:9 or 1:1 crop both photos, centred, to that shape first. |
| listingId | string | – | 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. |
| revealStyle | string | – | How the transformation is revealed |
| videoIntent | string | – | staging_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 vide… |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
blur_faces_plates Blur Faces & Plates ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| faces | boolean | – | – |
| listingId | string | – | 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. |
| photos | array | yes | The photos, 1–5. Each item takes imageUrl or r2Path. |
| plates | boolean | – | – |
| style | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
cinematic_motion Cinematic Motion ~321
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cameraMove | string | – | Camera-move preset |
| direction | string | – | The 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… |
| durationSeconds | – | – | 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. |
| format | string | – | 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. |
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
create_listing New Property Folder ~98
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.
| Name | Type | Req | Description |
|---|---|---|---|
| title | string | – | The property in the user's words, e.g. "12 Oak St" — leave out if they skipped the question |
No output schema declared.
No examples provided.
create_upload_ticket Upload a Local Photo ~126
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.
| Name | Type | Req | Description |
|---|---|---|---|
| contentType | string | yes | MIME type the PUT request will send |
| filename | string | yes | Original filename, used for the extension |
| sizeBytes | integer | – | Exact byte size of the file. Recommended: when given it is signed into the URL, so the upload is bounded server-side. |
No output schema declared.
No examples provided.
day_to_night Day to Night ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
declutter_photo Declutter ~151
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
draw_floor_plan Draw Floor Plan ~360
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.
| Name | Type | Req | Description |
|---|---|---|---|
| doors | array | – | – |
| listingId | string | – | 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. |
| planId | string | – | 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. |
| rooms | array | yes | Every 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… |
| title | string | – | Address or listing name for the plan's title block. |
| units | string | – | Units of every number below, and of the labels on the plan. |
| windows | array | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
edit_staged_photo Edit Photo ~434
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.
| Name | Type | Req | Description |
|---|---|---|---|
| customInstructions | string | yes | 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". |
| imageUrl | string | – | 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. |
| listingId | string | – | 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. |
| mask | string | – | 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… |
| maskR2Path | string | – | Storage path of a mask — the alternative to mask. |
| r2Path | string | – | Storage path of the photo to edit (a resultPaths entry, or an upload) — the alternative to imageUrl. |
| sourceJobId | string | – | Job the photo came from, when it is a Pixly result (lineage) |
| sourceResultIndex | integer | – | Which of that job's results was edited |
| style | string | – | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
enhance_photo Enhance ~162
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
flythrough_video Flythrough ~233
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Film shape. Omit to follow the photos (landscape photos → 16:9). |
| listingId | string | – | 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. |
| photos | array | yes | The 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 image… |
| title | string | – | Optional name for the tour, e.g. the street address. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
get_checkout_link Get a Payment Link ~222
Use when a tool fails for lack of credits or a plan. Returns a Stripe Checkout URL for the user to pay on — this never charges anything by itself, and you cannot pay for them. With no active plan it is a subscription (plans: starter (Starter: $5.99/week, 20 credits); agent (Agent: $19.99/month, 100 credits); pro_agent (Pro Agent: $49.99/month, 300 credits); team (Team: $149.99/month, 1000 credits)); with a plan it is a one-time credit top-up. After they pay, credits arrive in seconds: check get_credit_balance, then run the tool again.
| Name | Type | Req | Description |
|---|---|---|---|
| plan | string | – | Plan to subscribe to, for an account with no active plan. Defaults to "starter". Ignored for a top-up. |
| topUpUsd | number | – | For an account that already has a plan: one-time credit top-up amount in USD (10–500, default 10), priced at that plan's rate. |
No output schema declared.
No examples provided.
get_credit_balance Credit Balance ~19
The user's current Pixly credit balance and plan.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_job Check Job Status ~101
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.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | – | Job id returned by a generation tool |
| jobIds | array | – | Several job ids at once (a plan's steps): answers when all are done, or with where each one is |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
list_library List Library ~141
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| listingId | string | – | Only this property folder's results and photos (from list_listings) |
| type | string | – | Filter 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. |
No output schema declared.
No examples provided.
list_listings Property Folders ~69
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
makeover_exterior Exterior Makeover ~497
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| include | array | – | Which 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), 'poo… |
| listingId | string | – | 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. |
| note | string | – | Your 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… |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| scope | string | – | '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. |
| style | string | – | The 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
photo_to_video Photo to Video ~467
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cameraMove | string | – | Ready-made camera move used when no prompt is given. |
| durationSeconds | integer | – | Clip length. kling-v3 takes 3, 5, 8, 10 or 15; kling-2.6 takes 5 or 10. |
| endImageUrl | string | – | Optional 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. |
| endR2Path | string | – | R2 path of the end frame — the alternative to endImageUrl. |
| format | string | – | 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. |
| imageUrl | string | – | Start frame — where the video begins. Public https URL or data: URI; either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| model | string | – | kling-v3: 3/5/8/10/15 s, optional sound, lands most precisely on the end frame. kling-2.6: 5/10 s, silent, cheaper. |
| prompt | string | – | Your own description of the video, in any language. Replaces cameraMove when set. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| sound | boolean | – | Add ambient sound (kling-v3 only; kling-2.6 is always silent). |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
plan_photos Plan Photo Edits ~276
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmationCode | string | – | The 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. |
| listingId | string | – | 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. |
| photos | array | – | Every photo of the set, in order; steps refer to them by number (from 1) |
| steps | array | – | What to do, step by step |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
plot_sign Plot Number ~229
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| look | string | – | Sign material/style; defaults server-side |
| orientation | string | – | Letter orientation (letter looks only); defaults server-side |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| text | string | yes | Sign label, verbatim — a price ("$1,200,000"), area ("800 m²"), or short word ("SOLD") |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
remove_furniture Remove Furniture ~385
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.
| Name | Type | Req | Description |
|---|---|---|---|
| extras | array | – | Extra 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… |
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| mode | string | – | How 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 sanita… |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
render_floor_plan Floor Plan Render ~308
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| look | string | – | Which 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 te… |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
replace_lawn Lawn Replacement ~228
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| lawn | string | – | Lawn style. 'auto' lets the tool pick a healthy lawn that suits the photo. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| shade | string | – | How green; only used with a chosen lawn style. |
| stripes | string | – | Mowing stripes: auto (stripes for fresh_mown and golf, none otherwise), on, off. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
replace_sky Sky Replacement ~296
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| sky | string | – | Sky style. 'auto' lets the tool pick what suits the photo's light. |
| sun | string | – | Sun glow: auto (a glow for sunset/sunrise styles, none otherwise), on (place it with sunX/sunY), off. |
| sunX | number | – | With sun=on: glow position from the left edge, 0..1. |
| sunY | number | – | With sun=on: glow position from the top edge, 0..1 (kept in the top 60%). |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
reset_season Seasonal Reset ~265
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| season | string | – | The 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). On… |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
restyle_room Restyle ~718
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.
| Name | Type | Req | Description |
|---|---|---|---|
| colours | object | – | 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 ligh… |
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| looks | object | – | 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… |
| notes | object | – | Your 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 no… |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| references | object | – | 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… |
| surfaces | array | – | 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' (upholst… |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
straighten_photo Straighten Photo ~190
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
touch_up_exterior Exterior Touch-up ~242
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.
| Name | Type | Req | Description |
|---|---|---|---|
| fix | array | – | Which 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. |
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
update_listing Rename Property Folder ~46
Rename one of the user's property folders, only when they ask.
| Name | Type | Req | Description |
|---|---|---|---|
| listingId | string | yes | The folder (from list_listings) |
| title | string | yes | Its new name |
No output schema declared.
No examples provided.
upload_image_from_url Import Photo from URL ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Publicly reachable image URL (JPG/PNG/WebP, max 10 MB) to import into Pixly |
No output schema declared.
No examples provided.
upscale_hd HD Upscale ~193
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.
| Name | Type | Req | Description |
|---|---|---|---|
| imageUrl | string | – | Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required. |
| listingId | string | – | 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. |
| r2Path | string | – | Storage path of a photo already in the user's Pixly library (from list_library, or returned by an upload ticket) — the alternative to imageUrl. |
| Name | Type | Req | Description |
|---|---|---|---|
| completedAt | string | – | – |
| createdAt | string | – | – |
| creditsCharged | number|null | – | – |
| error | string | – | – |
| jobId | string | yes | Pass to get_job to poll |
| jobs | array | – | Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results |
| note | string | – | – |
| quote | object | – | Present when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm |
| resultPaths | array | – | Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result |
| resultUrls | array | – | Present when completed; valid 7 days |
| status | string | yes | pending | processing | completed | failed — anything not completed/failed is still running |
| type | string | – | – |
No examples provided.
view_pixly_photo View Pixly Photo ~150
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'.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The library item: a job id (from a Pixly tool result, get_job or list_library), or "upload:<r2Path>" for an uploaded photo. |
No output schema declared.
No examples provided.
How do I install the Pixly MCP server?
Pixly is a hosted endpoint at https://pixly.app/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · pixly.app
claude mcp add --transport http app-pixly-pixly 'https://pixly.app/api/mcp'
What is the Pixly MCP server?
Pixly is an MCP server listed in the public MCP registry as app.pixly/pixly. Every visual AI tool for property listings, staging, enhancement, decluttering, cinematic video. This page covers its hosted endpoint (https://pixly.app/api/mcp).
Is the Pixly MCP server safe to use?
Pixly scores 92 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Pixly MCP server expose?
Pixly exposes 35 tools: virtual_staging, edit_staged_photo, cinematic_motion, photo_to_video, before_after_reel, and 30 more. Their descriptions and schemas cost roughly 8,909 tokens of context every time the server is loaded.
Does the Pixly MCP server require authentication?
Yes. Pixly asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Pixly MCP server still maintained?
Pixly is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.