@lunaar/mcp-server
Allows Windsurf (by Codeium) to access Lunaar's AI building blocks for sketch-to-render, virtual try-on, jewelry/glasses compositing, body measurement extraction, image-to-3D, AR viewer publishing, and upscaling.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@lunaar/mcp-servercreate a photoreal render from my kitchen sketch"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@lunaar/mcp-server
Model Context Protocol server for the Lunaar Public API. Lets Claude, Cursor, Windsurf and any other MCP-compatible host use Lunaar's AI building blocks — sketch-to-render, virtual try-on, jewelry / glasses compositing, body measurement extraction, image-to-3D, AR viewer publishing, upscaling — as native tools, all called by name from chat.
Quick install
You'll need an API key. Sign up at platform.lunaarvision.com → API Keys → New key and copy the lk_live_… value once.
Claude Desktop / Claude Code
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) — or the equivalent on Windows / Linux:
{
"mcpServers": {
"lunaar": {
"command": "npx",
"args": ["-y", "@lunaar/mcp-server"],
"env": {
"LUNAAR_API_KEY": "lk_live_REPLACE_ME"
}
}
}
}Cursor
~/.cursor/mcp.json (or Settings → Features → Model Context Protocol):
{
"mcpServers": {
"lunaar": {
"command": "npx",
"args": ["-y", "@lunaar/mcp-server"],
"env": { "LUNAAR_API_KEY": "lk_live_REPLACE_ME" }
}
}
}Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"lunaar": {
"command": "npx",
"args": ["-y", "@lunaar/mcp-server"],
"env": { "LUNAAR_API_KEY": "lk_live_REPLACE_ME" }
}
}
}Restart the host after editing config. The Lunaar tools should appear in the tool picker / /mcp list.
Related MCP server: arcframe-mcp
Tools exposed
Tool | Use it for | Cost |
| Convert an interior / exterior / kitchen sketch to a photoreal render. | 15 credits |
| Virtual try-on. Modes: | 10-15 credits |
| Generate alternate-pose variants (Front / Side45 / Side90 / Back) of a previously rendered Studio item. | 10 / pose |
| Composite a jewelry product onto a model or display surface. 4 display modes. | 10-15 credits |
| Drop a pair of glasses onto a face with anatomy-aware fit. | 10 credits |
| Pull anatomical measurements from a single full-body photo. | 10 credits |
| Generate a GLB 3D model + spinning preview video from a product photo. | 20 credits |
| Upload an existing GLB / USDZ and get a public AR-viewer URL. | 5 credits |
| Re-render a previously completed | 5 credits |
| Inspect any operation by id (use this when a long-running tool times out before the AI finishes). | free |
| Recent operations for the current API key, with status and credit usage. | free |
How long-running operations are handled
Most calls reach Completed within 30-90 seconds and the tool returns the final asset URL inline. For Image-to-3D (~3 minutes) the wrapper polls up to 4 minutes; if the host's tool-execution budget is shorter and the operation hasn't finished, the tool returns the operationId and the model can call lunaar_get_operation to pick the result up later.
Failed runs surface the user-friendly error message (Turkish, by design — same string Lunaar's product UI shows end users) and the credit refund total.
Configuration
Env var | Required | Default | Notes |
| yes | — | Your |
| no |
| Override only for staging or self-hosted gateway environments. |
Development
git clone https://github.com/Group-Taiga/lunaar-mcp-server.git
cd lunaar-mcp-server
npm install
npm run build
LUNAAR_API_KEY=lk_live_... node dist/index.jsnpm run dev re-compiles on save. To test the binary against an MCP host locally, point the host config at the absolute path of the built dist/index.js.
License
MIT — see LICENSE.
Available Tools
14 toolslunaar_body_estimationB
Extract anatomical measurements (chest, waist, hip) from a single full-body photo. 10 credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| heightCm | Yes | Subject height in centimetres. | |
| imagePath | Yes | Full-body photo, subject fully visible, plain background. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so description must cover all behavioral aspects. It only states the action and credit cost, omitting details like return format, failure modes, or specific image requirements (e.g., lighting, pose).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loaded with the core action and credit cost. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description does not mention return values (e.g., which measurements, units, or confidence). Also lacks details on validation or error handling, leaving the agent underinformed about what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter descriptions. The tool description adds no extra parameter meaning beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Extract' and the resource 'anatomical measurements (chest, waist, hip)', and specifies the input (single full-body photo). It effectively distinguishes from sibling tools that focus on try-on, sketches, or product shots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the input type (full-body photo) and mentions credit cost, but lacks explicit guidance on when to use versus alternatives, no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_food_visualA
Turn a casual food photo into a premium food photograph. Pick one of six moods — 1=studio (white background menu shot), 2=delivery_app (clean delivery platform style), 3=lifestyle (real person dining), 4=kitchen (chef-style kitchen, no human), 5=outdoor_social (outdoor restaurant social-media post with person), 6=dining_social (elegant indoor restaurant ambience with person). The AI analyzes the uploaded meal and adapts the environment to the selected mood — the meal itself is never redesigned. 10 credits per call. Latency 15-30s.
| Name | Required | Description | Default |
|---|---|---|---|
| mood | No | studio | |
| imagePath | Yes | Local path to the meal image (jpg/png/webp/heic, ≤25 MB). | |
| aspectRatio | No | Output aspect ratio. Defaults to auto when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavior. It states the AI analyzes the meal, adapts the environment, and never redesigns the meal itself. It also notes credit cost and latency. However, it does not clarify if the operation is read-only or destructive, nor does it describe the output format or how the result is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, efficiently covering purpose, mood options, and key constraints. No redundant or extraneous information is present. It is well-structured and front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (six moods, three parameters) and lack of output schema, the description covers purpose, parameters, cost, and latency. However, it omits the output format (e.g., image URL or base64) and how the result is accessed, which would be valuable for an AI agent. Overall, it is fairly complete but could include return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema. Each mood value is explicitly described (e.g., 'studio=white background menu shot'), and constraints for imagePath (format and size) and aspectRatio (defaults to auto) are provided. The schema covers 67% of parameters with descriptions, but the description enriches understanding of all three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: turning a casual food photo into a premium food photograph. It is distinct from sibling tools (e.g., lunaar_jewelry_tryon, lunaar_product_shot) by focusing specifically on food images. The six mood options are detailed, making the tool's capability unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context (list of moods and their styles) but does not explicitly specify when to use this tool versus alternatives. It lacks when-not conditions or direct comparisons to siblings. The credit cost and latency are mentioned, which aids selection, but overall guidance is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_get_operationA
Inspect any operation by id. Use this when an earlier tool returned a non-terminal status, or to poll a long-running Image-to-3D run.
| Name | Required | Description | Default |
|---|---|---|---|
| operationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description indicates a read operation ('inspect') but does not disclose potential traits such as rate limits, authentication needs, or response format. For a simple get by ID, the transparency is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no unnecessary words, front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with no output schema, the description covers the core purpose and usage. Minor gap: does not explicitly describe the return value, but the context of polling implies status information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the only parameter (operationId). The description does not elaborate on the parameter beyond its name. While the name is self-explanatory, with 0% coverage, the description should offer more detail. Baseline for 0% is low, but 1 param prevents a 1.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Inspect any operation by id', which is a specific verb and resource. Distinguishes from sibling lunaar_list_operations which lists operations, and mentions a specific use case (Image-to-3D run).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to use: 'when an earlier tool returned a non-terminal status, or to poll a long-running Image-to-3D run'. Provides clear context and implies not for other purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_glasses_tryonB
Place a pair of glasses on a model's face with anatomy-aware fit. 10 credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| aspectRatio | No | Optional output aspect ratio. Backend resolves the concrete pixel size; null/omitted lets the model auto-pick. | |
| personImagePath | Yes | ||
| glassesImagePath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Mentions anatomy-aware fit and cost (10 credits per call), but lacks detail on side effects, idempotency, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short single sentence plus credit note, well front-loaded. Could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 parameters and no output schema, the description omits expected output format, image requirements, and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and description provides no additional meaning for the undocumented parameters (personImagePath, glassesImagePath). Does not compensate for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool places glasses on a model's face with anatomy-aware fit, distinguishing it from related tools like lunaar_jewelry_tryon or lunaar_studio_tryon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any prerequisites or constraints for images.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_image_to_3dA
Generate a GLB 3D model + spinning preview video from a single product photo. 10 credits per call. Latency 2-4 minutes — may exceed default polling window; if so, use lunaar_get_operation later.
| Name | Required | Description | Default |
|---|---|---|---|
| imagePath | Yes | ||
| targetHeightCm | No | Real-world height for scale calibration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses cost (10 credits), latency (2-4 minutes), and asynchronous behavior (polling). This compensates for lack of annotations. However, does not detail if the tool modifies any state or what happens to uploaded images.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, cost, latency, and fallback. No redundant information. Front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers essential behavioral aspects: input (photo), output (GLB + video), cost, timing, and error handling fallback. Missing details about required image characteristics (e.g., background, size) but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that the imagePath parameter should be a 'single product photo', adding context beyond the schema. The targetHeightCm parameter is already well-described in the schema. The description partially compensates for the 50% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states that the tool generates a GLB 3D model and spinning preview video from a single product photo. This distinguishes it from sibling tools like lunaar_jewelry_tryon or lunaar_product_shot which focus on different tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions credit cost and latency. Provides explicit alternative: use lunaar_get_operation if polling window exceeded. However, does not specify when not to use this tool (e.g., for non-product photos or non-3D needs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_jewelry_tryonB
Composite a jewelry product onto a model or display surface. Box (10 credits), ProductModel (10), CustomSurfaceBox (15), CustomModel (15).
| Name | Required | Description | Default |
|---|---|---|---|
| gender | No | Required for product_model_display + custom_model_display. | |
| aspectRatio | No | Optional. Only meaningful for custom_surface_box_display + custom_model_display where the secondary image dictates the canvas. | |
| displayMode | Yes | ||
| productType | Yes | ||
| jewelryImagePath | Yes | ||
| secondaryImagePath | No | Required for custom_surface_box_display + custom_model_display. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only mentions credit costs per mode. It fails to disclose other behavioral traits such as authentication, rate limits, or error handling, leaving the agent with insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with one sentence stating purpose and credit costs. It is front-loaded with the main verb and resource, but could benefit from slightly more structure to improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, 4 enums) and no output schema, the description lacks complete context. It does not describe return values, success criteria, or common use cases, making it insufficient for reliable tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, with some parameters documented in the schema (e.g., gender, aspectRatio). The description adds credit cost context but does not explain the meaning or usage of parameters beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool composites jewelry onto a model or surface, with specific credit costs per display mode. This distinguishes it from sibling tools like lunaar_glasses_tryon by focusing on jewelry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for jewelry try-on with different modes and credit costs, but does not explicitly state when to use or avoid this tool versus alternatives like lunaar_studio_tryon.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_list_operationsA
List recent operations for the current API key. Useful for picking up an operationId you forgot or auditing recent calls.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| type | No | ||
| status | No | ||
| pageSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Mentions 'recent' and 'current API key' but does not detail pagination behavior, rate limits, or how optional filters affect results. Adequate for a non-mutating list, but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loaded with the action and use cases. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 4 optional parameters and no output schema, the description covers basic purpose but fails to explain filtering/pagination or return value format. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no explanation for any of the 4 parameters. The agent gets no guidance on how 'page', 'type', 'status', or 'pageSize' affect the tool's behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'list' and resource 'operations for the current API key'. Distinguishes from sibling 'lunaar_get_operation' by implying a list vs single item retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions use cases: picking up a forgotten operationId or auditing recent calls. Provides context for when to use, but does not explicitly exclude when not to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_model_to_arB
Upload an existing GLB (and optional USDZ + thumbnail) and get a public AR-viewer URL. 5 credits per call. Returns inline (sync).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| glbFilePath | Yes | ||
| usdzFilePath | No | ||
| thumbnailImagePath | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses cost (5 credits) and synchronous behavior. With no annotations, description carries full burden; it lacks details on destructive actions, auth requirements, rate limits, or file constraints, but provides some useful behavioral info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are concise and front-loaded with key info. Each sentence adds value, though structure could be improved with bullet points for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters (2 required) and no output schema, the description does not cover return details (e.g., URL format), file size limits, processing time, or error conditions. Incomplete for an upload/conversion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% so description must explain parameters. It only mentions 'GLB' and optional 'USDZ + thumbnail', without describing the required 'title' or how 'glbFilePath' is used (e.g., it's a path to an existing file). Inadequate parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Upload an existing GLB ... get a public AR-viewer URL', specifying the action and outcome. However, it does not explicitly differentiate from siblings like lunaar_image_to_3d (which creates 3D models from images) or other tryon tools, so purpose is clear but sibling distinction is implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions credits per call and sync return, giving basic usage context. No explicit when-to-use or when-not-to-use, and no alternatives listed among siblings, so guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_product_shotA
Turn a casual product photo into a premium e-commerce shot. The AI auto-detects the product category — no category input. Pick one of four modes: studio_white (clean white background, marketplace catalog), concept (premium banner / social media scene), lifestyle (in-use / partial human presence — faces avoided), or product_with_model (social-media-ready visual featuring the product with a human model at realistic real-world scale). 10 credits per call. Latency 15-30s. Refunded on provider failure.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Initial generation mode. studio_white = white catalog. concept = premium banner / social media. lifestyle = in-use / partial human presence (faces avoided). product_with_model = product shown with a human model at realistic real-world scale (social-media-ready). AI infers the product category from the image. | |
| imagePath | Yes | Local path to the product photo (jpg/png/webp/heic, ≤25 MB). | |
| aspectRatio | No | Optional output aspect ratio. Backend resolves the concrete pixel size; null/omitted lets the model auto-pick. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses auto-detection of product category, four generation modes, credit cost (10 credits), latency (15-30s), and refund policy on provider failure. This is comprehensive for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover purpose, mode details, and operational constraints (credits, latency, refund). No redundant or extraneous text. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters and no output schema, the description covers all inputs, behavior, constraints, and special outcomes (refund on failure). Complete for a generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by explaining the meaning of each mode beyond schema enums, and clarifies the auto-detect behavior for mode. Aspect ratio auto-pick is also explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's purpose: 'Turn a casual product photo into a premium e-commerce shot.' It uses specific verb phrase and resource, and distinguishes from siblings focused on specific product types like jewelry or glasses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains when to use each of the four modes, but does not explicitly contrast with sibling tools like lunaar_product_shot_variants or provide when-not scenarios. Nonetheless, the mode selection provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_product_shot_variantsA
Generate 1..N angle/detail/scale variants of a previously rendered Product Shot parent. Each variant is a separate generation that consumes 10 credits. Variant types: front_view, three_quarter_front, side_view, back_view, top_view, detail_close_up, open_interior (only for products that physically open — falls back to a 3/4 view when not plausible), scale_reference (adds clean dimension annotations using user-provided width/height/depth in cm).
| Name | Required | Description | Default |
|---|---|---|---|
| depthCm | No | ||
| widthCm | No | Required when scale_reference is requested (or any of width/height/depth must be provided). | |
| heightCm | No | ||
| aspectRatio | No | Optional aspect override; defaults to the parent shot's aspect ratio. | |
| variantTypes | Yes | ||
| parentEntityId | Yes | The `data.id` from the original lunaar_product_shot create response — NOT the operationId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses credit consumption and fallback behavior for open_interior. With no annotations, description carries full burden but omits operational details like parallelism, rate limits, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph that front-loads purpose and credit cost, then enumerates variant types. Efficient but could benefit from bullet points for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main function, variant details, credit cost, fallback, and dimension requirements. Lacks output description but no output schema exists. Sufficient for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds significant meaning to variantTypes by explaining each type and to dimension parameters for scale_reference. Schema coverage is only 50%, so description compensates with context for half the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it generates variants of a previously rendered product shot, listing specific variant types and explaining their behaviors. Distinguishes from sibling tool lunaar_product_shot by requiring a parent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context that it requires a parent shot and explains when to use scale_reference with dimensions. Does not explicitly exclude alternatives or state when not to use, but the sibling context and description make usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_sketch_to_renderB
Convert a sketch (interior / exterior / kitchen) to a photoreal render. Returns the final image URL. 15 credits per call. Refunded on provider failure.
| Name | Required | Description | Default |
|---|---|---|---|
| accessory | No | Kitchen only — render countertop accessories. | |
| imagePath | Yes | Local path to the sketch (jpg/png/webp/heic, ≤25 MB). | |
| sceneType | No | interior | |
| timeOfDay | No | day | |
| aspectRatio | No | Optional output aspect ratio. Backend resolves the concrete pixel size; null/omitted lets the model auto-pick. | |
| handleFinish | No | Kitchen only. | |
| openShelfLed | No | Kitchen only — LED under open shelves. | |
| glassCabinetLed | No | Kitchen only — LED inside glass cabinets. | |
| countertopSurface | No | Kitchen only. | |
| tallCabinetSurface | No | Kitchen only. | |
| lowerCabinetSurface | No | Kitchen only. | |
| upperCabinetSurface | No | Kitchen only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses cost (15 credits) and refund policy, but with no annotations provided, other behavioral traits like authentication, rate limits, or side effects are unaddressed. The description adds some value but is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero fluff. Each sentence provides essential information: function, output, and cost/refund. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, no output schema, and no annotations, the description omits key details like parameter roles, error scenarios, and output format beyond URL. Incomplete given tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents most parameters. The description does not add additional meaning beyond what the schema provides, earning a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'convert' and resource 'sketch to photoreal render', specifies applicable types (interior/exterior/kitchen), and distinguishes from sibling tools like lunaar_product_shot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as lunaar_product_shot or lunaar_food_visual. Does not provide context on prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_studio_posesA
Generate 1-3 alternate-pose variants of a previously rendered Studio item. 10 credits per pose. Failed poses are auto-refunded. Not available for Summer or Kids items (those modes have no real subject to retarget).
| Name | Required | Description | Default |
|---|---|---|---|
| poseTypes | Yes | ||
| parentEntityId | Yes | Studio entity id (the entityId returned by lunaar_studio_tryon — NOT the operationId). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses credit cost, refund policy, and incompatibility with Summer/Kids items, which adds value. However, it omits other behavioral traits like processing time, idempotency, or side effects on the original item, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence followed by a short note, with no wasted words. It front-loads the core action and immediately follows with key constraints. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a generation tool with credits and constraints), the description covers prerequisites, exclusions, and cost. However, it lacks any description of the output (e.g., format, what is returned) and does not provide an example. This leaves the agent uncertain about how to use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% with only parentEntityId having a description. The tool description improves this by clarifying that parentEntityId is 'the entityId returned by lunaar_studio_tryon—NOT the operationId.' For poseTypes, the description mentions the count (1-3) but does not explain the enum values, so the schema's enum alone provides the meaning. Overall, the description partially compensates for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate 1-3 alternate-pose variants of a previously rendered Studio item,' which provides a specific verb and resource. It also distinguishes from sibling tools like lunaar_studio_tryon by explicitly requiring a previously rendered item, clarifying the tool's role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit context on when to use (after rendering a Studio item) and when not to use ('Not available for Summer or Kids items'). It also mentions credit cost and auto-refund policy. However, it does not suggest alternative tools for excluded cases, preventing full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_studio_tryonA
Virtual try-on. SingleItem (10 credits): person + 1 garment. Combo (15): person + 2-6 garments. Layer (15): person + 3 stacked garments. Summer (15): swimwear with environment. Kids (15): kidswear catalog — 1..N product images on a fully AI-generated child model (no PersonImage); requires kidsGender, kidsAgeRange, and kidsProductCategory.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| fitType | No | ||
| kidsPose | No | kids mode only — optional. Omit to let the model choose. | |
| kidsGender | No | kids mode only — required. | |
| aspectRatio | No | Optional output aspect ratio. Backend resolves the concrete pixel size; null/omitted lets the model auto-pick. | |
| dressLength | No | ||
| kidsAgeRange | No | kids mode only — required. | |
| topImagePath | No | ||
| maskImagePath | No | ||
| dressImagePath | No | ||
| kidsBackground | No | kids mode only — optional. Omit to let the model choose. | |
| shoesImagePath | No | ||
| bottomImagePath | No | ||
| layer1ImagePath | No | ||
| layer2ImagePath | No | ||
| layer3ImagePath | No | ||
| personImagePath | No | Required for single_item / combo / layer. Not used for summer or kids. | |
| backgroundSeason | No | ||
| clothingCategory | No | single_item only. | |
| clothingImagePath | No | single_item only. | |
| swimSuitImagePath | No | ||
| accessoryImagePath | No | ||
| bikiniTopImagePath | No | ||
| outerwearImagePath | No | ||
| kidsProductCategory | No | kids mode only — required. | |
| menSwimwearImagePath | No | ||
| bikiniBottomImagePath | No | ||
| kidsProductImagePaths | No | kids mode only — 1..N product image paths. For two_piece_set, supply at least 2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses credit costs and mode-specific behavior (e.g., 'Kids' uses AI-generated child model, no PersonImage). However, it does not mention failure modes, rate limits, or the response structure, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise given the complexity, with each sentence adding distinct information (modes, credits, parameter conditions). It is front-loaded with the core purpose. Minor improvements could include bullet points for clarity, but it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 28 parameters, no output schema, and moderate schema coverage, the description provides essential mode-specific context but omits details on return format, error handling, or parameter interrelationships beyond mode requirements. It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (36%), but the description adds value by explaining mode dependencies and required parameters (e.g., for 'Kids': kidsGender, kidsAgeRange, kidsProductCategory). However, many parameters (e.g., fitType, dressLength) are not elaborated beyond the schema, and the description does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as 'Virtual try-on' and enumerates five specific modes with distinct credit costs and requirements. This specificity distinguishes it from sibling tools like lunaar_jewelry_tryon and lunaar_glasses_tryon, which cover different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by detailing modes (e.g., 'SingleItem', 'Combo') but does not explicitly compare this tool to alternatives or provide scenarios where it is preferred. Some mode-specific guidance is given (e.g., 'Kids' requires certain parameters), but no when-to-use or when-not-to-use statements are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lunaar_upscaleA
Re-render a previously completed AI operation at higher resolution. 5 credits per call. May return inline (200) or queued (202 + poll).
| Name | Required | Description | Default |
|---|---|---|---|
| operationId | Yes | OperationId of any completed /v1/ai/* run. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses key behaviors: cost, response types (200 vs 202+ poll), and that it works on completed operations. No hidden behaviors mentioned, but sufficient for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Critical info (purpose, cost, response handling) is front-loaded. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple signature (1 param, no output schema, no annotations), description covers purpose, cost, and response behavior adequately. Missing details on error cases or output format, but not critical for a straightforward upscale tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with clear description. Description reinforces that operationId must be from a completed run but adds no new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb ('re-render') and resource ('completed AI operation') at higher resolution. It distinguishes from sibling tools which are for different AI operations (try-on, sketches, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides cost (5 credits) and response behavior (inline or queued), giving agents clear usage context. However, it lacks explicit when-to-use vs alternatives or when-not-to-use guidance.
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. Dates show when Glama detected each change.
14 tool updates
v0.2.0- First observed
lunaar_body_estimation - First observed
lunaar_food_visual - First observed
lunaar_get_operation - First observed
lunaar_glasses_tryon - First observed
lunaar_image_to_3d - First observed
lunaar_jewelry_tryon - First observed
lunaar_list_operations - First observed
lunaar_model_to_ar - First observed
lunaar_product_shot - First observed
lunaar_product_shot_variants - First observed
lunaar_sketch_to_render - First observed
lunaar_studio_poses - First observed
lunaar_studio_tryon - First observed
lunaar_upscale
TDQS
Each tool targets a distinct task or product category (jewelry, glasses, garments, product shots, food, 3D models, etc.), with clear boundaries. The operations management tools are separate from generation tools, avoiding confusion.
All tools follow a consistent 'lunaar_<descriptive_verb_noun>' pattern with snake_case, making the purpose immediately clear. No mixing of conventions.
14 tools cover a wide range of image generation and manipulation tasks without being overwhelming. Each tool serves a distinct purpose, and the count feels appropriate for the server's scope.
The tool surface covers core workflows for try-on, product shots, food visuals, 3D generation, AR, and upscaling. Minor gaps exist (e.g., no general background removal or editing tool), but the set is largely complete for its intended domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Related MCP Servers
AlicenseAqualityBmaintenanceConnects MCP-compatible coding tools to RunAPI for AI image, video, music, text-to-speech, and LLM generation using 130+ models from leading providers.938755Apache 2.0
arcframe-mcpofficial
AlicenseNot gradedqualityCmaintenanceGenerate videos, images, audio, and 3D models from any MCP-compatible AI agent — Claude, Cursor, ChatGPT, and more.MIT- AlicenseAqualityDmaintenanceEnables AI photo generation, editing, and video creation from MCP-compatible clients like Claude Desktop, Cursor, and Windsurf.816MIT
- AlicenseNot gradedqualityCmaintenanceOne connector for the whole MCP catalog — 15,000+ servers plus your team's private MCPs — callable from Claude, ChatGPT, Cursor and VS Code through a single OAuth endpoint. No per-server install.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Group-Taiga/lunaar-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server