Skip to main content
Glama

You:     Redesign ~/Desktop/living-room.jpg in Japandi style, give me 2 options.
Claude:  ⟶ luw_interior_design  ✓ 2 designs in 21s   [shows both images]
You:     Love the first one. Make the sofa green velvet, then turn it into a fly-through video.
Claude:  ⟶ luw_edit_image ⟶ luw_generate_video   ✓

Quick start

1. Get an API key at app.luw.ai/dashboard/api. New accounts get free credits.

2. Add Luw.ai to your client. Pick one:

claude mcp add luw --scope user --env LUW_API_KEY=YOUR_LUW_API_KEY -- npx -y @luw-ai/mcp

No-install alternative (hosted server):

claude mcp add --transport http luw https://mcp.luw.ai/mcp --header "Authorization: Bearer YOUR_LUW_API_KEY"

One click: download luw.mcpb, double-click it, paste your API key. Nothing else to install.

Or add this to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}

Click Add to Cursor above and replace YOUR_LUW_API_KEY, or add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}

Click Install in VS Code above. VS Code asks for your key and keeps it in its secret storage. Or add to .vscode/mcp.json:

{
  "inputs": [{ "type": "promptString", "id": "luw_api_key", "description": "Luw.ai API key", "password": true }],
  "servers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "${input:luw_api_key}" }
    }
  }
}

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}
codex mcp add luw --env LUW_API_KEY=YOUR_LUW_API_KEY -- npx -y @luw-ai/mcp

Or in ~/.codex/config.toml:

[mcp_servers.luw]
command = "npx"
args = ["-y", "@luw-ai/mcp"]
env = { LUW_API_KEY = "YOUR_LUW_API_KEY" }

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}

URL

https://mcp.luw.ai/mcp

Transport

Streamable HTTP

Auth header

Authorization: Bearer YOUR_LUW_API_KEY

{
  "mcpServers": {
    "luw": {
      "url": "https://mcp.luw.ai/mcp",
      "headers": { "Authorization": "Bearer YOUR_LUW_API_KEY" }
    }
  }
}

If your client only accepts a URL and can't send headers (for example ChatGPT connectors), use https://mcp.luw.ai/mcp?api_key=YOUR_LUW_API_KEY. Anyone who has that URL can spend your credits, so keep it private.

The hosted server is stateless and stores nothing. Your key goes straight to the Luw.ai API on each request. It can't read files from your computer, so pass image URLs, or use the local npx setup to work with local files.

Windows: if npx isn't found, use "command": "cmd", "args": ["/c", "npx", "-y", "@luw-ai/mcp"]. Requires Node.js 18 or later. The Claude Desktop extension bundles everything it needs.

Related MCP server: arcframe-mcp

What you can ask

  • "Redesign this bedroom (~/Downloads/bedroom.jpg) as Mid-Century Modern, 3 variations."

  • "This listing photo is an empty room. Stage it as a cozy Scandinavian living room."

  • "Render my sketch plan-sketch.png as a photoreal modern villa at golden hour."

  • "Change the floor in this kitchen to herringbone oak." (segments the floor, then swaps the material)

  • "Remove all the furniture from this room."

  • "Put this chair photo on a terrazzo floor in a sunlit gallery for an ad."

  • "Turn this render into a drone fly-through video."

  • "Make a 3D model of this armchair from these 3 photos."

  • "Seamless blue zellige tile texture, 1024px."

  • "Ask ArchiGPT how to improve the feng shui of this floor plan."

Built-in prompts show up as slash commands or prompt templates in your client: redesign_room, stage_empty_room, sketch_to_render, product_shot.

Tools

Tool

What it does

Credits

luw_interior_design

Redesign a room in any style; empty_room for virtual staging

1

luw_exterior_design

Redesign a facade or building exterior

1

luw_sketch_to_render

Sketch or drawing to photoreal render

1

luw_render

3D, CAD or clay view to photoreal render

1

luw_edit_image

Edit any image with a sentence (Magic Prompt); 2K/4K

1

luw_magic_wand

Masked edit: replace, remove, or apply a material

1

luw_landscape_design

Gardens and outdoor areas, matched to climate and sun

1

luw_image_tools

upscale 2/4/8×, expand, remove_furniture, vectorize to SVG

1

luw_background

Remove a background, or replace it with a generated scene

1

luw_segment

Object masks (all objects, or by prompt) as image URLs

1

luw_generate_image

Text to image (Fluw), or format: "svg" for vectors

2

luw_generate_pattern

Seamless, tileable textures and patterns

1

luw_generate_video

Image to cinematic video with 12 camera motions

10 (20 with Symphony)

luw_image_to_3d

Photos to a textured 3D model (GLB)

3 (8 with Symphony)

luw_archigpt

Chat with ArchiGPT, an AI architect (accepts images)

1 per ~3k words

luw_get_result

Collect a long-running job (free)

0

luw_list_options

Valid styles, room and building types, camera motions, materials (free)

0

luw_upload_file

Upload a file to Luw.ai storage and get a URL (free)

0

luw_run_model

Call any Luw.ai model with raw API parameters

varies

luw_personas

Personas: reusable style identity, training images and slots

0

luw_projects

Projects (boards), folders and media

0

luw_team

Enterprise: credits, usage, members, invitations (opt-in)

0

Every generation uses your Luw.ai credits. Variations are billed one generation each.

How it works

  • Local files just work. Any image argument accepts an https:// URL, a local path (~/Desktop/room.jpg), or a data: URI. Local files are uploaded to Luw.ai storage as temporary files (deleted after 12 hours) and cached for the session, so repeated edits don't upload the same file again.

  • You see the results. Finished images are embedded in the tool result, so Claude and other clients show them inline. Set LUW_OUTPUT_DIR to also save every result to disk.

  • Long jobs don't time out. A call waits up to 50 seconds and streams progress to clients that show it. If a job like a video takes longer, the tool returns a processing_url and the assistant collects it with luw_get_result, without generating (or paying) twice.

  • Never billed twice. Every generation request carries an Idempotency-Key, so if a network error forces a retry, Luw.ai returns the original job instead of charging again.

  • Masks are handled for you. luw_segment returns masks as URLs, so "change the floor" becomes segment ⟶ magic wand with no manual masking.

  • Fast startup. The package is one bundled file with zero dependencies, so npx downloads a single ~260 KB package and starts right away.

Configuration

Variable

Default

LUW_API_KEY

(required)

Your API key (get one). LUW_API_TOKEN also works.

LUW_OUTPUT_DIR

(off)

Also download results (images, videos, GLB, SVG) into this folder

LUW_TOOLSETS

all except team

Comma-separated list from generate, archigpt, personas, projects, team, or all

LUW_WAIT_TIMEOUT_SECONDS

50

How long a call waits before returning a processing_url. Raise it for clients with long tool timeouts, such as Claude Code.

LUW_INLINE_IMAGES

true

Embed result images in tool output

LUW_API_BASE_URL

https://api.luw.ai/v2

API endpoint override

Self-hosting the remote server

The same package serves the hosted Streamable HTTP endpoint:

npx -y @luw-ai/mcp --http --port 8080 --host 0.0.0.0   # MCP at /mcp, health at /health
docker build -t luw-mcp . && docker run -p 8080:8080 luw-mcp

It's stateless and holds no secrets. Each request brings its own key in Authorization: Bearer …, X-Luw-Api-Key, or ?api_key=. It deploys to Vercel as-is (vercel.json is included), and a Procfile is included for Heroku. See docs/maintainers.md for deployment and release steps.

Development

npm ci
npm test               # unit and protocol tests (no network)
npm run build          # bundles dist/cli.js
npm run inspector      # try every tool in the MCP Inspector
LUW_API_KEY=... npm run smoke            # live checks against the real API (free)
LUW_API_KEY=... npm run smoke -- --paid  # plus one real generation (1 credit)
npm run mcpb           # build/luw.mcpb, the Claude Desktop extension

Support

MIT © Luvi Technologies, Inc.

Available Tools

21 tools
luw_archigptAsk ArchiGPT (architecture & design expert)A

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. Pass earlier turns in history to continue a conversation. Costs 1 credit per ~3000 words.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoImage to discuss (https:// URL, local file path, or data: URI).
historyNoPrevious messages of this conversation, oldest first.
messageYesYour question or message.
languageNoReply language, e.g. "en" or "tr". Auto-detected when omitted.
persona_idNoPersona that remembers this conversation.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, and the description corroborates this by disclosing a real cost ('Costs 1 credit per ~3000 words'), which is valuable behavioral context not present in the annotations. It does not describe failure modes or response format, but the pricing disclosure is a meaningful addition beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, followed by usage hints and a cost note; three compact sentences with little waste. The capability enumeration is slightly long but each item adds real scope, so the size is justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should carry the return-value burden, but for a conversational assistant the text reply is implied. It covers purpose, image/history usage, and cost; only the response shape and language/persona behavior are left implicit. Annotations cover the safety profile, so this is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters, making 3 the baseline. The description lightly reinforces the image and history params ('Attach an image to discuss it', 'Pass earlier turns in history') but adds no format, syntax, or constraint detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Ask') and resource (ArchiGPT, an AI architect) and enumerates concrete capabilities: design advice, feng shui, space planning, materials/colors, technical questions, and square-meter estimation from a photo or plan. The purpose is unmistakable, though it never names or contrasts itself against the sibling design tools (luw_interior_design, luw_exterior_design, etc.), so differentiation is left to inference.

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

Usage Guidelines4/5

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

Gives clear operational context: 'Attach an image to discuss it' and 'Pass earlier turns in history to continue a conversation.' These tell the agent how to drive the tool across turns. However, there is no guidance on when to prefer ArchiGPT over the image-generation siblings or when not to use it, so routing remains implied.

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

luw_backgroundRemove or replace backgroundA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesProduct or object photo (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput image format.
promptNoNew background to generate. Leave empty to remove the background.
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare non-readonly, non-destructive, open-world, non-idempotent behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: the output is a transparent PNG and each call costs 1 credit, which an agent cannot get from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loading the core operation and then the prompt variant, with the cost note earning its place. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter image tool with no output schema, the description covers both operating modes, the output artifact, and the cost. It omits default behavior details (e.g., default engine/format) but those live in the schema, so the coverage is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema by reinforcing the prompt/no-prompt branch semantics and giving a concrete example prompt ('on a marble kitchen counter, morning light'), which helps the agent craft the parameter correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: cutting an object out of its background to a transparent PNG, or replacing the background with a generated scene. This is clearly distinguishable from render/design siblings in substance, but no sibling is named, so the differentiation is implicit rather than explicit.

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

Usage Guidelines4/5

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

Gives clear conditional guidance: with a prompt it generates a new scene, omit the prompt to just remove the background. That covers the two usage modes well, but there are no exclusions or named alternatives (e.g., luw_edit_image) for cases where a different tool is a better fit.

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

luw_edit_imageEdit image with a prompt (Magic Prompt AI)A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageYesImage to edit (https:// URL, local file path, or data: URI).
engineNoModel: aria (default), symphony (Symphony-3) or nano-banana-2.
formatNoOutput image format.
promptYesThe edit to make.
resolutionNoOutput resolution (default 2k).
variationsNoNumber of alternative designs (1-4, default 1); each is billed as a generation.
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.
reference_imagesNoUp to 6 reference images (furniture, materials, products, mood boards) to draw from.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (not read-only, not idempotent, open-world, not destructive), so the bar is lower. The description adds genuinely useful context beyond that: the cost model ("1 credit per variation") which is not in the schema or annotations. It does not describe failure behavior or output form, keeping it at a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the purpose and examples, then the reference_images note, the alternative routing, and the cost fact. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter generation tool the description covers purpose, references, alternative routing, and cost. Since there is no output schema, it could have clarified what is returned (image URL/artifact, variation handling) and what happens on failure, which is the only notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description elaborates the intent of reference_images (place/apply products or materials) and gives example prompts, but it adds no syntax, format, or constraint detail beyond what the schema already documents for the 9 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb+resource ("Edit any image") plus the mechanism (plain-language instruction) and concrete prompt examples. It also positively distinguishes itself from luw_magic_wand for area-restricted edits, so an agent can separate it from that sibling without reading schemas.

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

Usage Guidelines4/5

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

It states the core use case, explains reference_images usage (products, materials, mood board), and routes precise area edits to luw_magic_wand. It lacks guidance versus other siblings like luw_generate_image (no source image) or the design-specific tools, so context is clear but exclusions are partial.

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

luw_exterior_designExterior design (Exterior AI)A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageYesPhoto of the building (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput image format.
promptNoWhat you want, in plain language.
stylesNoDesign style names, e.g. ["Japandi"]. Case-sensitive; see luw_list_options.
precisionNoHow strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
persona_idNoPersona whose saved images/knowledge to use (see luw_personas).
variationsNoNumber of alternative designs (1-4, default 1); each is billed as a generation.
building_typeNoBuilding/space type, e.g. "Modern House Exterior", "Luxury Villa Exterior", "Outdoor Patio" (see luw_list_options kind="exterior_types").
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.
style_referenceNoStyle-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.
reference_imagesNoUp to 6 reference images (furniture, materials, products, mood boards) to draw from.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and non-idempotent, covering the mutation/safety profile. The description adds genuinely new behavioral context: the 1-credit-per-variation billing model and the structural-preservation constraint, which the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact clauses: the action and target lead, the scope list is tightly embedded, and the cost disclosure closes. No wasted words and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter generation tool with no output schema, the description covers purpose and cost but omits how results are retrieved (the sibling luw_get_result suggests an async flow) and does not point at luw_list_options for valid styles/building types. Adequate but leaves real operational gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (13 params, each documented, two with enums), so the schema already carries parameter meaning. The description adds no parameter-level syntax, format rules, or defaults beyond that, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ("Redesign") plus resource ("building exterior or facade photo") plus an enumerated scope (houses, villas, apartments, commercial buildings). The exterior/facade framing inherently distinguishes it from luw_interior_design without the agent opening either schema.

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

Usage Guidelines3/5

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

The phrase "keeping the structure" implies this operates on an existing photo rather than generating from scratch, which softly separates it from luw_generate_image / luw_render. However, it never states when to choose this over luw_interior_design, luw_sketch_to_render, or luw_landscape_design, and offers no exclusions or prerequisites.

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

luw_generate_imageText to image (Fluw AI)A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageNoOptional guide image (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput format; svg switches to Fluw Vector AI.
promptYesWhat to generate.
stylesNoDesign style names, e.g. ["Japandi"]. Case-sensitive; see luw_list_options.
variationsNoNumber of alternative designs (1-4, default 1); each is billed as a generation.
aspect_ratioNo
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the non-read-only, non-idempotent, open-world nature, so the bar is lower. The description adds genuinely useful behavioral facts the annotations lack: a cost of 2 credits per image, per-generation billing for variations, and the engine switch triggered by svg. It still omits auth requirements, rate limits, and whether generation is synchronous or a job to poll via luw_get_result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the primary capability and inputs front-loaded, followed by the format rule and pricing. No filler, no repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter generation tool with no output schema, an agent still lacks the return contract — image URL vs. job identifier and any required follow-up (luw_get_result) — which is exactly the gap an output schema would normally close. Pricing, format, and engine selection are covered, so this is adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 89%, so the schema already documents seed, image, engine, format, styles, and variations in detail. The description's only added semantics is the cost per image and per-variation billing, which the schema largely duplicates ('each is billed as a generation'). Baseline 3 is appropriate when structured fields carry the parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('generate a photorealistic image or illustration from a text prompt') plus input modalities (text prompt, optional guide image) and example domains. It is clearly the general-purpose text-to-image tool, but it never names or differentiates itself from specialists like luw_interior_design or luw_generate_pattern, so sibling routing is left to inference.

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

Usage Guidelines4/5

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

Concrete use-case context is given ('concept art, interiors, products, marketing visuals') along with a format-selection rule (format='svg' for vector illustration). There are no explicit exclusions or alternative-tool pointers, and listing 'interiors' arguably overlaps with the luw_interior_design sibling without reconciling the two.

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

luw_generate_patternSeamless pattern / texture (Pattern AI)A

Generate a seamless, tileable pattern or texture — tiles, wallpaper, fabric, terrazzo, wood, stone — ready to repeat across a surface. Costs 1 credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoOutput size in px. aria: 512 or 768 (default); symphony: 512 or 1024 (default).
imageNoOptional reference image (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput image format.
promptYesThe pattern, e.g. "blue and white Moroccan zellige tiles".
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, open-world, non-idempotent, non-destructive generation call. The one additive behavioral fact is 'Costs 1 credit,' which is genuinely useful and not in the structured data, but latency, async result retrieval, and failure behavior are unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the deliverable first and the cost last; every clause earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter generation tool with no output schema, the description covers what is produced but omits how the artifact is obtained (the presence of the sibling luw_get_result implies asynchronous retrieval), which an agent needs to complete a call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including enum explanations for engine/size/format, so the schema carries parameter meaning. The description adds nothing about prompt, engine, or size semantics beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (generate) and resource (seamless tileable pattern/texture) and enumerates concrete domains (tiles, wallpaper, fabric, terrazzo, wood, stone), which cleanly distinguishes it from the generic luw_generate_image sibling.

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

Usage Guidelines3/5

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

The description conveys the context of use ('ready to repeat across a surface'), which implies when a repeating pattern is wanted over a single image, but it never names an alternative tool or states when not to use it.

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

luw_generate_videoImage to cinematic video (Video AI)A

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. Takes a few minutes — expect a processing_url to collect with luw_get_result. Costs 10 credits (aria) or 20 (symphony).

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageYesStart frame (a render or photo) (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
promptNoWhat should happen in the video.
camera_motionNoOne of the camera motions listed above, e.g. "Flythrough Cinematic".
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations declare only safety flags (not read-only, non-idempotent, open-world), but the description adds the traits that actually matter: latency ('a few minutes'), the async processing_url contract, and a per-model credit cost (10 aria / 20 symphony). Cost and latency are exactly the behavioral context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose in the first clause, followed by motion options, then operational notes. The long inline camera-motion list is bulky but arguably necessary because the schema defers to 'listed above'; still, the enumeration dominates the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly supplies the retrieval path (processing_url via luw_get_result) plus cost and latency. It stops short of describing output format, duration, or resolution limits of the generated video, which would help an agent set expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real value: it enumerates the camera_motion values (which the schema only refers to as 'listed above') and ties the engine enum values to cost tiers. It leaves prompt/seed/enhance_prompt entirely to the schema, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Animate a design image into a short cinematic video', with concrete output examples (fly-throughs, dolly moves, drone shots, reveals). This clearly separates it from image-generation siblings such as luw_generate_image, luw_render, and luw_edit_image.

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

Usage Guidelines3/5

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

Provides an important workflow cue — 'Takes a few minutes — expect a processing_url to collect with luw_get_result' — which tells the agent this is async. However, it never states when to choose this over alternatives like luw_run_model or luw_image_to_3d, nor any preconditions on the input image. Usage is implied rather than explicit.

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

luw_get_resultGet generation resultA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoWait for completion (default true). false = check once and return immediately.
processing_urlYesThe processing_url returned by a generation tool.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the read-only and open-world profile, and the description adds real value on top: it explains the wait-limit ceiling, the polling retry pattern, and that the call is free. It does not describe what the returned payload contains, but with no output schema the cost/wait context is the more useful disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the collection scenario before the retry and cost caveats. Every clause carries information an agent needs; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only polling tool with no output schema, the definition covers the trigger, retry behavior, wait semantics and cost. The only minor gap is not hinting at what the result contains, which is acceptable given output is untyped.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are documented and the baseline is 3. The description still adds meaning beyond the schema by tying processing_url to its origin (returned by a generation tool) and noting the server-side wait limit that governs the wait flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Collect) and resource (the result of a Luw.ai generation) plus the exact trigger condition (a job that was still processing). It clearly distinguishes itself from the generation siblings, which produce work rather than retrieve it.

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

Usage Guidelines5/5

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

Explicitly says when to use it (when a generation tool returned a processing_url because the job outlasted its wait), what to do if it is still running (call again), and what not to do (never re-run a generation instead). Nothing is left to inference.

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

luw_image_to_3dImage to 3D model (3DGen AI)A

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageYesPhoto of the object (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
textureNoTexture size setting (0 = default).
simplifyNoMesh simplification level (0 = off, default).
reflectionsNoEnable reflective materials (symphony engine only).
extra_anglesNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare openWorldHint=true, destructiveHint=false and idempotentHint=false, and the description adds genuinely new behavioral context: exact credit cost per engine (3 aria / 8 symphony), which is not derivable from any structured field. It does not discuss async job behavior or result retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action and output format, followed by the enhancement tip and the cost/routing note. No filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter generation tool with no output schema and no annotations covering async behavior, the definition gives enough to invoke it confidently, but it never says how the resulting GLB is retrieved (a luw_get_result-style step) or whether the call is synchronous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 86%, setting a baseline of 3, but the description adds meaning the schema lacks: it explains why extra_angles matter (better accuracy, capped at 3) and links the engine enum value to its cost (aria vs symphony), which directly informs the parameter choice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generate a textured 3D model (GLB) from a photo of an object') and names the accepted subject domains (furniture, decor, products). It also differentiates from the related text-to-3D workflow by pointing to luw_generate_image, so an agent can separate it from siblings like luw_sketch_to_render or luw_render.

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

Usage Guidelines4/5

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

Gives clear usage context: one photo suffices, add up to 3 extra angles for accuracy, and route text-to-3D through luw_generate_image first. It lacks an explicit 'when not to use' (e.g., scenes/rooms vs single objects), which keeps it short of a 5.

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

luw_image_toolsUpscale, expand, empty a room, vectorizeA

One-step image utilities, 1 credit each:

  • upscale: enhance quality and enlarge 2x/4x/8x (Photo Enhance AI)

  • expand: outpaint a tightly cropped architectural photo to a wider view (Expand AI)

  • remove_furniture: empty a furnished room, keeping walls, floor and windows (Remove Furniture AI)

  • vectorize: convert a photo or drawing into a clean SVG vector (Vector AI)

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesInput image (https:// URL, local file path, or data: URI).
scaleNoupscale only: 2, 4 or 8 (default 2).
formatNoOutput image format.
operationYes
precisionNoHow strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true). The description adds value beyond them: the per-operation cost ('1 credit each') and the preservation guarantee for remove_furniture ('keeping walls, floor and windows'). It does not disclose return format or async/result-retrieval behavior, which matters for an openWorld generation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A front-loaded one-line summary followed by four tight bullets, each naming an operation and its effect. No filler; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should carry the return/result story, and it does not say how output is retrieved (though a luw_get_result sibling exists). Otherwise it is complete for a 4-operation, 5-parameter utility tool, with cost and operation semantics covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so the baseline is 3. The description usefully expands the 'operation' enum values (which the schema leaves undocumented) and confirms scale is upscale-only. However, it says nothing about 'precision' or 'format', and precision's applicability to a specific operation is left ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (one-step image utilities) and enumerates each of the four operations with a concrete verb and effect ('upscale: enhance quality and enlarge 2x/4x/8x', 'remove_furniture: empty a furnished room'). An agent can tell what each operation does. It stops short of distinguishing this multi-op tool from siblings like luw_edit_image or luw_render.

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

Usage Guidelines4/5

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

Each bullet supplies the condition that selects it ('outpaint a tightly cropped architectural photo', 'empty a furnished room'), which is genuine usage context. It never names alternatives or exclusions relative to the sibling image tools, so it is clear-but-not-routing.

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

luw_interior_designInterior design (Interior AI)A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageYesPhoto of the room (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput image format.
promptNoWhat you want, in plain language.
stylesNoDesign style names, e.g. ["Japandi"]. Case-sensitive; see luw_list_options.
precisionNoHow strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
room_typeNoRoom type, e.g. "Living Room", "Kitchen", "Bedroom", "Home Office" (see luw_list_options kind="interior_types").
empty_roomNoFurnish from scratch / convert the room to room_type (Fill Empty Room mode).
persona_idNoPersona whose saved images/knowledge to use (see luw_personas).
variationsNoNumber of alternative designs (1-4, default 1); each is billed as a generation.
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.
style_referenceNoStyle-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.
reference_imagesNoUp to 6 reference images (furniture, materials, products, mood boards) to draw from.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it discloses the credit cost (1 per variation) and what is preserved versus restyled (architecture kept; furniture/materials/colors/lighting changed).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each earning its place: purpose/constraint, what changes, the empty_room mode, and cost. Scoping and preservation are front-loaded before the mode instruction, so intent lands immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 14 params but full schema coverage and no output schema, the description need not document return values or parameter syntax; it covers the purpose, the key mode toggle, and cost. It could mention the variations billing/engine choice, but the schema handles those, leaving only minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description only adds meaning for empty_room (virtual staging / room conversion), which largely restates the schema's own text, and says nothing about the other 13 params. It neither contradicts nor meaningfully extends the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (redesign an interior photo) plus scope (home, office, shop, hotel) and a distinguishing constraint (keeping the room's architecture). An agent can tell this apart from exterior/landscape/archigpt siblings without opening any schema.

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

Usage Guidelines4/5

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

Gives clear usage context — redesign interiors while preserving architecture — and a concrete conditional instruction (set empty_room=true to furnish or convert a room via virtual staging). It never names an alternative sibling or an explicit when-not-to-use case, so it stops short of a 5.

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

luw_landscape_designLandscape & garden design (Landscape AI)A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoLocation, for climate-appropriate planting, e.g. "Antalya".
seedNoFix for reproducible results.
imageYesPhoto of the outdoor area (https:// URL, local file path, or data: URI).
formatNoOutput image format.
promptNoWhat you want, in plain language.
mask_imageYesBlack/white mask, white = area to landscape (https:// URL, local file path, or data: URI).
sun_exposureNoe.g. "Full sun (6+ hours)", "Partial sun (4 - 6 hours)", "Shade (less than 4 hours)".
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare a non-read-only, non-idempotent, open-world operation, so the safety profile is covered. The description adds the useful cost disclosure ('Costs 1 credit'), but says nothing about turnaround, failure/refund behavior, or that a generated image is returned — notable given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the capability and its scoping constraint come first, and the cost is appended as a single clause. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter generation tool with no output schema, the description covers purpose and cost but omits what is produced (image format/location of the result) and any mask-vs-image compatibility expectations. Adequate but leaves real gaps for an agent assembling a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description loosely ties 'climate' and 'sun exposure' to the city and sun_exposure parameters, but adds no format, sizing, or mask-matching constraints beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (design) and resource (garden, yard or outdoor area) scoped to a masked region of a photo, which separates it from luw_interior_design. It does not explicitly contrast with the closest sibling, luw_exterior_design, so the boundary there is left to inference.

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

Usage Guidelines3/5

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

The description implies when the tool applies (outdoor areas, climate- and sun-aware planting) but gives no explicit when-to-use versus luw_exterior_design, luw_render or luw_edit_image, and no prerequisites beyond the implied image+mask pair.

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

luw_list_optionsList styles, room types, materials…A
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
searchNoCase-insensitive filter on names/descriptions.
detailsNoInclude descriptions and preview image URLs (longer output).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds a useful non-structural trait — 'Free' — which matters in a toolset where sibling generation tools presumably consume credits. It does not describe output size/pagination beyond the details flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tightly packed sentence, front-loaded with the action and resource, followed by the kind-to-parameter mapping. No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should ideally sketch the return shape; it only implies it via the details flag ('descriptions and preview image URLs'). Given the tool is a simple read-only lookup, this is close to sufficient but leaves the response format implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents 'search' and 'details' but the enum values for 'kind' are bare strings. The description supplies the missing semantics by explaining what each kind value returns and which target parameter consumes it — genuine value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up) and resource (valid values) and enumerates exactly which option sets it returns, mapping each to the sibling parameter it feeds. An agent can distinguish this from luw_interior_design or luw_magic_wand without opening any schema.

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

Usage Guidelines4/5

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

Clearly frames this as a prerequisite lookup for other Luw.ai tools and names the consuming parameter for each kind, so the agent knows when it's needed. It stops short of explicit 'when not to use' or ordering guidance (e.g. call before invoking the design tool).

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

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageYesImage to edit (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput image format.
promptNoWhat to put in the masked area.
removeNoRemove whatever is in the masked area.
mask_imageYesBlack/white mask, white = area to change (https:// URL, local file path, or data: URI).
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.
keep_structureNoPreserve the masked area's geometry/lines while changing its look (structure-guided fill).
material_imageNoMaterial/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.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare destructiveHint=false and readOnlyHint=false, so the description correctly presents this as a non-destructive mutation. It adds valuable behavioral context: credit cost, mask semantics (white = area to change), and that masks come from luw_segment. Not quite a 5 because it doesn't disclose failure modes or output behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with zero waste, lead with the core purpose, then the three modes, then mask semantics and credit cost. Every sentence earns its place and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation tool with no output schema, the description does well: it covers the three main modes, mask sourcing, and cost. It could say more about the interaction between modes (e.g. can prompt and material_image be combined?) and the role of keep_structure, but overall it's sufficiently complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real value by explaining the semantics of key parameters in context: prompt for adding/replacing, remove for erasing, material_image for re-surfacing with examples. It does not cover seed, engine, format, or enhance_prompt, but those are self-documenting in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Change only a masked area of an image') and enumerates its three operating modes (prompt to add/replace, remove=true to erase, material_image to re-surface). This distinguishes it clearly from siblings like luw_edit_image and luw_segment.

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

Usage Guidelines4/5

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

It provides clear when-to-use context via the three modes and directs users to luw_segment for mask sourcing, which is a useful pointer. However, it doesn't explicitly state when NOT to use it versus luw_edit_image or other edit tools, so it falls short of a 5.

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

luw_personasManage personas & their training imagesA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoNoDescription of the training image.
nameNo
pageNolist / list_trainings: page number (default 1).
slotNo
imageNoTraining image (https:// URL, local file path, or data: URI); stored permanently.
knowsNoComma-separated style knowledge, e.g. "Modern,Minimalism" or room/building types.
limitNolist / list_trainings: items per page (default 20).
titleNoShort description of the persona.
actionYes
extrasNoExtra metadata, e.g. the prompt behind a liked design.
searchNolist: filter by name/title/knows.
persona_idNo
professionNoTool 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).
training_idNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is covered. The description adds substantial domain behavior the schema cannot express: slot partitioning (1-6 style, 7 default input, 8+ free-form data) and the 'like' semantics of slotless add_training. It does not warn that delete/delete_training/clear_slot are irreversible, but that is largely covered by the destructive annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but information-bearing: the slot taxonomy and the action list both earn their place, and the action enum is conveniently restated at the end. The opening sentence is somewhat meandering before it gets to concrete usage, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 14 parameters, ten actions and no output schema, the description should map parameters to actions (e.g., what list_trainings needs vs. add_training) and give some sense of return shape. It covers the slot model well but leaves action-to-parameter wiring and response behavior to inference, which is a meaningful gap at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 64%, and the description compensates on the parameters the schema leaves bare: it explains the meaning of slot values, the role of persona_id, and the behavior of add_training without a slot. It does not explain which parameters apply to which of the ten actions, which is the main remaining gap for a multi-action tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource (personas + their training images) and enumerates all ten actions, so an agent knows this is the CRUD hub for personas. It also differentiates from siblings by noting that persona_id is consumed by generation tools. The first sentence leans conceptual ('Personas hold a reusable design identity') rather than immediately stating what the tool does, which slightly blurs the verb+resource framing.

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

Usage Guidelines3/5

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

It gives real conditional guidance — add_training without a slot 'likes' a design, slot 1 is the style-transfer reference used by style_reference="persona", and persona_id should be passed to generation tools. However, there is no explicit when-to-use-this-tool-vs-siblings routing and no indication of prerequisites or ordering between actions.

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

luw_projectsManage Luw.ai projects, folders & mediaB
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoadd_media: the media (https:// URL, local file path, or data: URI).
nameNoProject or folder name.
actionYes
extrasNoadd_media: metadata as a JSON string, e.g. {"prompt": "…"}.
media_idNo
folder_idNoFolder to act on, or target folder for add_media/move_media (omit = project root).
parent_idNoParent folder for nested folders.
project_idNo
control_imageNoadd_media: optional source/reference image, e.g. the original photo of a redesign.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotent, so the safety profile is covered. The description adds nothing beyond that: it does not say whether delete/delete_folder/delete_media are permanent or reversible, whether media is removed from disk, or what permissions are needed. With annotations doing the work, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first front-loads the purpose and nesting model, the second covers the add_media routing and the action list. No filler, though the flat action enumeration is dense and does not convey per-action structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, 12-action destructive tool with no output schema, the description covers purpose and the action inventory but omits per-action parameter requirements, return shape, and irreversibility of deletes. It is minimally adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the schema already documents url, extras, folder_id and parent_id. The description lists the action enum values but never maps parameters to actions (e.g., that get/rename/delete need project_id, that create_folder needs name and optional parent_id). It adds the project/folder/media vocabulary but no per-action parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Organize work in Luw.ai projects') and enumerates all 12 supported actions, so the agent knows this is the project/folder/media management surface. It also disambiguates the API naming ('called boards in the API'). It does not explicitly contrast with siblings, but the siblings are all generation/design tools, so the distinction is largely self-evident.

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

Usage Guidelines3/5

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

It gives one concrete routing hint — 'Use add_media to save generated results into a project' — which ties this tool to the sibling generation tools. However, there is no guidance on when to use this tool versus luw_get_result or luw_upload_file, and no indication of which action to pick for a given intent.

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

luw_renderPhotorealistic render (Render AI)A

Turn a 3D model view, CAD/BIM screenshot, clay render or basic visualization into a photorealistic architectural render. Costs 1 credit per variation.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesThe 3D view or base render (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput image format.
promptNoWhat you want, in plain language.
precisionNoHow strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
variationsNoNumber of alternative designs (1-4, default 1); each is billed as a generation.
reference_imagesNoUp to 6 reference images (furniture, materials, products, mood boards) to draw from.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-idempotent, non-destructive, open-world operation. The description adds genuinely useful billing context ('Costs 1 credit per variation'), but says nothing about latency, async/polling behavior, or whether the source image is modified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero padding, with the transformation front-loaded and the cost caveat second. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, cost-incurring generation tool with no output schema, the definition covers what it does and what it costs, but omits the operational picture – notably whether results are returned inline or require retrieval via the sibling luw_get_result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including engine, precision and reference_images is already documented in the schema. The description adds only the per-variation billing note, which is the baseline expectation when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb and resource: it transforms a 3D view, CAD/BIM screenshot, clay render or basic visualization into a photorealistic architectural render. That is far more specific than the title alone, though it never distinguishes itself from close siblings like luw_sketch_to_render or luw_interior_design.

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

Usage Guidelines3/5

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

Listing accepted input types (3D view, CAD/BIM screenshot, clay render, basic visualization) implies when the tool applies, but there is no explicit when-not guidance and no routing to alternatives such as luw_sketch_to_render or luw_generate_image.

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

luw_run_modelRun any Luw.ai model (advanced)A

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, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id, e.g. interior or magicprompt.
paramsNoOther /generate parameters, e.g. {"image": "…", "prompt": "…", "precise": 75}.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, open-world, non-destructive. The description adds genuinely new behavior: it consumes credits like the model's own tool, and that image fields accept local paths and data: URIs. It does not, however, describe the response shape or async/polling behavior implied by the sibling luw_get_result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the escape-hatch rationale, then the model list, then the parameter reference and credit warning. The long model enumeration is dense but earns its place since those ids are the accepted values; the doc URL is a reasonable substitute for inlined detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generic, open-parameter write tool with no output schema, the definition covers inputs well but says nothing about what is returned or whether the call is synchronous or needs a follow-up via luw_get_result. That omission matters for an agent deciding how to complete the workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both params are documented, but the params object is fully open (additionalProperties: {}), so the description carries real extra weight: it enumerates the 21 valid model ids and clarifies that image/mask/material/style_transfer/extra_image fields also accept local paths and data: URIs. That is information the schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (POST /generate with raw parameters) and explicitly positions itself as the escape hatch for models/options the dedicated tools don't cover. The enumerated model list makes it immediately distinguishable from the ~20 dedicated siblings.

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

Usage Guidelines4/5

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

Gives clear when-to-use: models or options not covered by dedicated tools (e.g. persona-slot inputs, webhooks), which implies the alternative is the dedicated per-model tools. It doesn't explicitly instruct 'prefer the dedicated tool first', but the routing condition is unambiguous.

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

luw_segmentSegment objects into masks (Segment AI)A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesPhoto to segment (https:// URL, local file path, or data: URI).
labelsNoKeep only masks whose label contains one of these words (e.g. ["floor", "wall"]).
promptNoWhat to segment, e.g. "walls", "the sofa", "lawn". Omit to segment everything.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the safety profile (destructiveHint=false, openWorld=true, idempotentHint=false), so the bar is lower. The description adds genuinely useful context annotations cannot carry: the cost ('Costs 1 credit') and the output artifact shape ('black-and-white masks as image URLs'). It does not say whether repeated calls return identical masks, which matters given idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what the tool produces, followed by the downstream chaining instruction and the cost. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the burden of describing the return value (image URLs of B&W masks), plus cost and chaining behavior. It is nearly complete for a 3-parameter generative tool; only edge behavior (e.g. what happens when no object matches prompt) is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented in the schema, including prompt's 'Omit to segment everything' semantics. The description paraphrases the prompt parameter but adds no syntax, format, or interaction detail beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Detect objects in a photo and return black-and-white masks as image URLs') and distinguishes itself from siblings by naming the downstream tools that consume its output. An agent can tell this apart from luw_edit_image or luw_generate_image without opening any schema.

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

Usage Guidelines4/5

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

Explicitly routes the agent onward ('Feed a mask URL into luw_magic_wand or luw_landscape_design to edit exactly that area') and clarifies the two modes (segment everything vs. only what prompt describes). It stops short of stating when NOT to use this tool or what alternatives exist for non-mask segmentation needs.

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

luw_sketch_to_renderSketch to render (Sketch AI)B

Turn a hand sketch, line drawing, floor-plan perspective or rough draft into a photorealistic render. Costs 1 credit per variation.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoFix for reproducible results.
imageYesThe sketch or drawing (https:// URL, local file path, or data: URI).
engineNoLuw.ai model: aria (default) or symphony (Symphony-3).
formatNoOutput image format.
promptNoWhat you want, in plain language.
stylesNoDesign style names, e.g. ["Japandi"]. Case-sensitive; see luw_list_options.
precisionNoHow strictly to keep the input's structure: 90 = precise, 75 = balanced, 40 = creative.
persona_idNoPersona whose saved images/knowledge to use (see luw_personas).
space_typeNoWhat the sketch shows, e.g. "Living Room" or "Modern House Exterior".
variationsNoNumber of alternative designs (1-4, default 1); each is billed as a generation.
enhance_promptNoLet Luw.ai's prompt enhancer expand a short prompt.
style_referenceNoStyle-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.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds a genuinely useful cost signal ('Costs 1 credit per variation') that no annotation provides, but it says nothing about latency, failure modes, or what the output looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the core capability is front-loaded and the billing caveat follows. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, non-idempotent, credit-consuming generation tool with no output schema, the description covers purpose and cost but omits selection guidance against the many design/render siblings and gives no sense of result shape or turnaround. It is minimum viable, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with 12 well-documented parameters (seed, engine, precision, style_reference, etc.), so the schema does all the parameter work. The description contributes no additional parameter meaning, which is the baseline 3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('turn into') and a clear resource ('photorealistic render') from enumerated input types (sketch, line drawing, floor plan, rough draft). It is clear what the tool produces, but it never distinguishes itself from close siblings like luw_render or luw_interior_design, which could plausibly accept similar inputs.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and names no alternatives, despite a crowded sibling set (luw_render, luw_interior_design, luw_exterior_design) that an agent must choose between. The only contextual hint is the credit cost, which is pricing rather than routing advice.

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

luw_upload_fileUpload a file to Luw.aiA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesLocal file path, file:// URL, data: URI, or an https:// URL to copy into Luw.ai storage.
persistentNoKeep the file in your Luw.ai storage permanently. Default: temporary, auto-deleted after 12 hours.
persona_idNoPersona to store a persistent file under (default: your first persona).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=false, openWorld=true, destructive=false. The description adds genuinely useful behavioral context beyond that: uploads are normally unnecessary because other tools auto-upload, and the URL is reusable across tools. It does not restate the 12-hour auto-deletion (that lives in the schema) or discuss failure modes for unreachable URLs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary purpose, then the caveat, then the exceptions. No filler and every clause carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by stating the return value is a URL usable by every Luw.ai tool. Combined with full schema coverage and annotations, an agent has everything needed to decide and to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so source, persistent and persona_id are all fully documented in the schema itself. The description's mention of 're-host an image from a site Luw.ai can't reach' and 'store a file permanently' loosely maps to source and persistent but adds no format or syntax beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Upload an image, video or 3D file to Luw.ai storage') plus the outcome ('get a URL usable by every Luw.ai tool'). This distinguishes it clearly from the many design/render/generate siblings, which produce content rather than host it.

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

Usage Guidelines5/5

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

Explicitly frames scarcity of need ('Rarely needed: all tools already accept local paths and data: URIs and upload them automatically') and then names three concrete cases that do justify it: shareable URL, re-hosting an unreachable image, permanent storage. This is textbook when/when-not plus alternatives.

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

Tool Schema Changelog

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

  1. 21 tool updatesv0.1.0
    • First observedluw_archigpt
    • First observedluw_background
    • First observedluw_edit_image
    • First observedluw_exterior_design
    • First observedluw_generate_image
    • First observedluw_generate_pattern
    • First observedluw_generate_video
    • First observedluw_get_result
    • First observedluw_image_to_3d
    • First observedluw_image_tools
    • First observedluw_interior_design
    • First observedluw_landscape_design
    • First observedluw_list_options
    • First observedluw_magic_wand
    • First observedluw_personas
    • First observedluw_projects
    • First observedluw_render
    • First observedluw_run_model
    • First observedluw_segment
    • First observedluw_sketch_to_render
    • First observedluw_upload_file

TDQS

A3.7/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target distinct models/operations and the descriptions carefully draw boundaries (e.g. luw_edit_image vs luw_magic_wand, magic_wand for masked areas). However there is real overlap among luw_sketch_to_render, luw_render and luw_generate_image, and luw_run_model is a generic catch-all that overlaps every dedicated tool.

Naming Consistency4/5

All tools share a uniform luw_ prefix, and generate_* tools follow a clear pattern. There are minor deviations (magic_wand, background, segment are noun/verb fragments rather than verb_noun, and interior_design/exterior_design use noun_design), but the set remains readable and predictable.

Tool Count3/5

21 tools is on the heavy side for this surface, and several tools (luw_image_tools with 4 sub-actions, luw_personas with 11 actions, luw_projects with 12 actions) multiplex many operations each. The breadth of distinct AI models justifies much of it, but consolidation (e.g. merging sketch/render, or splitting bundled multi-action tools) would improve scoping.

Completeness4/5

Coverage is broad: generation, editing, segmentation, upscaling, 3D, video, personas, projects, result retrieval, option lookup and raw API access. Minor gaps exist (no history/listing of past generations, no credit/billing status, no deletion of individual generations), but core workflows have no dead ends.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers