RoomLab.app MCP
An official MCP server that allows AI agents to perform virtual staging, decluttering, style changes, furniture replacement, material swapping, and property video generation using RoomLab.app's AI tools.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.roomlab.app/mcpWhat its tools do
19 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (1)
Can change data (18)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to roomlab.app ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Stage empty rooms with furniture for real estate listings
- Declutter rooms by removing personal items and mess
- Change room style using preset designs or custom prompts
- Generate video walkthroughs from property photos
Source and maintenance
Protocol and capabilities
- Server
- roomlab 0.4.7
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 19 advertised
- Resources
- 8 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
19 advertised
virtual_stage_room — Virtual Staging
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"room_type",
"design_style"
],
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"room_type": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Natural room name, such as bedroom, living room, kitchen, or office."
},
"design_style": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Natural design style, such as Scandinavian, modern, industrial, or a style described by the user."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Virtual Staging",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}change_room_style — Change Style
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"room_type",
"design_style"
],
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"room_type": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Natural room name, such as bedroom, living room, kitchen, or office."
},
"design_style": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Natural design style, such as Scandinavian, modern, industrial, or a style described by the user."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Change Style",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}declutter_room — Declutter Room
Use when the user wants clutter and visual mess removed while keeping the major furniture and architecture. This matches the Declutter Room workspace card.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Declutter Room",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}empty_room — Empty Room
Use when the user wants all furniture, appliances, and decor removed so the room appears vacant. This matches the Empty Room workspace card.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Empty Room",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}replace_furniture — Replace Furniture
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"room_type",
"furniture_item"
],
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"room_type": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Room type, such as living room, bedroom, kitchen, bathroom, dining room, or office."
},
"furniture_item": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Furniture item to replace, such as sofa, bed, chair, or table."
},
"reference_image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The reference image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"reference_image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the reference image supplied by the client."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Replace Furniture",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}replace_material — Replace Material
Use when the user wants the material on a wall, floor, rug, curtain, countertop, backsplash, or another surface changed to match a reference image.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"surface"
],
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"surface": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Surface whose material should change, such as wall, floor, countertop, or backsplash."
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"reference_image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The reference image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"reference_image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the reference image supplied by the client."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Replace Material",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}render_interior — Interior Architectural Render
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"time_of_day": {
"type": "string",
"maxLength": 200,
"description": "Optional workspace time-of-day choice, such as morning, midday, afternoon, golden hour, dusk, night, or a custom description."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Interior Architectural Render",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}render_exterior — Exterior Architectural Render
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"season": {
"type": "string",
"maxLength": 100,
"description": "Optional workspace season choice: spring, summer, autumn, winter, or a custom description."
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"landscape": {
"type": "string",
"maxLength": 300,
"description": "Optional workspace landscape choice or custom setting."
},
"time_of_day": {
"type": "string",
"maxLength": 200,
"description": "Optional workspace time-of-day choice, such as morning, midday, afternoon, golden hour, dusk, night, or a custom description."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Exterior Architectural Render",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}custom_prompt — Custom Prompt
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"instructions"
],
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"instructions": {
"type": "string",
"maxLength": 2000,
"minLength": 2,
"description": "The user’s requested room edit in natural language."
},
"reference_images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "An attached image supplied by a file-aware client. If the host only exposes a local path, omit this field so RoomLab can request the image safely.",
"additionalProperties": false
},
"maxItems": 6,
"description": "Optional reference images attached by the user."
},
"reference_image_urls": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A public HTTPS image URL or the existing inline base64 image supplied by the client. Never pass file:// URLs, local paths, invented bytes, or file metadata."
},
"maxItems": 6
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Custom Prompt",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}set_sky_blue — Set Sky Blue
Use when the user wants a dull or cloudy sky changed to a clear bright blue sky while preserving the property and landscaping.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"reference_images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "An attached image supplied by a file-aware client. If the host only exposes a local path, omit this field so RoomLab can request the image safely.",
"additionalProperties": false
},
"maxItems": 6,
"description": "Optional reference images attached by the user."
},
"reference_image_urls": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A public HTTPS image URL or the existing inline base64 image supplied by the client. Never pass file:// URLs, local paths, invented bytes, or file metadata."
},
"maxItems": 6
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Set Sky Blue",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}fill_and_clean_pool — Fill and Clean Pool
Use when the user wants a pool filled with clean water and the surrounding pool area tidied.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"reference_images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "An attached image supplied by a file-aware client. If the host only exposes a local path, omit this field so RoomLab can request the image safely.",
"additionalProperties": false
},
"maxItems": 6,
"description": "Optional reference images attached by the user."
},
"reference_image_urls": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A public HTTPS image URL or the existing inline base64 image supplied by the client. Never pass file:// URLs, local paths, invented bytes, or file metadata."
},
"maxItems": 6
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Fill and Clean Pool",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}clean_garden — Clean the Garden
Use when the user wants weeds and debris removed so a garden or outdoor area looks neat and maintained.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"reference_images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "An attached image supplied by a file-aware client. If the host only exposes a local path, omit this field so RoomLab can request the image safely.",
"additionalProperties": false
},
"maxItems": 6,
"description": "Optional reference images attached by the user."
},
"reference_image_urls": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A public HTTPS image URL or the existing inline base64 image supplied by the client. Never pass file:// URLs, local paths, invented bytes, or file metadata."
},
"maxItems": 6
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Clean the Garden",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}make_grass_greener — Make Grass Greener
Use when the user wants dry or patchy grass refreshed so the lawn looks green and healthy.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"reference_images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "An attached image supplied by a file-aware client. If the host only exposes a local path, omit this field so RoomLab can request the image safely.",
"additionalProperties": false
},
"maxItems": 6,
"description": "Optional reference images attached by the user."
},
"reference_image_urls": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A public HTTPS image URL or the existing inline base64 image supplied by the client. Never pass file:// URLs, local paths, invented bytes, or file metadata."
},
"maxItems": 6
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Make Grass Greener",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}visualize_wall_colors — Wall Colors
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"colors": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 2
},
"maxItems": 9,
"minItems": 9,
"description": "Optional nine paint colors in grid order. Omit to use the same nine defaults shown in the workspace."
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Wall Colors",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}create_video_walkthrough — Video Walkthrough
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"video_effect"
],
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"video_effect": {
"type": "string",
"maxLength": 5000,
"minLength": 2,
"description": "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": {
"anyOf": [
{
"type": "number",
"const": 5
},
{
"type": "number",
"const": 10
}
],
"description": "The workspace offers 5 or 10 seconds. Omit unless the user requests one; the default is 5 seconds."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Video Walkthrough",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}create_video_transition — Video Transition
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"transition_style"
],
"properties": {
"image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The room image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"end_image": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "The transition end image attached by the user. Do not ask the user for file metadata.",
"additionalProperties": false
},
"image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the room image supplied by the client."
},
"end_image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A link or inline copy of the transition end image supplied by the client."
},
"duration_seconds": {
"anyOf": [
{
"type": "number",
"const": 5
},
{
"type": "number",
"const": 10
}
],
"description": "The workspace offers 5 or 10 seconds. Omit unless the user requests one; the default is 5 seconds."
},
"transition_style": {
"type": "string",
"maxLength": 5000,
"minLength": 2,
"description": "How the start image should transform into the end image, such as a timelapse, falling into place, assembling, or a custom description."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Video Transition",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}create_house_tour — House Tour
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri",
"description": "A temporary HTTPS download URL supplied by the host. Never construct this from a local path."
}
},
"description": "An attached image supplied by a file-aware client. If the host only exposes a local path, omit this field so RoomLab can request the image safely.",
"additionalProperties": false
},
"maxItems": 6,
"minItems": 3,
"description": "Three to six room images attached by the user in tour order."
},
"image_urls": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"anyOf": [
{
"type": "string",
"maxLength": 13981144,
"description": "A complete data:image/jpeg, data:image/png, or data:image/webp base64 URI supplied by the client."
},
{
"type": "object",
"required": [
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mime_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"mime_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "image"
},
"mimeType": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"type": {
"type": "string",
"const": "image"
},
"source": {
"type": "object",
"required": [
"type",
"media_type",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 13981080,
"minLength": 4,
"description": "The existing base64 image bytes. Pass them unchanged; do not regenerate or summarize them."
},
"type": {
"type": "string",
"const": "base64"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/webp"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
]
}
],
"description": "A public HTTPS image URL or the existing inline base64 image supplied by the client. Never pass file:// URLs, local paths, invented bytes, or file metadata."
},
"maxItems": 6,
"minItems": 3
},
"tour_script": {
"type": "string",
"maxLength": 5000,
"description": "Optional user-written tour script. Omit to use RoomLab’s professional automatic tour."
},
"duration_seconds": {
"anyOf": [
{
"type": "number",
"const": 12
},
{
"type": "number",
"const": 15
},
{
"type": "number",
"const": 30
}
],
"description": "The workspace offers 12, 15, or 30 seconds. Omit unless the user requests one; the default is 12 seconds."
},
"additional_instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional user preferences stated in natural language. Do not ask for this when the request is already clear."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "House Tour",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}upscale_room_image — Create a 4K RoomLab image
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string",
"minLength": 1,
"description": "The RoomLab generation to make 4K."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Create a 4K RoomLab image",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}get_generation — Retrieve a RoomLab result
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string",
"minLength": 1
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"required": [
"success",
"status"
],
"properties": {
"error": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"capability": {
"type": "string"
},
"output_url": {
"type": "string",
"format": "uri"
},
"credits_used": {
"type": "number"
},
"generation_id": {
"type": "string"
},
"credits_remaining": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Retrieve a RoomLab result",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
8 advertised
roomlab-generation-widget-v1
ui://roomlab/generation-v1.htmlroomlab-generation-widget-v2
ui://roomlab/generation-v2.htmlroomlab-generation-widget-v3
ui://roomlab/generation-v3.htmlroomlab-generation-widget-v4
ui://roomlab/generation-v4.htmlroomlab-generation-widget-v5
ui://roomlab/generation-v5.htmlroomlab-generation-widget-v6
ui://roomlab/generation-v6.htmlroomlab-generation-widget-v7
ui://roomlab/generation-v7.htmlroomlab-generation-widget-v8
ui://roomlab/generation-v8.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1552 ms
- 95th percentile latency
- 1552 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1552 ms · metadata changed · 19 tool(s), 8 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http roomlab-app-mcp https://mcp.roomlab.app/mcpCodex
codex mcp add roomlab-app-mcp --url https://mcp.roomlab.app/mcpCursor
{
"mcpServers": {
"roomlab-app-mcp": {
"url": "https://mcp.roomlab.app/mcp"
}
}
}Cline
{
"mcpServers": {
"roomlab-app-mcp": {
"type": "streamableHttp",
"url": "https://mcp.roomlab.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"roomlab-app-mcp": {
"type": "http",
"url": "https://mcp.roomlab.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http roomlab-app-mcp https://mcp.roomlab.app/mcpClaude Desktop
https://mcp.roomlab.app/mcpWindsurf
{
"mcpServers": {
"roomlab-app-mcp": {
"serverUrl": "https://mcp.roomlab.app/mcp"
}
}
}Let your agent find its tools
Find servers like RoomLab.app MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other design servers
Do you run RoomLab.app MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.