Skip to main content
Glama

Roomproof

Place furniture

place_furniture

Places furniture and returns the checked plan as an image plus placed, rejected, issues and image_prompt. Send exactly one of spots, placement, or wish. Prefer spots: you name each piece and a rough position (at), the server finds the exact spot, snaps to a 5 cm grid and avoids walls, doors and other pieces. Use placement only when the user gives exact positions; never invent x, y or rot. Use wish only when the user describes the room without naming pieces; it calls Roomproof's own model, is slower and less predictable. Every way is checked against the floor area, overlaps, blocked areas and a 0.9 m path; what does not fit comes back in rejected with a reason. Dimensions in millimeters; x and y in meters to the CENTER of the piece, from the room's top-left corner. Needs key on your own project, free on beispiel-wohnzimmer (nothing is saved there).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyNoPurchase token rp_ plus 20 characters, from the purchase confirmation. Required on projects you created, not on beispiel-wohnzimmer. Not the project id.
keepNoDefault false: the new pieces replace everything in the plan. true adds them to the pieces already there.
nameNoName of the saved variant, default Draft.
wishNoOne sentence describing the room, e.g. a living room for four with a reading corner. Only without spots and placement.
spotsNoPreferred. 1 to 40 pieces, each with catalog or with name plus width_mm and depth_mm, plus at. Larger pieces are placed first.
blockedNoRectangles that must stay free (radiator, wall cupboard, walkway): x, y, w, h in meters from the room's top-left corner, not piece centers. Door swings are added automatically.
outdoorNoWith wish only: limit the model to outdoor furniture, for terraces and balconies.
projectYesPlan id from create_room, or beispiel-wohnzimmer.
placementNoExact positions from the user, 1 to 60 pieces. Each with catalog or with name plus width_mm and depth_mm, plus x, y (meters to the piece center) and rot. Nothing is nudged: a piece that sticks out or overlaps is rejected.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only indicate non-readonly, non-destructive, non-idempotent, non-open-world, but the description adds substantial behavioral detail: checks against floor area, overlaps, blocked areas, 0.9m path, rejected pieces with reasons, no nudging for placement, and that nothing is saved on beispiel-wohnzimmer. This goes well beyond the annotations.

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

Conciseness4/5

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

The description is long but well-structured and front-loaded with the core purpose and the 'exactly one of' rule. Every sentence adds value; however, the density is high and could be slightly tightened. It is still efficient given the tool's complexity.

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

Completeness5/5

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

Given no output schema, the description fully explains the return payload (image plus placed, rejected, issues, image_prompt). It covers all three modes, the validation logic, the key requirement, and the difference between spot-based and placement-based invocation. Nothing essential is missing for an agent to call the tool correctly.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds crucial semantics: coordinate system (x,y in meters to CENTER from top-left), units (millimeters for dimensions), and clarifies the 'at' parameter values. It also explains the difference between blocked rectangles and piece centers, which is not obvious from the schema alone.

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

Purpose5/5

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

The description clearly states the tool's function: placing furniture and returning a checked plan image with detailed outputs (placed, rejected, issues, image_prompt). It also distinguishes the three modes (spots, placement, wish) and differentiates from siblings like move_furniture by focusing on placement of new pieces.

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

Usage Guidelines5/5

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

Explicit guidance on when to use each mode: 'Prefer spots...', 'Use placement only when the user gives exact positions; never invent x, y or rot.', 'Use wish only when the user describes the room without naming pieces.' It also mentions the key requirement (own project vs beispiel-wohnzimmer) and the default behavior of replacing vs keeping pieces.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources