Skip to main content
Glama

What to buy for a room (quick)

quick_room_list
Read-onlyIdempotent

Works out how much paint, wallpaper, wall tiles, flooring, carpet, skirting, loft insulation, plasterboard, concrete, patio paving or sub-base and gravel one room or area needs, and everything else to buy for the job (preparation, tools, safety), in real UK pack sizes. Takes the job and either the room's length, width and height, or a typical room by name for a room that has not been measured; the answer then states that the measurements are typical. A height left out, for a job on the walls, is taken as 2.4 m and the answer states it. Returns a short shopping list and a link to the whole list. It does not take exact door sizes, a product's own coverage or pack size, tiling part-way up a wall or an L-shaped room. For sub-base and gravel it plans gravel over Type 1 for a driveway, and the answer lists both as taken; plan_room takes groundwork.material (Type 1 or gravel alone) and groundwork.use (a path, a shed base or a border).

Input Schema

NameRequiredDescriptionDefault
jobYesThe job. Required. wallpaper is the paint job with papered walls and no ceiling; tiles is the paint job with tiled walls and no ceiling; both is paint and a new floor; paint-carpet is paint and carpet from a roll; skirting is skirting and architrave; groundwork is MOT Type 1 sub-base, gravel, or gravel over Type 1 (groundwork.material).
roomNoA typical room, for a person who has not measured: bedroom-small (3 m × 2.5 m), bedroom-large (4 m × 3.5 m), living-small (4 m × 3 m), living-large (5.5 m × 4 m), kitchen-small (3 m × 2 m), kitchen-large (4.5 m × 3.5 m), bathroom-small (2 m × 1.7 m), bathroom-large (2.7 m × 2.4 m), each 2.4 m high. The answer states that these are typical measurements. Not used together with length and width, and not for a loft, a slab, a patio or a sub-base, which are not rooms.
doorsNoHow many doors. Each is taken off the wall area at a typical size.
unitsNoWhat the measurements are in: m, cm, mm or ft (feet). Metres if left out.
widthNoThe room's width, in the units.
heightNoFloor to ceiling, in the units. Used for paint, wallpaper, wall tiles, both, paint-carpet and plasterboard; if it is left out for those, a 2.4 m ceiling, a typical UK height, is taken and the answer states it.
lengthNoThe room's length, in the units.
windowsNoHow many windows. Each is taken off the wall area at a typical size.

Output Schema

NameRequiredDescriptionDefault
vNoThe version number of the planner's link and answer format.
okYestrue: a list was made. false: the call was refused, and error says why.
apiNoAlways "buildbatch-assistant".
askNoWhen ok is false: the ids of the questions in ask_questions to ask the person, in order.
moreNoWhat plan_room with detail "full" adds.
nextNoWhen ok is false: what to do next.
roomNoThe room as the planner understood it: a sentence (metres, as worked out), or with detail "full" its areas and lengths.
errorNoWhen ok is false: why the call was refused, as words or as { code, message }.
firstNoWhat has to be in place before the job starts, as toBuy's items: not a thing to buy.
linesNodetail "full": every line with its working, packs, figures and each shop's search link.
linksNoWhat listUrl and startUrl open, in words.
shopsNodetail "full": the shops each line's search link goes to.
toBuyNoEach thing to buy, in the order of the list.
pricesNoThat no price is shown or used in this answer.
reviewNoHow far the figures have been checked: not yet by a tradesperson.
assumedNoWhat was taken as not given, with the value taken (a missing height is a 2.4 m ceiling).
figuresNoWhat generic, typical and user mean.
honestyNodetail "full": the formulas' versions, how far the figures have been checked, and what the shop links are.
ignoredNoArguments that were not used, with why.
listUrlNoThe whole list on buildbatch.co.uk, as a link a person can open.
notUsedNoArguments that were sent and not used, with why.
summaryNodetail "full": the counts and the short list.
toCheckNoEach thing that depends on the person's own job, as toBuy's items, with its question.
documentNo"plan-summary" for the short answer; the planner's own name for detail "full" or a refusal.
problemsNoWhen ok is false: each argument that is missing or not understood, with the id of its question in ask_questions.
startUrlNoThe planner opened on this room, to change it.
statusesNodetail "full": what each line's status means.
toAnswerNoQuestions whose answers would change the list.
warningsNoWarnings that come with the list.
leftoversNoWhat will be left over once the whole packs are bought.
understoodNodetail "full": every argument as the planner read it.
assumptionsNodetail "full": what the whole list assumes.
typicalRoomNoWhen a typical room was used: its id, label and a note that these are not the person's own measurements.
startUrlNoteNoWhat the startUrl link opens.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / job / description
      Previous value: -"The job. Required. wallpaper is the paint job with papered walls and no ceiling; tiles is the paint job with tiled walls and no ceiling; both is paint and a new floor; paint-carpet is paint and carpet from a roll; skirting is skirting and architrave."New value: +"The job. Required. wallpaper is the paint job with papered walls and no ceiling; tiles is the paint job with tiled walls and no ceiling; both is paint and a new floor; paint-carpet is paint and carpet from a roll; skirting is skirting and architrave; groundwork is MOT Type 1 sub-base, gravel, or gravel over Type 1 (groundwork.material)."
    • changedInput schema / properties / job / enum
      Previous value: -[
      -  "paint",
      -  "wallpaper",
      -  "tiles",
      -  "flooring",
      -  "carpet",
      -  "loft",
      -  "both",
      -  "paint-carpet",
      -  "skirting",
      -  "plasterboard",
      -  "concrete",
      -  "patio"
      -]New value: +[
      +  "paint",
      +  "wallpaper",
      +  "tiles",
      +  "flooring",
      +  "carpet",
      +  "loft",
      +  "both",
      +  "paint-carpet",
      +  "skirting",
      +  "plasterboard",
      +  "concrete",
      +  "patio",
      +  "groundwork"
      +]
    • changedInput schema / properties / room / description
      Previous value: -"A typical room, for a person who has not measured: bedroom-small (3 m × 2.5 m), bedroom-large (4 m × 3.5 m), living-small (4 m × 3 m), living-large (5.5 m × 4 m), kitchen-small (3 m × 2 m), kitchen-large (4.5 m × 3.5 m), bathroom-small (2 m × 1.7 m), bathroom-large (2.7 m × 2.4 m), each 2.4 m high. The answer states that these are typical measurements. Not used together with length and width, and not for a loft, a slab or a patio, which are not rooms."New value: +"A typical room, for a person who has not measured: bedroom-small (3 m × 2.5 m), bedroom-large (4 m × 3.5 m), living-small (4 m × 3 m), living-large (5.5 m × 4 m), kitchen-small (3 m × 2 m), kitchen-large (4.5 m × 3.5 m), bathroom-small (2 m × 1.7 m), bathroom-large (2.7 m × 2.4 m), each 2.4 m high. The answer states that these are typical measurements. Not used together with length and width, and not for a loft, a slab, a patio or a sub-base, which are not rooms."
  2. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "doors": 1,
      +    "height": 2.4,
      +    "job": "paint",
      +    "length": 4,
      +    "width": 3,
      +    "windows": 1
      +  },
      +  {
      +    "job": "flooring",
      +    "room": "living-small"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "api": {
      +      "description": "Always \"buildbatch-assistant\".",
      +      "type": "string"
      +    },
      +    "ask": {
      +      "description": "When ok is false: the ids of the questions in ask_questions to ask the person, in order.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "assumed": {
      +      "description": "What was taken as not given, with the value taken (a missing height is a 2.4 m ceiling).",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "assumptions": {
      +      "description": "detail \"full\": what the whole list assumes.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "document": {
      +      "description": "\"plan-summary\" for the short answer; the planner's own name for detail \"full\" or a refusal.",
      +      "type": "string"
      +    },
      +    "error": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      ],
      +      "description": "When ok is false: why the call was refused, as words or as { code, message }."
      +    },
      +    "figures": {
      +      "description": "What generic, typical and user mean.",
      +      "type": "string"
      +    },
      +    "first": {
      +      "description": "What has to be in place before the job starts, as toBuy's items: not a thing to buy.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "honesty": {
      +      "description": "detail \"full\": the formulas' versions, how far the figures have been checked, and what the shop links are.",
      +      "type": "object"
      +    },
      +    "ignored": {
      +      "description": "Arguments that were not used, with why.",
      +      "type": "array"
      +    },
      +    "leftovers": {
      +      "description": "What will be left over once the whole packs are bought.",
      +      "type": "array"
      +    },
      +    "lines": {
      +      "description": "detail \"full\": every line with its working, packs, figures and each shop's search link.",
      +      "type": "array"
      +    },
      +    "links": {
      +      "description": "What listUrl and startUrl open, in words.",
      +      "type": "object"
      +    },
      +    "listUrl": {
      +      "description": "The whole list on buildbatch.co.uk, as a link a person can open.",
      +      "type": "string"
      +    },
      +    "more": {
      +      "description": "What plan_room with detail \"full\" adds.",
      +      "type": "string"
      +    },
      +    "next": {
      +      "description": "When ok is false: what to do next.",
      +      "type": "string"
      +    },
      +    "notUsed": {
      +      "description": "Arguments that were sent and not used, with why.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "ok": {
      +      "description": "true: a list was made. false: the call was refused, and error says why.",
      +      "type": "boolean"
      +    },
      +    "prices": {
      +      "description": "That no price is shown or used in this answer.",
      +      "type": "string"
      +    },
      +    "problems": {
      +      "description": "When ok is false: each argument that is missing or not understood, with the id of its question in ask_questions.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "review": {
      +      "description": "How far the figures have been checked: not yet by a tradesperson.",
      +      "type": "string"
      +    },
      +    "room": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "object"
      +        }
      +      ],
      +      "description": "The room as the planner understood it: a sentence (metres, as worked out), or with detail \"full\" its areas and lengths."
      +    },
      +    "shops": {
      +      "description": "detail \"full\": the shops each line's search link goes to.",
      +      "type": "array"
      +    },
      +    "startUrl": {
      +      "description": "The planner opened on this room, to change it.",
      +      "type": "string"
      +    },
      +    "startUrlNote": {
      +      "description": "What the startUrl link opens.",
      +      "type": "string"
      +    },
      +    "statuses": {
      +      "description": "detail \"full\": what each line's status means.",
      +      "type": "object"
      +    },
      +    "summary": {
      +      "description": "detail \"full\": the counts and the short list.",
      +      "type": "object"
      +    },
      +    "toAnswer": {
      +      "description": "Questions whose answers would change the list.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "toBuy": {
      +      "description": "Each thing to buy, in the order of the list.",
      +      "items": {
      +        "properties": {
      +          "checkFirst": {
      +            "description": "What to check before buying.",
      +            "type": "string"
      +          },
      +          "examplePack": {
      +            "description": "The example pack kept beside a figure sent.",
      +            "type": "boolean"
      +          },
      +          "figures": {
      +            "description": "generic, typical or user: see figures.",
      +            "type": "string"
      +          },
      +          "figuresFrom": {
      +            "description": "A typical figure's sources and the day read.",
      +            "type": "string"
      +          },
      +          "figuresNote": {
      +            "description": "Which figures are whose.",
      +            "type": "string"
      +          },
      +          "item": {
      +            "description": "What to buy.",
      +            "type": "string"
      +          },
      +          "needed": {
      +            "description": "Paint: the litres needed before rounding up to tins.",
      +            "type": "string"
      +          },
      +          "quantity": {
      +            "description": "How much to buy, in the planner's words: whole packs as sold, a part pack rounded up (\"1 × 5 L + 1 × 2.5 L\"), or an amount to order or to cover where it is not sold in packs (\"1.32 m³ to order\").",
      +            "type": "string"
      +          },
      +          "question": {
      +            "description": "A line to check: its question and answers.",
      +            "type": "object"
      +          },
      +          "why": {
      +            "description": "How it was worked out.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "item"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "toCheck": {
      +      "description": "Each thing that depends on the person's own job, as toBuy's items, with its question.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "typicalRoom": {
      +      "description": "When a typical room was used: its id, label and a note that these are not the person's own measurements.",
      +      "type": "object"
      +    },
      +    "understood": {
      +      "description": "detail \"full\": every argument as the planner read it.",
      +      "type": "object"
      +    },
      +    "v": {
      +      "description": "The version number of the planner's link and answer format.",
      +      "type": "number"
      +    },
      +    "warnings": {
      +      "description": "Warnings that come with the list.",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / height / description
      Previous value: -"Floor to ceiling, in the units. Needed for paint, wallpaper, wall tiles, both, paint-carpet and plasterboard. 2.4 m is a typical UK ceiling height."New value: +"Floor to ceiling, in the units. Used for paint, wallpaper, wall tiles, both, paint-carpet and plasterboard; if it is left out for those, a 2.4 m ceiling, a typical UK height, is taken and the answer states it."
  4. Changed3 schema fields changed
    • changedInput schema / properties / height / description
      Previous value: -"Floor to ceiling, in the units. Needed for paint, wallpaper and wall tiles. 2.4 m is a typical UK ceiling height."New value: +"Floor to ceiling, in the units. Needed for paint, wallpaper, wall tiles, both, paint-carpet and plasterboard. 2.4 m is a typical UK ceiling height."
    • changedInput schema / properties / room / description
      Previous value: -"A typical room, for a person who has not measured: bedroom-small (3 m × 2.5 m), bedroom-large (4 m × 3.5 m), living-small (4 m × 3 m), living-large (5.5 m × 4 m), kitchen-small (3 m × 2 m), kitchen-large (4.5 m × 3.5 m), bathroom-small (2 m × 1.7 m), bathroom-large (2.7 m × 2.4 m), each 2.4 m high. The answer states that these are typical measurements. Not used together with length and width."New value: +"A typical room, for a person who has not measured: bedroom-small (3 m × 2.5 m), bedroom-large (4 m × 3.5 m), living-small (4 m × 3 m), living-large (5.5 m × 4 m), kitchen-small (3 m × 2 m), kitchen-large (4.5 m × 3.5 m), bathroom-small (2 m × 1.7 m), bathroom-large (2.7 m × 2.4 m), each 2.4 m high. The answer states that these are typical measurements. Not used together with length and width, and not for a loft, a slab or a patio, which are not rooms."
    • changedInput schema / properties / units / description
      Previous value: -"What the measurements are in. Metres if left out."New value: +"What the measurements are in: m, cm, mm or ft (feet). Metres if left out."
  5. Changed1 schema field changed
    • changedInput schema / properties / job / description
      Previous value: -"The job. Required. wallpaper is the paint job with papered walls and no ceiling; tiles is the paint job with tiled walls and no ceiling; both is paint and a new floor; paint-carpet is paint and one unjoined piece of carpet; skirting is skirting and architrave."New value: +"The job. Required. wallpaper is the paint job with papered walls and no ceiling; tiles is the paint job with tiled walls and no ceiling; both is paint and a new floor; paint-carpet is paint and carpet from a roll; skirting is skirting and architrave."
  6. Changed1 schema field changed
    • changedInput schema / properties / job / enum
      Previous value: -[
      -  "paint",
      -  "wallpaper",
      -  "tiles",
      -  "flooring",
      -  "carpet",
      -  "loft",
      -  "both",
      -  "paint-carpet",
      -  "skirting",
      -  "plasterboard",
      -  "concrete"
      -]New value: +[
      +  "paint",
      +  "wallpaper",
      +  "tiles",
      +  "flooring",
      +  "carpet",
      +  "loft",
      +  "both",
      +  "paint-carpet",
      +  "skirting",
      +  "plasterboard",
      +  "concrete",
      +  "patio"
      +]
  7. Changed4 schema fields changed
    • changedInput schema / properties / doors / description
      Previous value: -"How many doors. Each is taken off the wall area at a typical size; plan_room takes exact sizes."New value: +"How many doors. Each is taken off the wall area at a typical size."
    • changedInput schema / properties / height / description
      Previous value: -"Floor to ceiling, in the units. Paint, wallpaper and wall tiles need it; ask the person, and if they do not know, 2.4 m is typical (say so)."New value: +"Floor to ceiling, in the units. Needed for paint, wallpaper and wall tiles. 2.4 m is a typical UK ceiling height."
    • changedInput schema / properties / room / description
      Previous value: -"A typical room, for a person who has not measured: bedroom-small (3 m × 2.5 m), bedroom-large (4 m × 3.5 m), living-small (4 m × 3 m), living-large (5.5 m × 4 m), kitchen-small (3 m × 2 m), kitchen-large (4.5 m × 3.5 m), bathroom-small (2 m × 1.7 m), bathroom-large (2.7 m × 2.4 m), each 2.4 m high. Say to the person that it is typical, not their room. Leave out when length and width are given."New value: +"A typical room, for a person who has not measured: bedroom-small (3 m × 2.5 m), bedroom-large (4 m × 3.5 m), living-small (4 m × 3 m), living-large (5.5 m × 4 m), kitchen-small (3 m × 2 m), kitchen-large (4.5 m × 3.5 m), bathroom-small (2 m × 1.7 m), bathroom-large (2.7 m × 2.4 m), each 2.4 m high. The answer states that these are typical measurements. Not used together with length and width."
    • changedInput schema / properties / windows / description
      Previous value: -"How many windows. Each is taken off the wall area at a typical size; plan_room takes exact sizes."New value: +"How many windows. Each is taken off the wall area at a typical size."
  8. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds important behavioral context beyond that: default 2.4 m height with disclosure in the answer, typical-room measurements flagged as typical, output as a short shopping list plus link, and specific groundwork planning behavior.

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 front-loads the core purpose and then covers limitations and defaults. Most sentences carry useful information, though the single dense paragraph could be structured more cleanly for scanning.

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?

With rich annotations, full schema coverage, and an output schema, the description supplies the remaining context an agent needs: scope, limitations, default assumptions, output shape, and the plan_room alternative for groundwork. Nothing critical is missing for correct invocation.

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 100%, so the schema already documents all eight parameters, including enums, defaults, and measurement units. The description reinforces some semantics (height default, typical rooms, job/room interaction) but adds little beyond the schema's own parameter descriptions.

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 calculation task and enumerates the resources it covers (paint, wallpaper, tiles, flooring, etc.), plus the shopping-list output. It also distinguishes itself from plan_room for groundwork cases, so an agent can identify its role without opening the schema.

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-not conditions (no exact door sizes, product coverage, part-wall tiling, L-shaped rooms) and names plan_room as the alternative for groundwork material/use choices. It does not fully route every quick-vs-detailed scenario, but the main exclusions and one key alternative are explicit.

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