# Luw.ai (npm · @luw-ai/mcp)

AI interior, exterior and landscape design, photoreal rendering, image editing, video and 3D.

- Trust score: 86/100 (high trust)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-24

## Components

- remote · `mcp.luw.ai`: 38/100, [markdown](https://verifymcp.io/servers/ai-luw-mcp/mcp.md), [page](https://verifymcp.io/servers/ai-luw-mcp/mcp)
- npm · `@luw-ai/mcp`: 86/100 (this document), [markdown](https://verifymcp.io/servers/ai-luw-mcp/luw-ai-mcp.md), [page](https://verifymcp.io/servers/ai-luw-mcp/luw-ai-mcp)

## Channel facts

- Registry: `npm`
- Package: `@luw-ai/mcp`
- Version: `0.3.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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-10-24.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to Luvi-io/luw-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 6 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 80/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5768 tokens (~117/item across 49 items; 24 tools + 25 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 93% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Luw.ai MCP server?

Luw.ai runs locally as an npm package, launched with npx -y @luw-ai/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add ai-luw-mcp -- npx -y @luw-ai/mcp
```

### Cursor

```json
{
  "mcpServers": {
    "ai-luw-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@luw-ai/mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-luw-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@luw-ai/mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add ai-luw-mcp -- npx -y @luw-ai/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-luw-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@luw-ai/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-luw-mcp --command npx --arg -y --arg @luw-ai/mcp
```

### Hermes

```yaml
mcp_servers:
  ai-luw-mcp:
    command: "npx"
    args: ["-y", "@luw-ai/mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "ai-luw-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@luw-ai/mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-luw-mcp -t stdio -c npx -a -y @luw-ai/mcp
```

### Other

```json
{
  "mcpServers": {
    "ai-luw-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@luw-ai/mcp"
      ]
    }
  }
}
```

## 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-10-23 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-21 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-19 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-18 (score 83, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-17 (score 68, −15)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.3.2 → 0.3.3

### 2026-10-16 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-15 (score 82, +33)

- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.03
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 93
- [functional] First check of Destructive annotations: 100
- [functional] First check of Schema quality: good

### 2026-10-14 (score 49, 0)

- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 93
- [functional] First check of Destructive annotations: 100
- [functional] First check of Schema quality: good
- [functional] Package version: 0.3.0 → 0.3.2
- [functional] Package version: 0.3.0 → 0.3.1

## MCP tools (24)

### `luw_interior_design` (~428 tokens)

Interior design (Interior AI)

Luw.ai Interior AI: redesign an interior photo — home, office, shop, hotel — in any style while keeping the room's architecture. Restyles furniture, materials, colors and lighting. Set empty_room=true to furnish an empty room or turn it into another room type (virtual staging). Costs 1 credit per variation.

Input parameters:

- `empty_room` (boolean): Furnish from scratch / convert the room to room_type (Fill Empty Room mode).
- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string, required): Photo of the room (https:// URL, local file path, or data: URI).
- `persona_id` (integer): Persona whose saved images and style knowledge to use.
- `precision` (integer): How strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
- `prompt` (string): What you want, in plain language.
- `reference_images` (array): Up to 6 reference images (furniture, materials, products, mood boards) to draw from.
- `room_type` (string): Room type, e.g. "Living Room", "Kitchen", "Bedroom", "Home Office" (see luw_list_options kind="interior_types").
- `seed` (integer): Fix for reproducible results.
- `style_reference` (string): Style-transfer source: an image whose look to copy (https:// URL, local file path, or data: URI), or "persona" to use slot 1 of persona_id.
- `styles` (array): Design style names, e.g. ["Scandinavian"]; for Japandi use ["Japanese Design", "Scandinavian"]. Case-sensitive; see luw_list_options.
- `variations` (integer): Number of alternative designs (1-4, default 1); each is billed as a generation.

### `luw_exterior_design` (~388 tokens)

Exterior design (Exterior AI)

Luw.ai Exterior AI: redesign a building exterior or facade photo — houses, villas, apartments, commercial buildings — in a new architectural style, with new materials, colors and landscaping, keeping the structure. Costs 1 credit per variation.

Input parameters:

- `building_type` (string): Building/space type, e.g. "Modern House Exterior", "Luxury Villa Exterior", "Outdoor Patio" (see luw_list_options kind="exterior_types").
- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string, required): Photo of the building (https:// URL, local file path, or data: URI).
- `persona_id` (integer): Persona whose saved images and style knowledge to use.
- `precision` (integer): How strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
- `prompt` (string): What you want, in plain language.
- `reference_images` (array): Up to 6 reference images (furniture, materials, products, mood boards) to draw from.
- `seed` (integer): Fix for reproducible results.
- `style_reference` (string): Style-transfer source: an image whose look to copy (https:// URL, local file path, or data: URI), or "persona" to use slot 1 of persona_id.
- `styles` (array): Design style names, e.g. ["Scandinavian"]; for Japandi use ["Japanese Design", "Scandinavian"]. Case-sensitive; see luw_list_options.
- `variations` (integer): Number of alternative designs (1-4, default 1); each is billed as a generation.

### `luw_sketch_to_render` (~332 tokens)

Sketch to render (Sketch AI)

Luw.ai Sketch AI: turn a hand sketch, line drawing, floor-plan perspective or rough draft into a photorealistic render. Costs 1 credit per variation.

Input parameters:

- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string, required): The sketch or drawing (https:// URL, local file path, or data: URI).
- `persona_id` (integer): Persona whose saved images and style knowledge to use.
- `precision` (integer): How strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
- `prompt` (string): What you want, in plain language.
- `seed` (integer): Fix for reproducible results.
- `space_type` (string): What the sketch shows, e.g. "Living Room" or "Modern House Exterior".
- `style_reference` (string): Style-transfer source: an image whose look to copy (https:// URL, local file path, or data: URI), or "persona" to use slot 1 of persona_id.
- `styles` (array): Design style names, e.g. ["Scandinavian"]; for Japandi use ["Japanese Design", "Scandinavian"]. Case-sensitive; see luw_list_options.
- `variations` (integer): Number of alternative designs (1-4, default 1); each is billed as a generation.

### `luw_render` (~209 tokens)

Photorealistic render (Render AI)

Luw.ai Render AI: turn a 3D model view, CAD/BIM screenshot, clay render or basic visualization into a photorealistic architectural render. Costs 1 credit per variation.

Input parameters:

- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `format` (string): Output image format.
- `image` (string, required): The 3D view or base render (https:// URL, local file path, or data: URI).
- `precision` (integer): How strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
- `prompt` (string): What you want, in plain language.
- `reference_images` (array): Up to 6 reference images (furniture, materials, products, mood boards) to draw from.
- `variations` (integer): Number of alternative designs (1-4, default 1); each is billed as a generation.

### `luw_edit_image` (~259 tokens)

Edit image with a prompt (Magic Prompt AI)

Luw.ai Magic Prompt AI: edit any image with a plain-language instruction: "make the sofa green velvet", "add a pendant lamp over the table", "turn it into a night scene". Pass products, materials or a mood board as reference_images to place or apply them. For edits restricted to an exact area, use luw_magic_wand. Costs 1 credit per variation.

Input parameters:

- `engine` (string): Model: aria (default), symphony (Symphony-3) or nano-banana-2.
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string, required): Image to edit (https:// URL, local file path, or data: URI).
- `prompt` (string, required): The edit to make.
- `reference_images` (array): Up to 6 reference images (furniture, materials, products, mood boards) to draw from.
- `resolution` (string): Output resolution (default 2k).
- `seed` (integer): Fix for reproducible results.
- `variations` (integer): Number of alternative designs (1-4, default 1); each is billed as a generation.

### `luw_magic_wand` (~310 tokens)

Masked edit: replace, remove, change material (Magic Wand AI)

Luw.ai Magic Wand AI: change only a masked area of an image. Give a prompt to add/replace what's there, remove=true to erase it, or material_image to re-surface it (e.g. new flooring or wall tiles). The mask is a black-and-white image the same size as the input; white marks the area to change. Get masks from luw_segment. Costs 1 credit.

Input parameters:

- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string, required): Image to edit (https:// URL, local file path, or data: URI).
- `keep_structure` (boolean): Preserve the masked area's geometry/lines while changing its look (structure-guided fill).
- `mask_image` (string, required): Black/white mask, white = area to change (https:// URL, local file path, or data: URI).
- `material_image` (string): Material/texture to apply to the masked area (https:// URL, local file path, or data: URI); luw_list_options kind="materials" has a ready-made catalog.
- `prompt` (string): What to put in the masked area.
- `remove` (boolean): Remove whatever is in the masked area.
- `seed` (integer): Fix for reproducible results.

### `luw_landscape_design` (~221 tokens)

Landscape & garden design (Landscape AI)

Luw.ai Landscape AI: design a garden, yard or outdoor area inside a masked region of a photo, with plants chosen for the location's climate and sun exposure. Costs 1 credit.

Input parameters:

- `city` (string): Location, for climate-appropriate planting, e.g. "Antalya".
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string, required): Photo of the outdoor area (https:// URL, local file path, or data: URI).
- `mask_image` (string, required): Black/white mask, white = area to landscape (https:// URL, local file path, or data: URI).
- `prompt` (string): What you want, in plain language.
- `seed` (integer): Fix for reproducible results.
- `sun_exposure` (string): e.g. "Full sun (6+ hours)", "Partial sun (4 - 6 hours)", "Shade (less than 4 hours)".

### `luw_upscale_image` (~124 tokens)

Upscale an image

Luw.ai Photo Enhance AI: enhance the quality of an image and enlarge it 2x, 4x or 8x. Costs 1 credit.

Input parameters:

- `format` (string): Output image format.
- `image` (string, required): Image to upscale (https:// URL, local file path, or data: URI).
- `precision` (integer): How strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
- `scale`: 2, 4 or 8 (default 2).

### `luw_expand_image` (~98 tokens)

Expand a cropped photo

Luw.ai Expand AI: outpaint a tightly cropped architectural or interior photo to a wider view. Costs 1 credit.

Input parameters:

- `format` (string): Output image format.
- `image` (string, required): Photo to expand (https:// URL, local file path, or data: URI).
- `precision` (integer): How strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.

### `luw_remove_furniture` (~103 tokens)

Empty a room

Luw.ai Remove Furniture AI: remove the furniture from a room photo, keeping walls, floor and windows. Costs 1 credit.

Input parameters:

- `format` (string): Output image format.
- `image` (string, required): Photo of the furnished room (https:// URL, local file path, or data: URI).
- `precision` (integer): How strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.

### `luw_vectorize_image` (~59 tokens)

Convert an image to SVG

Luw.ai Vector AI: convert a photo or drawing into a clean SVG vector. Costs 1 credit.

Input parameters:

- `image` (string, required): Photo or drawing to vectorize (https:// URL, local file path, or data: URI).

### `luw_background` (~163 tokens)

Remove or replace background

Luw.ai Change Background: cut out a product/object from its background (transparent PNG) — or, with a prompt, place it in a new generated scene for marketing shots ("on a marble kitchen counter, morning light"). Omit prompt to just remove the background. Costs 1 credit.

Input parameters:

- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string, required): Product or object photo (https:// URL, local file path, or data: URI).
- `prompt` (string): New background to generate. Leave empty to remove the background.

### `luw_segment` (~156 tokens)

Segment objects into masks (Segment AI)

Luw.ai Segment AI: detect objects in a photo and return black-and-white masks as image URLs — every object (wall, floor, sofa, …) or only what you describe in prompt. Feed a mask URL into luw_magic_wand or luw_landscape_design to edit exactly that area. Costs 1 credit.

Input parameters:

- `image` (string, required): Photo to segment (https:// URL, local file path, or data: URI).
- `labels` (array): Keep only masks whose label contains one of these words (e.g. ["floor", "wall"]).
- `prompt` (string): What to segment, e.g. "walls", "the sofa", "lawn". Omit to segment everything.

### `luw_generate_image` (~251 tokens)

Text to image (Fluw AI)

Luw.ai Fluw AI: generate a photorealistic image or illustration from a text prompt (optionally guided by an input image) — concept art, interiors, products, marketing visuals. Set format="svg" for a vector illustration (Fluw Vector AI). Costs 2 credits per image.

Input parameters:

- `aspect_ratio` (string)
- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output format; svg switches to Fluw Vector AI.
- `image` (string): Optional guide image (https:// URL, local file path, or data: URI).
- `prompt` (string, required): What to generate.
- `seed` (integer): Fix for reproducible results.
- `styles` (array): Design style names, e.g. ["Scandinavian"]; for Japandi use ["Japanese Design", "Scandinavian"]. Case-sensitive; see luw_list_options.
- `variations` (integer): Number of alternative designs (1-4, default 1); each is billed as a generation.

### `luw_generate_pattern` (~179 tokens)

Seamless pattern / texture (Pattern AI)

Luw.ai Pattern AI: generate a seamless, tileable pattern or texture — tiles, wallpaper, fabric, terrazzo, wood, stone — ready to repeat across a surface. Costs 1 credit.

Input parameters:

- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `format` (string): Output image format.
- `image` (string): Optional reference image (https:// URL, local file path, or data: URI).
- `prompt` (string, required): The pattern, e.g. "blue and white Moroccan zellige tiles".
- `size`: Output size in px. aria: 512 or 768 (default); symphony: 512 or 1024 (default).

### `luw_generate_video` (~325 tokens)

Image to cinematic video (Video AI)

Luw.ai Video AI (Motion): animate a design image into a short cinematic video — fly-throughs, dolly moves, drone shots, reveals. Camera motions: A Forward Dolly, Flythrough Cinematic, Return to Empty Room, Lighting and Color Details, Drone flying to center, Dramatic Zoom Out, Reverse Zoom In, Slow Pull Back, Reveal Zoom, Ground to Sky Tilt, Side Tracking Zoom, Aerial Descent. Pass end_image to make the video end on that frame, e.g. the original photo as image and its redesign as end_image for a before → after transition. Takes a few minutes — expect a processing_url to collect with luw_get_result. Costs 10 credits (aria) or 20 (symphony), with or without end_image.

Input parameters:

- `camera_motion` (string): One of the camera motions listed above, e.g. "Flythrough Cinematic".
- `end_image` (string): Optional end frame the video moves to; use the start frame's aspect ratio (https:// URL, local file path, or data: URI).
- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `enhance_prompt` (boolean): Let Luw.ai's prompt enhancer expand a short prompt.
- `image` (string, required): Start frame (a render or photo) (https:// URL, local file path, or data: URI).
- `prompt` (string): What should happen in the video.
- `seed` (integer): Fix for reproducible results.

### `luw_image_to_3d` (~206 tokens)

Image to 3D model (3DGen AI)

Luw.ai 3DGen AI: generate a textured 3D model (GLB) from a photo of an object — furniture, decor, products. Add up to 3 photos from other angles for better accuracy. For text-to-3D, first make an image with luw_generate_image. Costs 3 credits (aria) or 8 (symphony).

Input parameters:

- `engine` (string): Luw.ai model: aria (default) or symphony (Symphony-3).
- `extra_angles` (array)
- `image` (string, required): Photo of the object (https:// URL, local file path, or data: URI).
- `reflections` (boolean): Enable reflective materials (symphony engine only).
- `seed` (integer): Fix for reproducible results.
- `simplify` (integer): Mesh simplification level (0 = off, default).
- `texture` (integer): Texture size setting (0 = default).

### `luw_get_result` (~138 tokens)

Get generation result

Collect the result of a Luw.ai generation that was still processing (tools return a processing_url when a job outlasts their wait). Waits for the job to finish (up to the server's wait limit) — call again if it's still running. Free; never re-run a generation instead.

Input parameters:

- `processing_url` (string, required): The processing_url returned by a generation tool.
- `source_image` (string): The source returned with that processing_url (the job's input image), so the result is shown before and after.
- `wait` (boolean): Wait for completion (default true). false = check once and return immediately.

### `luw_upload_file` (~167 tokens)

Upload a file to Luw.ai

Upload an image, video or 3D file to Luw.ai storage and get a URL usable by every Luw.ai tool. Rarely needed: all tools already accept local paths and data: URIs and upload them automatically. Useful to get a shareable URL, to re-host an image from a site Luw.ai can't reach, or to store a file permanently.

Input parameters:

- `persistent` (boolean): Keep the file in your Luw.ai storage permanently. Default: temporary, auto-deleted after 12 hours.
- `persona_id` (integer): Persona to store a persistent file under (default: your first persona).
- `source` (string, required): Local file path, file:// URL, data: URI, or an https:// URL to copy into Luw.ai storage.

### `luw_list_options` (~99 tokens)

List styles, room types, materials…

Look up valid values for other Luw.ai tools: design_styles (styles param), interior_types (room_type), exterior_types (building_type), video_styles (camera_motion), materials (Magic Wand material_image catalog), professions (persona profession). Free.

Input parameters:

- `details` (boolean): Include descriptions and preview image URLs (longer output).
- `kind` (string, required)
- `search` (string): Case-insensitive filter on names/descriptions.

### `luw_run_model` (~204 tokens)

Run any Luw.ai model (advanced)

Call POST /generate with raw API parameters, for models or options the dedicated tools don't cover (e.g. persona-slot inputs, webhooks). Models: interior, exterior, sketch, render, magicprompt, magicwand, moodboard, landscape, enhance, expand, vector, removefurniture, segment, segmentprompt, fluw, fluwvector, pattern, changebg, removebg, video, 3dgen. Parameter reference: https://luw-ai.gitbook.io/api. Image fields (image, end_image, mask_image, material_image, style_transfer, extra_image_1…6) also accept local paths and data: URIs. Spends credits like the model's own tool.

Input parameters:

- `model` (string, required): Model id, e.g. interior or magicprompt.
- `params` (object): Other /generate parameters, e.g. {"image": "…", "prompt": "…", "precise": 75}.

### `luw_archigpt` (~166 tokens)

Ask ArchiGPT (architecture & design expert)

Ask Luw.ai's ArchiGPT, an AI architect: design advice, feng shui, space planning, material and color suggestions, technical questions, and estimating square meters from a photo or plan. Attach an image to discuss it. Each call is a standalone question, so put the details it depends on into the message. Costs 1 credit per ~3000 words.

Input parameters:

- `image` (string): Image to discuss (https:// URL, local file path, or data: URI).
- `language` (string): Reply language, e.g. "en" or "tr". Auto-detected when omitted.
- `message` (string, required): Your question or message, with the details it depends on.
- `persona_id` (integer): Persona that remembers this conversation.

### `luw_personas` (~368 tokens)

Manage personas & their training images

Personas hold a reusable design identity: style knowledge plus saved images (trainings). Slots 1-6 train the persona's visual style (slot 1 is the style-transfer reference used by style_reference="persona"), slot 7 is the default input image, 8+ are free-form data; add_training without a slot "likes" a design. Pass persona_id to generation tools to use one.
Actions: list, get, create, update, delete, list_trainings, add_training, update_training, delete_training, clear_slot.

Input parameters:

- `action` (string, required)
- `extras` (string): Extra metadata, e.g. the prompt behind a liked design.
- `image` (string): Training image (https:// URL, local file path, or data: URI); stored permanently.
- `info` (string): Description of the training image.
- `knows` (string): Comma-separated style knowledge, e.g. "Modern,Minimalism" or room/building types.
- `limit` (integer): list / list_trainings: items per page (default 20).
- `name` (string)
- `page` (integer): list / list_trainings: page number (default 1).
- `persona_id` (integer)
- `profession` (string): Tool the persona belongs to, e.g. Interior, Exterior, MagicPrompt, MagicWand, Enhance, Video, Render, 3DGen, Fluw, Sketch, Landscape, MoodBoard, ArchiGPT. For list: only that tool's personas (fast).
- `search` (string): list: filter by name/title/knows.
- `slot` (integer)
- `title` (string): Short description of the persona.
- `training_id` (integer)

### `luw_projects` (~224 tokens)

Manage Luw.ai projects, folders & media

Organize work in Luw.ai projects (called boards in the API), with nested folders and media. Use add_media to save generated results into a project.
Actions: list, get, create, rename, delete, list_folders, create_folder, update_folder, delete_folder, add_media, delete_media, move_media.

Input parameters:

- `action` (string, required)
- `control_image` (string): add_media: optional source/reference image, e.g. the original photo of a redesign.
- `extras` (string): add_media: metadata as a JSON string, e.g. {"prompt": "…"}.
- `folder_id` (integer): Folder to act on, or target folder for add_media/move_media (omit = project root).
- `media_id` (integer)
- `name` (string): Project or folder name.
- `parent_id` (integer): Parent folder for nested folders.
- `project_id` (integer)
- `url` (string): add_media: the media (https:// URL, local file path, or data: URI).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/ai-luw-mcp/luw-ai-mcp#diagnostics

## Score history

- 2026-10-24: 86
- 2026-10-23: 86
- 2026-10-22: 85
- 2026-10-21: 85
- 2026-10-20: 84
- 2026-10-19: 84
- 2026-10-18: 83
- 2026-10-17: 68
- 2026-10-16: 83
- 2026-10-15: 82
- 2026-10-14: 49
- 2026-10-13: 49
- 2026-10-12: 49

## Common questions

### What is the Luw.ai MCP server?

Luw.ai is an MCP server listed in the public MCP registry as ai.luw/mcp. AI interior, exterior and landscape design, photoreal rendering, image editing, video and 3D. This page covers its npm package (@luw-ai/mcp).

### Is the Luw.ai MCP server safe to use?

Luw.ai scores 86 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 Luw.ai MCP server expose?

Luw.ai exposes 24 tools: luw_interior_design, luw_exterior_design, luw_sketch_to_render, luw_render, luw_edit_image, and 19 more. Their descriptions and schemas cost roughly 5,177 tokens of context every time the server is loaded.

### Is the Luw.ai MCP server still maintained?

Luw.ai is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Luw.ai MCP server under?

Luw.ai declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@luw-ai/mcp
- Socket report: https://socket.dev/npm/package/@luw-ai/mcp
- Repository: https://github.com/Luvi-io/luw-mcp
- Website: https://luw.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-luw-mcp/luw-ai-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-luw-mcp/luw-ai-mcp.json
- HTML version of this page: https://verifymcp.io/servers/ai-luw-mcp/luw-ai-mcp
