RoomLab.app
Server Details
Virtual Staging, Declutter Room, Change Style and room videos from your property photos.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 19 tools
Each tool targets a distinct editing operation, and the descriptions explicitly resolve the most collision-prone pairs (change_room_style vs virtual_stage_room, render_interior vs render_exterior, declutter_room vs empty_room). custom_prompt is clearly framed as the fallback when no named mode matches, and get_generation is scoped to cases with no active card, so an agent can pick correctly without guessing.
Nearly all names are snake_case verb_noun (change_room_style, replace_material, render_exterior, upscale_room_image), which is highly predictable. The only deviations are custom_prompt (noun-only, no verb) and virtual_stage_room (modifier+verb+noun), both of which mirror product card names rather than the verb_noun pattern.
19 tools sit at the high end of comfortable, but the count reflects a genuine catalog of distinct workspace modes rather than redundant wrappers. Every tool maps to a separate user intent, so no tool feels padded, though a couple of the outdoor one-off tools are narrow enough that consolidation could be argued.
The surface covers the full generate-transform-finish lifecycle: renders, restyling, staging, decluttering, material/furniture swaps, video creation, upscaling, and async retrieval via get_generation. The main gaps are lifecycle housekeeping—no way to list past creations, cancel an in-flight generation, or delete results—which agents can work around but are notable omissions.
Available Tools
19 toolschange_room_styleChange StyleADestructiveInspect
Use only when the user wants a furnished room restyled while keeping its furniture arrangement. Ask only for the room image, room type, and design style when missing. Do not use this to furnish an empty room.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| room_type | Yes | Natural room name, such as bedroom, living room, kitchen, or office. | |
| design_style | Yes | Natural design style, such as Scandinavian, modern, industrial, or a style described by the user. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, openWorldHint=true, non-idempotent writes, so the safety profile is covered. The description contributes a real behavioral fact beyond them — that furniture arrangement is preserved — but says nothing about the fact that the operation regenerates/overwrites imagery, nor about latency or cost for a generative call.
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 short sentences, zero filler, with the precondition front-loaded before the exclusion. Every clause earns its place by changing agent behavior.
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?
An output schema exists, so return values need no explanation, and the description covers selection, prerequisites, and missing-input handling for a five-parameter tool. The remaining gap is that the destructive/regenerative nature of the call is left entirely to the annotations.
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 100%, so the baseline is 3 and the schema already explains room_type, design_style, image, and additional_instructions. The description adds only a collection policy (which fields to ask for) rather than new meaning about individual values, so it does not exceed the baseline.
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 states a specific verb and scope: restyle a furnished room while preserving the furniture arrangement. It also separates itself from the empty-room siblings in the same sentence, so an agent can pick between change_room_style and empty_room/virtual_stage_room without consulting a schema.
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?
It gives an explicit gate ("Use only when...") plus a negative rule ("Do not use this to furnish an empty room"), which is exactly the when/when-not pattern. It even prescribes how to gather missing inputs, telling the agent to ask only for image, room type, and design style.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_gardenClean the GardenBDestructiveInspect
Use when the user wants weeds and debris removed so a garden or outdoor area looks neat and maintained.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| reference_images | No | Optional reference images attached by the user. | |
| reference_image_urls | No | ||
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 carried by structured data. The description adds nothing beyond that: it never mentions that the tool consumes a room/garden image plus optional reference images, that it returns a newly generated image, or whether the input asset is preserved, which is the key behavioral question for a destructive open-world generation call.
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?
A single front-loaded sentence with no filler and the trigger condition stated first. It is efficient but also thin — the brevity comes at the cost of saying nothing about the image inputs or the result.
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 five parameters, deeply nested image unions, an output schema and destructive/open-world annotations, one intent sentence is not enough. The agent is never told what must be supplied (an image), what the tool returns, or how this differs from the many other image-editing siblings, leaving real decision gaps even though the schema covers formats.
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 80% and the nested image properties carry detailed guidance (no local paths, pass base64 unchanged, do not ask for file metadata), so the schema does the heavy lifting. The description adds no parameter meaning at all and never signals that an image is effectively required despite zero formally required 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 frames the tool purely as a user-intent trigger ("weeds and debris removed so a garden looks neat") rather than stating what the tool actually does, e.g. that it produces a cleaned-up garden image. It does scope the resource (garden/outdoor area, weeds and debris) which distinguishes it loosely from make_grass_greener or render_exterior, but it never says the operation is an image transformation, so an agent must infer the core action from the name.
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?
"Use when the user wants weeds and debris removed" is an explicit, actionable trigger condition, which is the main thing an agent needs to route here. It stops short of naming when not to use it — nothing tells the agent to prefer declutter_room for indoor spaces or make_grass_greener for lawn-only requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_house_tourHouse TourADestructiveInspect
Use when the user wants a cinematic tour made from three to six room images in order. The workspace offers an automatic or user-written script and 12-, 15-, or 30-second durations.
| Name | Required | Description | Default |
|---|---|---|---|
| images | No | Three to six room images attached by the user in tour order. | |
| image_urls | No | ||
| tour_script | No | Optional user-written tour script. Omit to use RoomLab’s professional automatic tour. | |
| duration_seconds | No | The workspace offers 12, 15, or 30 seconds. Omit unless the user requests one; the default is 12 seconds. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the agent knows this is a costly, non-repeatable generation. The description adds the input-ordering requirement (images are interpreted 'in order') and the option to omit the script for RoomLab's professional automatic tour, but says nothing about what gets consumed, cost, latency, or that omitting the script removes user control over the dialogue.
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, with the use case front-loaded before the option list, and no filler. The second sentence leans on facts already encoded in the schema (durations, optional script), so it is slightly redundant rather than wasteful.
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 an output schema present and 80% parameter coverage, the definition needn't explain return values, and it covers the trigger, the image count, ordering and the two user-tunable options. It omits any mention of the additional_instructions parameter and gives no cue about which image parameter form to prefer, which leaves a small gap.
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 80% and the schema already documents the 3-6 image bounds, the 12/15/30 duration enum and the 12-second default, so the description's duration and script sentences largely restate structured data. Its one genuine addition is that image order defines tour order, which is not obvious from the array's description of 'attached in tour order'; nothing is said about choosing between the images and image_urls 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 names a specific verb and output ('cinematic tour made from...room images') plus the input cardinality, so an agent can tell this is a video-generating tool rather than an image edit. It stops short of explicitly distinguishing itself from the sibling create_video_walkthrough, which is the nearest neighbor an agent could confuse it with.
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?
'Use when the user wants a cinematic tour' gives a clear triggering condition, and the second sentence clarifies that a script and duration are user-controlled options rather than requirements. There is no when-not-to-use guidance and no named alternative for the walkthrough-vs-tour decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_video_transitionVideo TransitionBDestructiveInspect
Use when the user wants an animated transformation from a start image to an end image. The transition style and 5- or 10-second duration match the workspace controls.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| end_image | No | The transition end image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| end_image_url | No | A link or inline copy of the transition end image supplied by the client. | |
| duration_seconds | No | The workspace offers 5 or 10 seconds. Omit unless the user requests one; the default is 5 seconds. | |
| transition_style | Yes | How the start image should transform into the end image, such as a timelapse, falling into place, assembling, or a custom description. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds almost nothing beyond that: it does not say this starts a generation job whose result must be fetched with get_generation, gives no cost/time expectations, and does not warn about repeat/non-idempotent calls beyond what the annotations imply.
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, front-loaded with the trigger condition and free of filler. The second sentence is largely redundant with the schema's duration constraints, but the overall size is appropriate.
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?
Seven parameters with nested image objects and a video generation side effect make this a complex tool, and an output schema exists to cover return values. The description still omits the most important operational context for an agent: that this is a long-running, non-idempotent generation whose output must be retrieved separately, and how the start/end image parameters relate to the four alternate URL form fields.
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 100%, including per-parameter notes on base64 passing, the 5/10-second enum, and image object structure, so the schema carries the parameter burden. The description's mention of style and 5- or 10-second duration merely restates what the schema already documents, adding no format or selection 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?
The description gives a specific verb and resource: an animated transformation from a start image to an end image. It is distinguishable from siblings like create_house_tour or create_video_walkthrough by the two-endpoint transition framing, though it never names those siblings explicitly.
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?
'Use when the user wants an animated transformation...' gives a clear trigger condition, which is better than nothing. However, there is no guidance on when NOT to use it (e.g. versus create_video_walkthrough), and no mention of prerequisites such as having both images attached or how the style is chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_video_walkthroughVideo WalkthroughBDestructiveInspect
Use when the user wants one room photo animated with a camera move or other described effect. The effect and 5- or 10-second duration match the workspace controls.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| video_effect | Yes | The camera move or effect requested by the user, such as orbit left, orbit right, zoom in, zoom out, pan, or a custom description. | |
| duration_seconds | No | The workspace offers 5 or 10 seconds. Omit unless the user requests one; the default is 5 seconds. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and non-idempotence, so the safety posture is known without the description. The description adds only that effects and durations are constrained by workspace controls, and says nothing about whether generation is synchronous, whether an existing photo is consumed or preserved, or how results are retrieved — notable gaps for a destructive, open-world generator.
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, front-loaded with the triggering condition, with no filler. The second sentence largely restates the duration constraint already encoded in the schema, which is the only wasted clause.
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?
An output schema exists, so return values need no prose, and the input schema is fully documented. However, for an asynchronous, destructive, open-world video generator sitting beside a get_generation sibling, the description gives no hint about polling for completion or about cost/irreversibility, leaving a meaningful workflow gap.
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 100%, so every parameter is already documented in the schema, which sets the baseline at 3. The description adds marginal framing — that duration is 5 or 10 seconds and that the effect should mirror the user's wording — but nothing about the image vs image_url choice that the schema does not already explain.
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 states a concrete verb and resource — animating a single room photo with a camera move or described effect — which is specific and distinguishable in scope. It implies the single-room boundary that separates it from create_house_tour, but never names that sibling, so an agent must infer the split.
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?
"Use when the user wants one room photo animated" gives a usable trigger condition, but there are no exclusions or named alternatives despite several plausible siblings (create_house_tour, create_video_transition, upscale_room_image). The agent must infer which tool wins when the request is ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
custom_promptCustom PromptBDestructiveInspect
Use for the workspace Custom Prompt mode when another named RoomLab mode does not match. The user may supply one main image, up to six reference images, and natural-language instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| instructions | Yes | The user’s requested room edit in natural language. | |
| reference_images | No | Optional reference images attached by the user. | |
| reference_image_urls | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=false, so the safety profile is covered structurally. The description adds no behavioral context beyond that: it does not say a new image is generated, that the operation is non-idempotent and consumes generation resources, or what happens to the source image. The input listing it does provide is parameter information, not behavior.
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 tight sentences with zero filler, and the routing condition is placed first where the agent needs it. Nothing is redundant, though the brevity borders on under-specification for a five-parameter generative tool with nested image objects.
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?
An output schema exists, so return values need not be explained, but for a destructive, non-idempotent generative tool with five parameters, nested union types, and duplicate image channels, the description is thin. It omits how the primary-image fields and reference-image fields relate to each other, and gives no sense of what the fallback mode is capable of versus the named modes.
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 80%, so the baseline is 3. The description restates the parameter shape ('one main image, up to six reference images, and natural-language instructions'), matching the schema rather than adding to it. It notably leaves the biggest ambiguity unaddressed: why both `image` and `image_url` (and both `reference_images` and `reference_image_urls`) exist and which to prefer.
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 states a specific purpose: a catch-all workspace 'Custom Prompt' mode that applies natural-language instructions to a room image. It explicitly differentiates itself from siblings by declaring it applies 'when another named RoomLab mode does not match'. It stops short of saying what the tool produces (an edited room render), so it is clear but not fully self-contained.
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?
Routing guidance is explicit and front-loaded: use this only as a fallback when no named RoomLab mode fits, which effectively tells the agent when not to use it. It does not address edge cases such as what to do when a request partially matches a named mode or whether multiple concerns should be split across sibling calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
declutter_roomDeclutter RoomADestructiveInspect
Use when the user wants clutter and visual mess removed while keeping the major furniture and architecture. This matches the Declutter Room workspace card.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and non-idempotence, so the safety profile is covered. The description's real contribution is defining what is preserved versus removed, which is valuable for a destructive edit. However it says nothing about how far the cleanup goes (people, pets, wall decor?), or that the source image is not retained — relevant for a destructive, non-idempotent operation.
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?
Front-loaded with the trigger condition, followed by the scope constraint — well ordered. The trailing 'This matches the Declutter Room workspace card' is UI-selection metadata rather than invocation guidance, but it is short and harmless.
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?
An output schema and rich annotations mean the description needn't explain returns, and the schema covers the image payloads. What is missing is behavior an agent would want before spending a call on a destructive, non-idempotent edit: output resolution/aspect ratio preservation and whether small decorative items on surfaces are also removed.
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 the image input formats (download_url, base64 variants) and the optional additional_instructions are fully documented in the schema itself. The description adds no further meaning about when to supply additional_instructions or how preferences interact with the fixed 'keep furniture' behavior, 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?
States a specific transformation on a specific resource: remove clutter and visual mess from a room while preserving major furniture and architecture. The scoping clause ('keeping the major furniture and architecture') implicitly distinguishes it from empty_room, but no sibling is named explicitly.
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?
'Use when the user wants clutter and visual mess removed while keeping the major furniture and architecture' is a clear activation condition with a built-in exclusion (heavy edits like emptying the room belong elsewhere). It stops short of naming the alternative tool to use for full removal, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
empty_roomEmpty RoomADestructiveInspect
Use when the user wants all furniture, appliances, and decor removed so the room appears vacant. This matches the Empty Room workspace card.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 is consistent with that, since removal of contents is inherently destructive, but it discloses nothing beyond the annotations: no note that the source image is left intact and a new render returned, and no mention of cost, latency, or side effects.
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 with the usage trigger front-loaded and no filler. The second sentence, which ties the tool to a workspace card, is slightly internal, but it does help with routing, so it 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?
The tool is at the right level given that an output schema exists and annotations carry the safety profile. However, the schema marks all three parameters as optional (required: 0), even though the tool cannot run without a room image; the description never fills that gap or warns against calling it with no image, which is a meaningful omission for an agent.
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 100% and the schema itself spells out image, image_url, and additional_instructions with guidance and constraints. The description adds no parameter meaning on top of that, so the 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 states a concrete outcome: all furniture, appliances, and decor are removed so the room appears vacant. That is more specific than the name alone. It stops short of distinguishing itself from the closest sibling, declutter_room, which an agent could easily confuse with this one.
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?
"Use when the user wants all furniture, appliances, and decor removed" gives a clear trigger condition tied to user intent, and the workspace-card reference helps with UI routing. There is no when-not guidance and no named alternative for partial removal (e.g., declutter_room or replace_furniture), which is the main gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_and_clean_poolFill and Clean PoolADestructiveInspect
Use when the user wants a pool filled with clean water and the surrounding pool area tidied.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| reference_images | No | Optional reference images attached by the user. | |
| reference_image_urls | No | ||
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false, and readOnlyHint=false. The description adds no behavioral context beyond the purpose: it does not say what image content is altered, whether changes are reversible, or that repeated calls may produce different results.
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?
A single tightly scoped sentence with the usage trigger front-loaded. There is no redundant or wasted wording.
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?
The tool has five nested parameters and is a destructive image-editing operation, yet the description never states that a room image is the core input or how reference images and additional instructions are used. The rich schema and output schema reduce the burden, but selection and invocation context is still thin.
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 80%, and the schema already documents the image, reference image, and additional_instructions fields in detail. The description adds no meaning beyond the schema, so the baseline of 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?
States a specific verb-plus-resource scenario: filling a pool with clean water and tidying the surrounding area. The resource is unique among the sibling tools, though the description does not explicitly contrast itself with alternatives such as custom_prompt.
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 a clear triggering condition with 'Use when the user wants a pool filled with clean water and the surrounding pool area tidied.' It gives clear context but no when-not guidance or explicit routing to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_generationRetrieve a RoomLab resultARead-onlyInspect
Check a RoomLab.app creation and return status or finished media as data, without opening another card. The existing creation card polls automatically. Use this tool when no card is available or the user asks to check a result; do not repeatedly poll alongside an active card.
| Name | Required | Description | Default |
|---|---|---|---|
| generation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description is not burdened with the safety story. It still adds real behavioral context beyond them: the call returns data instead of opening a UI card, and it can return either an intermediate status or finished media. It stops short of noting any rate limit or polling backoff, which would matter given that polling is the core use case.
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 tight sentences, front-loaded with the action and followed by the constraint. Nothing is redundant, though the clause 'as data, without opening another card' is slightly abstract and could be stated more plainly.
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?
An output schema exists, so return values need not be explained, and annotations cover the read-only profile. The remaining gap is the identifier's provenance and the handling of still-pending results (how to interpret a non-final status), which is only hinted at.
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 single required parameter generation_id is only loosely anchored by the phrase 'a RoomLab.app creation'. The description never says what form the identifier takes or where an agent obtains one, so the burden falls on the caller to infer it.
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?
States a specific verb and resource: check a RoomLab.app creation and return its status or finished media. It also distinguishes itself from the sibling creation tools with the clarifying phrase 'without opening another card', which tells an agent this is a non-mutating retrieval path rather than one of the many render/generate siblings.
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?
Gives explicit trigger conditions ('when no card is available or the user asks to check a result') and an explicit anti-pattern ('do not repeatedly poll alongside an active card'). This is a rare case where both when-to-use and when-not-to-use are stated, including the alternative (the auto-polling card).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_grass_greenerMake Grass GreenerCDestructiveInspect
Use when the user wants dry or patchy grass refreshed so the lawn looks green and healthy.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| reference_images | No | Optional reference images attached by the user. | |
| reference_image_urls | No | ||
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, destructive, non-idempotent, open-world operation, so the safety profile is known. The description adds no behavioral context of its own: it doesn't say the image is modified or regenerated, whether the original is preserved, or what the user receives back, which is a real gap for a destructive image transform.
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?
A single front-loaded sentence with a 'Use when...' trigger and no wasted words. It is appropriately sized for a usage trigger, though it omits essential mechanics rather than being verbose.
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?
This is a complex tool (5 parameters, nested image unions, references, free-text instructions) with a destructive image-editing behavior, yet the description is one conditional sentence. An output schema exists so return values need not be explained, but the input expectations and destructive nature are left entirely to annotations and schema.
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 80% and the nested image/URL/base64 variants are thoroughly documented in the schema itself, so the description need not repeat them. The description contributes nothing about the image, reference images, or additional_instructions parameters, which is acceptable only because the schema already does that work.
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 states an effect (refresh dry/patchy grass so the lawn looks green) but never says this is an image-editing/generation operation on a supplied photo, and the wording largely restates the tool name. With 19 siblings including clean_garden, render_exterior, and change_room_style, no distinguishing detail is offered.
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?
It gives one clear triggering condition (user wants dry or patchy grass refreshed), which is more than nothing. But it never says when not to use it, what the prerequisites are (e.g., a lawn image must be supplied), or which sibling tool to pick for adjacent requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_exteriorExterior Architectural RenderADestructiveInspect
Use when the user wants an exterior sketch, model view, or design image turned into a photorealistic architectural render. Time of day, season, landscape, and extra instructions match the workspace controls.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| season | No | Optional workspace season choice: spring, summer, autumn, winter, or a custom description. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| landscape | No | Optional workspace landscape choice or custom setting. | |
| time_of_day | No | Optional workspace time-of-day choice, such as morning, midday, afternoon, golden hour, dusk, night, or a custom description. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, which is an unusual profile for a render tool that the description never explains or reconciles. The description adds that time of day, season, landscape, and instructions 'match the workspace controls', but says nothing about generation cost, latency, or that repeated calls produce new artifacts rather than overwriting one.
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, with the triggering condition front-loaded before the parameter context. Nothing is redundant, though the second sentence is a loose list that could be tightened without losing 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?
An output schema exists and annotations carry the safety profile, so the description only needs to cover invocation intent, which it does. The main remaining gap is the absence of any note about expected input imagery characteristics or what happens when required-looking inputs are omitted, since the schema marks zero parameters required despite the render clearly needing an image.
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?
With 100% schema description coverage and a deeply nested image object, the schema already documents every parameter, including the temporary download URL warning and base64 pass-through rules. The description's only addition is framing time_of_day, season, landscape, and additional_instructions as workspace-controlled settings, which the schema largely states already.
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 names a concrete transformation: an exterior sketch, model view, or design image becomes a photorealistic architectural render. The word 'exterior' plus 'architectural render' implicitly separates it from render_interior, but no sibling is ever named explicitly, so the differentiation relies on the reader noticing the adjective.
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 opening 'Use when the user wants...' gives a clear triggering condition covering sketch, model view, and design image inputs. It stops short of stateable exclusions or alternatives, so an agent must infer that render_interior handles interiors and that sibling tools like change_room_style cover restyling rather than rendering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_interiorInterior Architectural RenderADestructiveInspect
Use when the user wants an interior sketch, model view, or design image turned into a photorealistic architectural render. Time of day and extra instructions are the only optional workspace controls.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| time_of_day | No | Optional workspace time-of-day choice, such as morning, midday, afternoon, golden hour, dusk, night, or a custom description. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true, openWorldHint=true, and non-idempotent behavior, so the safety profile is covered. The description adds only the mild constraint that time of day and extra instructions are the sole optional controls, and says nothing about generation being asynchronous, cost, or how to retrieve results (despite a get_generation sibling). Nothing in the text contradicts the annotations.
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, front-loaded with the trigger condition and free of filler. The second sentence is slightly oblique ('workspace controls') but is short and purposeful.
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?
The output schema and rich image schema relieve the description of explaining inputs and returns. However, for a generative, non-idempotent, open-world tool, the description says nothing about generation time, whether a job id comes back, or that results are fetched separately, which an agent needs to sequence the call correctly.
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 100%, and the schema already spells out time_of_day options and the 'do not ask when the request is clear' guidance for additional_instructions. The description's line about 'the only optional workspace controls' restates that framing rather than adding new meaning. Baseline 3 applies when the schema carries the semantics.
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 gives a specific transformation: 'an interior sketch, model view, or design image turned into a photorealistic architectural render.' The 'interior' qualifier implicitly separates it from render_exterior, but no sibling is named explicitly, so the agent must infer the contrast from the sibling list.
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 opening 'Use when the user wants...' clause is a clear trigger condition tied to input type (sketch, model view, design image). It does not state exclusions or point to alternatives such as change_room_style, virtual_stage_room, or render_exterior, so routing between close siblings still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_furnitureReplace FurnitureADestructiveInspect
Use when the user wants one furniture item replaced with the item shown in a reference image. Ask for the room type and furniture item only when missing.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| room_type | Yes | Room type, such as living room, bedroom, kitchen, bathroom, dining room, or office. | |
| furniture_item | Yes | Furniture item to replace, such as sofa, bed, chair, or table. | |
| reference_image | No | The reference image attached by the user. Do not ask the user for file metadata. | |
| reference_image_url | No | A link or inline copy of the reference image supplied by the client. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, non-idempotent and read-write, so the safety profile is covered. The description adds useful scope context ('one' item, driven by a reference image) but says nothing about what gets returned or how the mutation affects the rest of the room image; an output schema exists, so return values need not be described, but the scope-of-change detail is only partially addressed.
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: the trigger is front-loaded and the second sentence is a concrete conversational instruction. Nothing is repeated from the schema or annotations.
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 7-parameter, nested-object tool with an output schema and rich annotations, the description covers the trigger, the single-item scope, and the clarification behavior. It leaves minor gaps such as preferring a downloaded reference image object over an inline URL, but those are handled by the schema text.
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 100%, so every parameter including the image variants is documented in the schema itself, and the baseline of 3 applies. The description only implies that a reference image and room/furniture identifiers are involved; it adds no format or disambiguation guidance beyond 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 names a specific verb and resource ('one furniture item replaced') plus the source of the replacement ('the item shown in a reference image'), which separates it from broader siblings like change_room_style or replace_material. It does not explicitly name those siblings, so differentiation is implied rather than stated.
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?
A clear trigger condition is given ('Use when the user wants one furniture item replaced...') along with a follow-up rule to request room_type and furniture_item only when missing. It stops short of naming alternatives or exclusions, e.g. when to prefer change_room_style over replacing a single item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_materialReplace MaterialADestructiveInspect
Use when the user wants the material on a wall, floor, rug, curtain, countertop, backsplash, or another surface changed to match a reference image.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| surface | Yes | Surface whose material should change, such as wall, floor, countertop, or backsplash. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| reference_image | No | The reference image attached by the user. Do not ask the user for file metadata. | |
| reference_image_url | No | A link or inline copy of the reference image supplied by the client. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds no context beyond that — it does not say the original surface material is discarded, whether the result is a new generated image, or any cost/latency expectations for a destructive generative edit.
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?
A single sentence, front-loaded with 'Use when', with a compact surface list that carries real disambiguating information. Nothing is redundant or padded.
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 100% schema coverage, an output schema, and annotations covering the destructive/open-world profile, the description only needs to establish the trigger and scope, which it does. The remaining gap is that it never mentions that one of the image/reference image pairs must be supplied, but the schema carries that.
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 100%, so the schema already documents surface, image, reference_image, image_url, reference_image_url and additional_instructions in detail. The description adds only the semantic pairing idea ('match a reference image'), which lightly clarifies the reference_image role, but nothing about which image inputs are required or how the URL variants relate.
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 names a specific verb+resource ('material ... changed') and enumerates concrete target surfaces (wall, floor, rug, curtain, countertop, backsplash), which is enough to distinguish it from style-level siblings like change_room_style. It stops short of naming any sibling explicitly, so differentiation is inferred rather than stated.
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?
'Use when the user wants the material ... changed to match a reference image' gives a clear trigger condition. However, there is no when-not guidance and no named alternative for adjacent tasks (visualize_wall_colors, change_room_style, replace_furniture), leaving the agent to infer routing on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sky_blueSet Sky BlueADestructiveInspect
Use when the user wants a dull or cloudy sky changed to a clear bright blue sky while preserving the property and landscaping.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| reference_images | No | Optional reference images attached by the user. | |
| reference_image_urls | No | ||
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose non-read-only, destructive, non-idempotent, open-world behavior. The description adds one genuinely useful behavioral fact — property and landscaping are preserved — but it never clarifies that the tool produces a new image rather than mutating the source, nor how the destructiveHint applies to an image edit. That is a meaningful gap given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence beginning with the usage trigger, with no filler, hedging, or restatement of the title. Every clause earns its place by adding either a condition or a preservation guarantee.
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 five parameters, deeply nested image variants, and a declared output schema, the description covers only the when-to-use slice. It omits input handling expectations and does not mention that the user can steer the result via additional_instructions, leaving that to the schema. Adequate as a trigger statement, incomplete as a full operating brief.
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 80%, and the nested image/reference-image alternatives are documented in detail within the schema itself, so the schema carries the parameter burden. The description adds no parameter meaning at all — nothing about reference images or additional_instructions — so it neither compensates nor detracts.
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 sentence names a concrete transformation (dull/cloudy sky changed to clear bright blue) and a scope constraint (preserving property and landscaping), which is more specific than the bare name 'set_sky_blue'. It implicitly separates the tool from siblings like make_grass_greener or render_exterior, but never names those alternatives explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use when...' framing gives a clear triggering condition: the user wants an overcast sky replaced with blue. It stops short of stating when NOT to use it (e.g., when the user wants a full re-render or arbitrary sky replacement that would belong to custom_prompt), so there is no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_room_imageCreate a 4K RoomLab imageADestructiveInspect
Use this when the user asks to make an existing RoomLab image 4K. The generation ID is enough; RoomLab retrieves the image and selects the correct upscale path internally.
| Name | Required | Description | Default |
|---|---|---|---|
| generation_id | Yes | The RoomLab generation to make 4K. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotent behaviour, so the safety profile is covered elsewhere. The description adds internal routing context (the server selects the upscale path), but it never explains what the destructive hint actually means here, e.g., whether the original image is replaced or a new asset is created, nor the cost or latency.
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 short sentences, with the usage trigger front-loaded and no filler. Every clause carries information an agent needs before invoking the tool.
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?
An output schema exists, so return-value detail is unnecessary, and the single-parameter surface is fully covered. However, for a mutation flagged as destructive and non-idempotent, the description leaves unclear whether the original image survives, which is a meaningful gap for correct invocation and user warning.
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 the baseline would be 3, but the description adds real meaning: the generation ID alone is sufficient and the image is retrieved server-side, so the agent knows not to hunt for extra inputs.
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 states a specific verb and resource: make an existing RoomLab image 4K. That clearly separates it from the sibling tools, which are room-editing/render operations rather than upscales, though no sibling is named explicitly.
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?
It gives an explicit trigger condition ('when the user asks to make an existing RoomLab image 4K') and implies the input must already exist in RoomLab. There is no guidance on when not to use it or what to do instead when the image does not exist yet, 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.
virtual_stage_roomVirtual StagingADestructiveInspect
Use only when the user wants furniture and decor added to an empty room. Ask only for the room image, room type, and design style when missing. Do not use this to restyle a furnished room.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| room_type | Yes | Natural room name, such as bedroom, living room, kitchen, or office. | |
| design_style | Yes | Natural design style, such as Scandinavian, modern, industrial, or a style described by the user. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a non-read-only, non-idempotent, open-world, destructive operation, so the safety burden is partly carried. The description contributes the empty-room precondition, which meaningfully prevents misuse, but says nothing about output delivery (the presence of a get_generation sibling implies async work), cost, or why the call is marked destructive/idempotent=false.
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 short sentences with zero filler: trigger first, required-input policy second, exclusion last. Every sentence changes agent behavior.
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 5-parameter tool with nested image variants and an output schema, the description covers the two things structured fields cannot: when it applies and what to ask the user. The only real gap is not indicating whether the result is returned synchronously or must be polled via get_generation.
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% and the image union types are documented in detail, so the baseline is 3. The description still adds value by telling the agent to collect only room image, room type, and design style, and implicitly discouraging over-asking for additional_instructions.
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 states a specific transformation (furniture and decor added to an empty room), which distinguishes it from replace_furniture and change_room_style by pre-condition. It never names a sibling explicitly, so the boundary is inferred from 'empty room' rather than stated.
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?
It gives a clear positive trigger ('user wants furniture and decor added to an empty room') and an explicit exclusion ('Do not use this to restyle a furnished room'), plus guidance on which inputs to solicit. What is missing is naming the alternative tool to pick instead when the room is already furnished.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_wall_colorsWall ColorsADestructiveInspect
Use this when the user wants to compare paint colors on the walls of the same room. It returns a nine-color comparison. Color preferences are optional; use RoomLab’s balanced default palette when the user did not specify colors.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The room image attached by the user. Do not ask the user for file metadata. | |
| colors | No | Optional nine paint colors in grid order. Omit to use the same nine defaults shown in the workspace. | |
| image_url | No | A link or inline copy of the room image supplied by the client. | |
| additional_instructions | No | Optional user preferences stated in natural language. Do not ask for this when the request is already clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavior beyond the annotations: it returns nine variants rather than one, and it silently falls back to a balanced default palette when the user gives no colors. However, it never addresses the destructiveHint=true annotation — it doesn't say whether the original room image is preserved or overwritten, nor anything about cost/latency for an open-world generation call.
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 short sentences with the trigger condition front-loaded and no filler. The sentence about optional color preferences largely repeats the schema's own wording, costing a little space.
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?
An output schema exists so return values needn't be explained, and the description still summarizes the nine-color result. For a generation tool flagged destructive and open-world, the main remaining gap is not stating whether the source image is modified or preserved.
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 100% and the nested image/base64 variants are heavily documented in the schema itself, so the schema does the heavy lifting. The description only restates that colors are optional and defaulted, adding no detail about the color array format, ordering, or the additional_instructions parameter.
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 gives a specific verb ('compare') and resource ('paint colors on the walls of the same room') and states the output shape ('a nine-color comparison'), which is unique among the sibling tools that instead replace materials, furniture, or styles. It stops short of naming the closest alternative (e.g. replace_material) to sharpen the boundary.
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?
'Use this when the user wants to compare paint colors on the walls of the same room' gives a clear triggering condition, and the note about defaulting to RoomLab's palette covers the underspecified-request case. No alternative tool or exclusion is named, so the agent must infer when a different rendering tool is better.
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.
19 tool updates
- First observed
change_room_style - First observed
clean_garden - First observed
create_house_tour - First observed
create_video_transition - First observed
create_video_walkthrough - First observed
custom_prompt - First observed
declutter_room - First observed
empty_room - First observed
fill_and_clean_pool - First observed
get_generation - First observed
make_grass_greener - First observed
render_exterior - First observed
render_interior - First observed
replace_furniture - First observed
replace_material - First observed
set_sky_blue - First observed
upscale_room_image - First observed
virtual_stage_room - First observed
visualize_wall_colors
Related MCP Connectors
AI virtual staging and architectural rendering: stage rooms, render interiors, exteriors, sketches.
AI interior design — restyle rooms, place furniture, and virtually stage spaces from a photo.
11Virtual staging of one empty room from a public listing photo, labelled, original returned.
AI virtual staging for real estate — stage rooms, beautify floor plans, classify images.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAI-powered virtual staging for real estate professionals: stage empty rooms with photorealistic furniture, beautify floor plans into 3D renders, classify rooms, generate German property descriptions, and get style recommendations.4MIT
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to an interior design studio so users can upload room, home, or yard photos and generate photorealistic redesigns, paint and flooring previews, decluttering, virtual staging, and furniture shopping.MIT
- AlicenseAqualityAmaintenanceOpen-source home design and floor plan editor for AI agents: draw walls and rooms, place furniture, doors and windows, build kitchens and wardrobes, check lighting, ergonomics, electrical and plumbing against building codes, and render the plan, 3D views or photorealistic images. Runs in the desktop app, the browser or the hosted server, and every change can be undone.5737Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides AI assistants with real-estate visual tools including virtual staging, photo enhancement, decluttering, day-to-night conversion, plot signs, and cinematic property videos via the Pixly API.20 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.