Skip to main content
Glama

Draw Floor Plan

draw_floor_plan

Free (no credits): draw a clean 2D floor plan from a layout YOU write — read the user's description, or look at their hand sketch or brochure plan, and send every room as a rectangle in metres (or feet) plus doors and windows. Returns the drawn plan (areas and dimensions on it) at once, saved so the user can fine-tune it in Pixly's floor plan editor. If the layout has problems (overlapping rooms, a door between rooms that don't touch) you get exactly what to fix — fix it and call again. To change a plan, call again with its planId and the whole updated layout; the new version is saved as its own plan and the earlier one is kept.

Input Schema

NameRequiredDescriptionDefault
doorsNo
roomsYesEvery room as an axis-aligned rectangle. Neighbouring rooms must share the wall exactly (one's right edge = the other's left edge) and must not overlap. An L-shaped space = two rectangles joined by a doorway. Lay out a typical sensible plan when the user gives only rough sizes.
titleNoAddress or listing name for the plan's title block.
unitsNoUnits of every number below, and of the labels on the plan.m
planIdNoTo CHANGE a plan you drew before: its planId from that result, with the whole updated layout — saved as a new plan beside it (nothing is overwritten). Omit for a new plan.
windowsNo
listingIdNoA property folder (from list_listings or create_listing) to put the result in. Results of a photo that is already in a folder go there by themselves.

Output Schema

NameRequiredDescriptionDefault
jobsNoSeveral jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results
noteNo
typeNo
errorNo
jobIdYesPass to get_job to poll
quoteNoPresent when status is "awaiting_confirmation": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm
statusYespending | processing | completed | failed — anything not completed/failed is still running
createdAtNo
resultUrlsNoPresent when completed; valid 7 days
completedAtNo
resultPathsNoStorage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result
creditsChargedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / listingId
      Added value: +{
      +  "description": "A property folder (from list_listings or create_listing) to put the result in. Results of a photo that is already in a folder go there by themselves.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / jobs
      Added value: +{
      +  "description": "Several jobs at once (get_job with jobIds, or a plan's steps): each one's jobId, status and results",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / quote
      Added value: +{
      +  "description": "Present when status is \"awaiting_confirmation\": nothing ran and nothing was charged yet — the price and settings the user is asked to confirm",
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / planId / description
      Previous value: -"To CHANGE a plan you drew before: its planId from that result, with the whole updated layout. Omit for a new plan."New value: +"To CHANGE a plan you drew before: its planId from that result, with the whole updated layout — saved as a new plan beside it (nothing is overwritten). Omit for a new plan."
  4. Changed1 schema field changed
    • addedOutput schema / properties / resultPaths
      Added value: +{
      +  "description": "Storage path of each result — pass one as r2Path (or beforeR2Path, a photos[] item) to run another tool on this result",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  5. Changed11 schema fields changed
    • removedInput schema / properties / doors / items / properties / width / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / doors / items / properties / width / minimum
      Added value: +0.1
    • removedInput schema / properties / planId / format
      Removed value: -"uuid"
    • addedInput schema / properties / planId / maxLength
      Added value: +40
    • removedInput schema / properties / planId / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedInput schema / properties / rooms / items / properties / depth / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / rooms / items / properties / depth / minimum
      Added value: +0.1
    • removedInput schema / properties / rooms / items / properties / width / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / rooms / items / properties / width / minimum
      Added value: +0.1
    • removedInput schema / properties / windows / items / properties / width / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / windows / items / properties / width / minimum
      Added value: +0.1
  6. Added

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, idempotent=false, destructive=false), the description discloses cost (free, no credits), that a validated result is returned in one shot, that invalid layouts return exactly what to fix with a retry instruction, and the versioning behaviour (a changed plan is saved as its own plan and the earlier one is kept). This is precisely the contextual detail the annotations cannot carry.

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 free/cost point and the core action are front-loaded, and the retry loop and versioning details follow logically. Sentence three and four are long compound constructions that could be split, but every sentence carries distinct information with no obvious filler.

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?

For a 7-parameter creation tool with an output schema present, the description covers the action, the input-authoring model, the failure/retry contract, the save destination, and the update semantics. Return-value detail is correctly left to the output schema, and nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 71% and the nested schema is already highly descriptive (wall-sharing rules, L-shape guidance, planId change semantics, units). The description restates the essentials ('every room as a rectangle in metres (or feet) plus doors and windows', 'the whole updated layout') without adding syntax or constraints the schema does not already state, so a baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb + resource ('draw a clean 2D floor plan') and immediately clarifies the distinctive input model: the agent writes the layout itself rather than the tool deriving it from photos. The '2D' qualifier and 'Free (no credits)' framing implicitly separate it from photorealistic sibling renders like render_floor_plan.

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

Usage Guidelines4/5

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

Gives clear when-to-use context: read the user's description, or work from their hand sketch or brochure plan. It also states the re-invocation rule ('To change a plan, call again with its planId'). It never explicitly names an alternative sibling (e.g. render_floor_plan) or states when not to use this tool, so it stops short of full routing guidance.

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