# Pixly (remote · pixly.app)

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

- Trust score: 76/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-14

## Components

- remote · `pixly.app`: 76/100 (this document), [markdown](https://verifymcp.io/servers/app-pixly-pixly/api-mcp.md), [page](https://verifymcp.io/servers/app-pixly-pixly/api-mcp)

## Channel facts

- Endpoint: `https://pixly.app/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-14.

- **Endpoint Security**: 94/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - 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.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1859 tokens (~143/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 91% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http app-pixly-pixly https://pixly.app/api/mcp
```

### Codex

```toml
[mcp_servers.app-pixly-pixly]
url = "https://pixly.app/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-pixly-pixly": {
      "type": "remote",
      "url": "https://pixly.app/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-pixly-pixly --url https://pixly.app/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-pixly-pixly:
    url: "https://pixly.app/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "app-pixly-pixly": {
      "type": "http",
      "url": "https://pixly.app/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-14 (score 76, +1)

- [cosmetic] “cinematic_motion” added an optional parameter “direction”

### 2026-08-13 (score 75, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-08-12 (score 75)

First indexed and scored.

## MCP tools (13)

### `virtual_staging` (~245 tokens)

Furnish and style an empty (or badly furnished) room photo in a chosen interior style. The flagship tool. HD, watermark-free results. Costs credits from the user's Pixly balance.

Input parameters:

- `customInstructions` (string): Optional extra instructions blended into the staging prompt
- `imageUrl` (string): Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
- `numImages` (integer): Ignored — staging always returns one image. Call again for another take.
- `r2Path` (string): R2 object path from an upload ticket (POST /api/v1/uploads) — the alternative to imageUrl when the photo is a local file.
- `roomType` (string): Room type hint; omit to let vision infer it from the photo
- `stagingQuality` (string): pro = Nano Banana Pro instead of Nano Banana 2, at 2 credits instead of 1. Same prompt and same 2K output resolution either way — the model is the only difference.
- `style` (string, required): Style id from the Pixly styles catalog (lib/real-estate/styles.ts)

### `edit_staged_photo` (~171 tokens)

Apply a specific change to a previously staged photo (swap the sofa, add a rug) while preserving everything else. Costs credits from the user's Pixly balance.

Input parameters:

- `customInstructions` (string, required): The concrete edit to apply, e.g. "change the sofa to grey"
- `imageUrl` (string): URL of the PREVIOUS staged result to edit (the resultUrls entry from its job). Either imageUrl or r2Path is required.
- `r2Path` (string): R2 path of the previous staged result — the alternative to imageUrl.
- `sourceJobId` (string): Job the edited result came from (lineage)
- `sourceResultIndex` (integer): Which variation was edited
- `style` (string, required): Style id, used as context to match new elements

### `cinematic_motion` (~186 tokens)

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

Input parameters:

- `cameraMove` (string): Camera-move preset
- `direction` (string): Horizontal direction, for the moves that have one (currently 'pan'). Ignored by every other move; omit for the default.
- `durationSeconds`: Clip length; the routed model validates its supported tiers
- `format` (string): Aspect ratio
- `imageUrl` (string): Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
- `r2Path` (string): R2 object path from an upload ticket (POST /api/v1/uploads) — the alternative to imageUrl when the photo is a local file.

### `before_after_reel` (~179 tokens)

Animate a before→after transformation (e.g. empty room → staged) into a social-ready reveal video from two frames. Costs credits from the user's Pixly balance.

Input parameters:

- `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)
- `revealStyle` (string): How the transformation is revealed
- `videoIntent` (string)

### `enhance_photo` (~116 tokens)

Turn an amateur listing photo into a finished, professional real-estate photo (exposure, color, clarity). Returns 3 variants to pick from. Costs credits from the user's Pixly balance.

Input parameters:

- `imageUrl` (string): Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
- `r2Path` (string): R2 object path from an upload ticket (POST /api/v1/uploads) — the alternative to imageUrl when the photo is a local file.

### `declutter_photo` (~110 tokens)

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.

Input parameters:

- `imageUrl` (string): Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
- `r2Path` (string): R2 object path from an upload ticket (POST /api/v1/uploads) — the alternative to imageUrl when the photo is a local file.

### `day_to_night` (~117 tokens)

Turn a daytime listing photo into a magazine-style night scene — lights on, warm glow, dusk sky — with the building and camera angle unchanged. Costs credits from the user's Pixly balance.

Input parameters:

- `imageUrl` (string): Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
- `r2Path` (string): R2 object path from an upload ticket (POST /api/v1/uploads) — the alternative to imageUrl when the photo is a local file.

### `plot_sign` (~188 tokens)

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.

Input parameters:

- `imageUrl` (string): Public https URL of the source photo, or a data: URI. Either imageUrl or r2Path is required.
- `look` (string): Sign material/style; defaults server-side
- `orientation` (string): Letter orientation (letter looks only); defaults server-side
- `r2Path` (string): R2 object path from an upload ticket (POST /api/v1/uploads) — the alternative to imageUrl when the photo is a local file.
- `text` (string, required): Sign label, verbatim — a price ("$1,200,000"), area ("800 m²"), or short word ("SOLD")

### `upload_image_from_url` (~84 tokens)

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.

Input parameters:

- `url` (string, required): Publicly reachable image URL (JPG/PNG/WebP, max 10 MB) to import into Pixly

### `create_upload_ticket` (~126 tokens)

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.

Input parameters:

- `contentType` (string, required): MIME type the PUT request will send
- `filename` (string, required): 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.

### `get_job` (~55 tokens)

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.

Input parameters:

- `jobId` (string, required): Job id returned by a generation tool

### `list_library` (~120 tokens)

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.

Input parameters:

- `limit` (integer)
- `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.

### `get_credit_balance` (~19 tokens)

The user's current Pixly credit balance and plan.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-pixly-pixly/api-mcp#diagnostics

## Score history

- 2026-08-14: 76
- 2026-08-13: 75
- 2026-08-12: 75

## Links

- Remote endpoint: https://pixly.app/api/mcp
- Website: https://pixly.app/mcp
- Changelog RSS feed: https://verifymcp.io/servers/app-pixly-pixly/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-pixly-pixly/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/app-pixly-pixly/api-mcp
