Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "plan_room"
⟨603 unchanged words⟩ ,"custom"],"type":"string"},"concrete.aggregate":{"description":"Whether the aggregate is bought as all-in ballast or as sharp sand and coarse aggregate. Mixed on site only.","enum":["ballast","separate"],"type":"string"},"concrete.extra":{"anyOf":[{"type":"number ⟨6 unchanged words⟩ for an uneven base and spillage."},"concrete.mix":{"description":"Which of the maker's published mixes the cement, sand and aggregate follow: general purpose, paving or foundation. Mixed on site only.","enum":["general","paving","foundation"],"type":"string"},"concrete.step":{"anyOf":[{"type":"number ⟨11 unchanged words⟩ ready-mixed concrete in. Ready-mixed only; optional."},"concrete.subdensity":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The sub-base material's density in tonnes a cubic metre, as the supplier gives it. With concrete.subdepth; optional. BuildBatch assumes none."},"concrete.subdepth":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Depth of the sub-base under the slab in millimetres, decided for the job. With concrete.subdensity, the sub-base is counted in tonnes; optional."},"concrete.supply":{"description":"Bags of dry mix, cement with sand and aggregate mixed on site (mix), or ready-mixed concrete delivered by the cubic metre.","enum":["bags","mix","mixed"],"type":"string"}, ⟨1429 unchanged words⟩
Changed the definition of "plan_room"
⟨63 unchanged words⟩ named in the answer. Returns a short shoppinglist;list:theeachstructureditemcontentwithhasitseveryquantitylineand reason,itsandworkingaand
Changed the definition of "ask_questions", "find_guide", "plan_room" and 1 more
GetReturns BuildBatch's full ordered question script (about 24 KB)before using plan_roomfor a detailedplan. Not neededroomforplan:quick_room_list.eachAskquestiononlyforwhattheappliesperson,useits
Added "find_guide" and "quick_room_list"; changed the definition of "ask_questions" and "plan_room" (2 tools before, 4 now)
Get BuildBatch's full ordered question script (about 24 KB) beforeplanning.using plan_room for a detailed plan. Not needed for quick_room_list. Ask only what applies, use measurements the ⟨10 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Questions for a BuildBatch room plan"}
Changed the definition of "plan_room"
⟨310 unchanged words⟩ added once to each room measurement."},"carpet.covering":{"description":"What is laid from the roll: carpet (with underlay and gripper) or sheet vinyl (loose laid, taped or glued; no underlay). Sheet vinyl is sold in 2, 3 and 4 m widths; its quick example is a 3 m roll.","enum":["carpet","vinyl"],"type":"string"},"carpet.direction":{"description":"Which way the pile ⟨261 unchanged words⟩ Rarely needed.","type":"string"},"concrete":{"description":"Whether the concrete slab uses labelled example figures (quick) or the thickness decided for the job and figures read off the bag (custom). Needed for the keys below to take effect. The room is the slab: its length and width, no height.","enum":["quick","custom"],"type":"string"},"concrete.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for an uneven base and spillage."},"concrete.step":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The step in cubic metres the supplier sells ready-mixed concrete in. Ready-mixed only; optional."},"concrete.supply":{"description":"Bags of dry mix, or ready-mixed concrete delivered by the cubic metre.","enum":["bags","mixed"],"type":"string"},"concrete.thickness":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Slab thickness in millimetres, decided for the job. BuildBatch suggests none."},"concrete.weight":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The weight of one bag in kilograms. Bags only."},"concrete.yield":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Cubic metres one bag makes, as printed on the bag. Bags only."},"
Changed the definition of "plan_room"
before
{"additionalProperties":false,"properties":{"board":{"description":"Whether the plasterboard uses labelled example figures (quick) or figures from the board and system specification (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"board.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Wall boards one bag of plasterboard adhesive fixes, from its instructions."},"board.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"board.finish":{"description":"How the boards will be finished.","enum":["skim","joint","unsure"],"type":"string"},"board.fixing":{"description":"How the boards will be fixed.","enum":["screws","adhesive","unsure"],"type":"string"},"board.layers":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"Whole layers from the complete system specification."},"board.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board length in metres."},"board.skim":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of finish plaster covers, from the bag."},"board.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board width in metres."},"carpet":{"description":"Whether the carpet uses the labelled example roll figures (quick) or figures from the carpet and shop (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"carpet.allowance":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The trimming allowance in metres, added once to each room measurement."},"carpet.direction":{"description":"Which way the pile or pattern must run. Not decided lets the planner show the smaller one-piece cut that fits.","enum":["auto","length","width"],"type":"string"},"carpet.step":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The step in metres in which the shop sells the cut length."},"carpet.underlay":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one chosen underlay roll or pack."},"carpet.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The fixed width of the carpet roll in metres."},"ceiling":{"description":"What the ceiling gets: paint, board or none.","enum":["paint","board","none"],"type":"string"},"ceilingpaint":{"description":"Whether the ceiling paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"ceilingpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the ceiling paint. Custom only."},"ceilingpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the ceiling paint. Custom only."},"ceilingpaint.examples":{"description":"Which of coats, coverage, extra and tins are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"ceilingpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the ceiling paint. Custom only."},"ceilingpaint.tins":{"description":"Tin sizes in litres, comma separated, for the ceiling paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"check":{"description":"Line ids, comma separated, to mark Check first before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"door":{"description":"One per door, the key repeated for more. A typical size by name (the names are in /ask.json) or width x height in the units. Add *2 for two the same.","items":{"description":"One per door, the key repeated for more. A typical size by name (the names are in /ask.json) or width x height in the units. Add *2 for two the same.","type":"string"},"maxItems":50,"type":"array"},"end":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"Written by the planner as the last pair of a list link: the number of pairs before it. Leave it out of a call."},"fitting":{"description":"How the floor is fitted. Default unsure. Used by flooring jobs.","enum":["click","glue","nail","unsure"],"type":"string"},"floor":{"description":"Whether the flooring uses the labelled example figures (quick) or figures read off the pack (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"floor.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of adhesive covers."},"floor.covering":{"description":"What the floor is. Default laminate.","enum":["laminate","engineered","vinylPlank","tile"],"type":"string"},"floor.examples":{"description":"Which of extra and packs are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"floor.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts. Custom only."},"floor.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of grout covers."},"floor.packs":{"description":"Metres squared in one pack or box, comma separated for several sizes. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"floor.underlay":{"description":"Whether underlay is needed.","enum":["need","have","not-needed","unsure"],"type":"string"},"floor.underlay.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"floor.underlay.roll":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one roll of underlay."},"ground":{"description":"Whether the floor is on the ground floor. Default unsure. Used by flooring jobs.","enum":["yes","no","unsure"],"type":"string"},"have":{"description":"Line ids, comma separated, to mark Already have before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"height":{"description":"Floor to ceiling, in the units. Needed when walls are painted, papered, tiled or boarded (paint-carpet too); not for flooring, carpet, loft insulation or skirting alone.","type":"string"},"job":{"description":"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.","enum":["paint","wallpaper","tiles","flooring","carpet","loft","both","paint-carpet","skirting","plasterboard"],"type":"string"},"length":{"description":"One side of the floor, in the units. A length may carry its own unit (360cm, 4200mm). Not needed when plan is given.","type":"string"},"lengths":{"description":"Whether the skirting and architrave lengths are the labelled examples (quick) or the lengths the shop sells (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"lengths.architrave":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the architrave is sold in, in metres."},"lengths.architrave.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"lengths.skirting":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the skirting is sold in, in metres."},"lengths.skirting.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"loft":{"description":"Whether the loft insulation uses labelled example figures (quick) or figures measured in the loft and read from the chosen roll (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"loft.depth":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Thickness of one new mineral-wool layer in millimetres, from the chosen roll."},"loft.existing":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Existing insulation depth in millimetres."},"loft.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts and fitting."},"loft.pack":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Square metres covered by one chosen roll or pack."},"loft.target":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Chosen target insulation depth in millimetres."},"name":{"description":"What the room is called. Do not send one: it is carried into the links the answer gives, and the person can add it there.","type":"string"},"need":{"description":"Line ids, comma separated, to mark Need before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"not-needed":{"description":"Line ids, comma separated, to mark Not needed before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"opening":{"description":"Any other opening to take off the walls (a garage door, an archway), as width x height or a name. The key may be repeated.","items":{"description":"Any other opening to take off the walls (a garage door, an archway), as width x height or a name. The key may be repeated.","type":"string"},"maxItems":50,"type":"array"},"paper":{"description":"Whether the wallpaper is the labelled example roll (quick) or read off the label (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"paper.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll length in metres."},"paper.match":{"description":"How the pattern lines up.","enum":["free","straight","half-drop"],"type":"string"},"paper.paste":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Rolls one packet of paste does."},"paper.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"paper.repeat":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Pattern repeat in centimetres. 0 or left out for none."},"paper.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll width in centimetres."},"plan":{"description":"A room that is not a rectangle: its corners in turn, in metres whatever units says, as x,y pairs separated by \";\". Replaces length and width. Up to 24 corners.","type":"string"},"subfloor":{"description":"What is under a new floor. Default unsure. Used by flooring jobs.","enum":["timber","concrete","existing","unsure"],"type":"string"},"surface":{"description":"What the painted surfaces are like now. Default sound, the planner's own default. Used by painting jobs.","enum":["sound","new-bare","stained","damp-mould","flaking-glossy","other"],"type":"string"},"trim":{"description":"New skirting, architrave or both, with any job. Default skirting for the skirting job, else none.","enum":["skirting","architrave","skirting,architrave","none"],"type":"string"},"units":{"description":"What length, width, height and the doors are measured in. Default m. In ft write 13ft9in, or 13 for whole feet.","enum":["m","cm","mm","ft"],"type":"string"},"v":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"The version of the format. 1. Left out, 1 is assumed and the answer says so.","enum":["1"]},"wallpaint":{"description":"Whether the wall paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"wallpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the wall paint. Custom only."},"wallpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the wall paint. Custom only."},"wallpaint.examples":{"description":"Which of coats, coverage, extra and tins are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"wallpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the wall paint. Custom only."},"wallpaint.tins":{"description":"Tin sizes in litres, comma separated, for the wall paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"walls":{"description":"What the walls get. The job sets it, so it is rarely needed: paint, wallpaper, tiles, board or none.","enum":["paint","wallpaper","tiles","board","none"],"type":"string"},"walltiles":{"description":"Whether the wall tiles are the labelled example box (quick) or read off the box (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"walltiles.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of adhesive covers."},"walltiles.box":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one box. Custom only."},"walltiles.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"walltiles.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of grout covers."},"walltiles.height":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres up the wall the tiles go. Left out: to the ceiling."},"walltiles.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"width":{"description":"The other side of the floor, in the units. Not needed when plan is given.","type":"string"},"window":{"description":"One per window, the key repeated for more. A typical size by name or width x height in the units. Add *2 for two the same.","items":{"description":"One per window, the key repeated for more. A typical size by name or width x height in the units. Add *2 for two the same.","type":"string"},"maxItems":50,"type":"array"}},"required":["job"],"type":"object"}Certificate recorded, valid to 2026-12-28
Authorization not required
Unknown → Live
First tool surface recorded: 2 tools (server version 1.0.0)
https://buildbatch.co.uk/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
before
{"additionalProperties":false,"properties":{"bath":{"description":"A bath or shower tray: a name (bath-1700, tray-900) or its length along the wall x its rim height x how far it comes into the room, in the units. The wall behind it comes off up to the rim, and its footprint off a floor being laid. The key may be repeated.","items":{"description":"A bath or shower tray: a name (bath-1700, tray-900) or its length along the wall x its rim height x how far it comes into the room, in the units. The wall behind it comes off up to the rim, and its footprint off a floor being laid. The key may be repeated.","type":"string"},"maxItems":50,"type":"array"},"board":{"description":"Whether the plasterboard uses labelled example figures (quick) or figures from the board and system specification (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"board.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Wall boards one bag of plasterboard adhesive fixes, from its instructions."},"board.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"board.finish":{"description":"How the boards will be finished.","enum":["skim","joint","unsure"],"type":"string"},"board.fixing":{"description":"How the boards will be fixed.","enum":["screws","adhesive","unsure"],"type":"string"},"board.layers":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"Whole layers from the complete system specification."},"board.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board length in metres."},"board.skim":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of finish plaster covers, from the bag."},"board.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board width in metres."},"carpet":{"description":"Whether the carpet uses the labelled example roll figures (quick) or figures from the carpet and shop (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"carpet.allowance":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The trimming allowance in metres, added once to each room measurement."},"carpet.covering":{"description":"What is laid from the roll: carpet (with underlay and gripper) or sheet vinyl (loose laid, taped or glued; no underlay). Sheet vinyl is sold in 2, 3 and 4 m widths; its quick example is a 3 m roll.","enum":["carpet","vinyl"],"type":"string"},"carpet.direction":{"description":"Which way the pile or pattern must run. Not decided lets the planner show the smaller one-piece cut that fits.","enum":["auto","length","width"],"type":"string"},"carpet.step":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The step in metres in which the shop sells the cut length."},"carpet.underlay":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one chosen underlay roll or pack."},"carpet.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The fixed width of the carpet roll in metres."},"ceiling":{"description":"What the ceiling gets: paint, board or none.","enum":["paint","board","none"],"type":"string"},"ceilingpaint":{"description":"Whether the ceiling paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"ceilingpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the ceiling paint. Custom only."},"ceilingpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the ceiling paint. Custom only."},"ceilingpaint.examples":{"description":"Which of coats, coverage, extra and tins are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"ceilingpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the ceiling paint. Custom only."},"ceilingpaint.tins":{"description":"Tin sizes in litres, comma separated, for the ceiling paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"check":{"description":"Line ids, comma separated, to mark Check first before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"concrete":{"description":"Whether the concrete slab uses labelled example figures (quick) or the thickness decided for the job and figures read off the bag (custom). Needed for the keys below to take effect. The room is the slab: its length and width, no height.","enum":["quick","custom"],"type":"string"},"concrete.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for an uneven base and spillage."},"concrete.step":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The step in cubic metres the supplier sells ready-mixed concrete in. Ready-mixed only; optional."},"concrete.supply":{"description":"Bags of dry mix, or ready-mixed concrete delivered by the cubic metre.","enum":["bags","mixed"],"type":"string"},"concrete.thickness":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Slab thickness in millimetres, decided for the job. BuildBatch suggests none."},"concrete.weight":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The weight of one bag in kilograms. Bags only."},"concrete.yield":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Cubic metres one bag makes, as printed on the bag. Bags only."},"door":{"description":"One per door, the value repeated for more. A typical size by name (int-762 is a standard internal door) or width x height in the units. *2 after it means two the same.","items":{"description":"One per door, the value repeated for more. A typical size by name (int-762 is a standard internal door) or width x height in the units. *2 after it means two the same.","type":"string"},"maxItems":50,"type":"array"},"end":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"Written by the planner as the last pair of a list link: the number of pairs before it. Leave it out of a call."},"fitting":{"description":"How the floor is fitted. Default unsure. Used by flooring jobs.","enum":["click","glue","nail","unsure"],"type":"string"},"floor":{"description":"Whether the flooring uses the labelled example figures (quick) or figures read off the pack (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"floor.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of adhesive covers."},"floor.covering":{"description":"What the floor is. Default laminate.","enum":["laminate","engineered","vinylPlank","tile"],"type":"string"},"floor.examples":{"description":"Which of extra and packs are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"floor.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts. Custom only."},"floor.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of grout covers."},"floor.packs":{"description":"Metres squared in one pack or box, comma separated for several sizes. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"floor.tileh":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: the other side of a tile, in millimetres (with floor.tilew)."},"floor.tilew":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: one side of a tile, in millimetres, for a count of tiles (with floor.tileh). Optional; the boxes are still counted by area."},"floor.underlay":{"description":"Whether underlay is needed.","enum":["need","have","not-needed","unsure"],"type":"string"},"floor.underlay.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"floor.underlay.roll":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one roll of underlay."},"ground":{"description":"Whether the floor is on the ground floor. Default unsure. Used by flooring jobs.","enum":["yes","no","unsure"],"type":"string"},"have":{"description":"Line ids, comma separated, to mark Already have before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"height":{"description":"Floor to ceiling, in the units. Needed when walls are painted, papered, tiled or boarded (paint-carpet too); not for flooring, carpet, loft insulation, concrete or skirting alone.","type":"string"},"job":{"description":"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.","enum":["paint","wallpaper","tiles","flooring","carpet","loft","both","paint-carpet","skirting","plasterboard","concrete"],"type":"string"},"length":{"description":"One side of the floor, in the units. A length may carry its own unit (360cm, 4200mm). Not needed when plan is given.","type":"string"},"lengths":{"description":"Whether the skirting and architrave lengths are the labelled examples (quick) or the lengths the shop sells (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"lengths.architrave":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the architrave is sold in, in metres."},"lengths.architrave.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"lengths.skirting":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the skirting is sold in, in metres."},"lengths.skirting.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"loft":{"description":"Whether the loft insulation uses labelled example figures (quick) or figures measured in the loft and read from the chosen roll (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"loft.depth":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Thickness of one new mineral-wool layer in millimetres, from the chosen roll."},"loft.existing":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Existing insulation depth in millimetres."},"loft.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts and fitting."},"loft.pack":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Square metres covered by one chosen roll or pack."},"loft.target":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Chosen target insulation depth in millimetres."},"name":{"description":"What the room is called. Optional. It is carried into the links the answer gives, where the person can also add it themselves.","type":"string"},"need":{"description":"Line ids, comma separated, to mark Need before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"not-needed":{"description":"Line ids, comma separated, to mark Not needed before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"opening":{"description":"Any other opening to take off the walls (a garage door, an archway), as width x height or a name. The key may be repeated.","items":{"description":"Any other opening to take off the walls (a garage door, an archway), as width x height or a name. The key may be repeated.","type":"string"},"maxItems":50,"type":"array"},"paper":{"description":"Whether the wallpaper is the labelled example roll (quick) or read off the label (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"paper.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll length in metres."},"paper.match":{"description":"How the pattern lines up.","enum":["free","straight","half-drop"],"type":"string"},"paper.paste":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Rolls one packet of paste does."},"paper.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"paper.repeat":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Pattern repeat in centimetres. 0 or left out for none."},"paper.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll width in centimetres."},"plan":{"description":"A room that is not a rectangle: its corners in turn, in metres whatever units says, as x,y pairs separated by \";\". Replaces length and width. Up to 24 corners.","type":"string"},"subfloor":{"description":"What is under a new floor. Default unsure. Used by flooring jobs.","enum":["timber","concrete","existing","unsure"],"type":"string"},"surface":{"description":"What the painted surfaces are like now. Default sound, the planner's own default. Used by painting jobs.","enum":["sound","new-bare","stained","damp-mould","flaking-glossy","other"],"type":"string"},"trim":{"description":"New skirting, architrave or both, with any job. Default skirting for the skirting job, else none.","enum":["skirting","architrave","skirting,architrave","none"],"type":"string"},"units":{"description":"What length, width, height and the doors are measured in. Default m. In ft write 13ft9in, or 13 for whole feet.","enum":["m","cm","mm","ft"],"type":"string"},"v":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"The version of the format. 1. Left out, 1 is assumed and the answer says so.","enum":["1"]},"wallpaint":{"description":"Whether the wall paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"wallpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the wall paint. Custom only."},"wallpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the wall paint. Custom only."},"wallpaint.examples":{"description":"Which of coats, coverage, extra and tins are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"wallpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the wall paint. Custom only."},"wallpaint.tins":{"description":"Tin sizes in litres, comma separated, for the wall paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"walls":{"description":"What the walls get. The job sets it, so it is rarely needed: paint, wallpaper, tiles, board or none.","enum":["paint","wallpaper","tiles","board","none"],"type":"string"},"walltiles":{"description":"Whether the wall tiles are the labelled example box (quick) or read off the box (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"walltiles.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of adhesive covers."},"walltiles.box":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one box. Custom only."},"walltiles.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"walltiles.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of grout covers."},"walltiles.height":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres up the wall the tiles go. Left out: to the ceiling."},"walltiles.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"walltiles.tileh":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The other side of a wall tile, in millimetres (with walltiles.tilew)."},"walltiles.tilew":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"One side of a wall tile, in millimetres, for a count of tiles (with walltiles.tileh). Optional; the boxes are still counted by area."},"width":{"description":"The other side of the floor, in the units. Not needed when plan is given.","type":"string"},"window":{"description":"One per window, the key repeated for more. A typical size by name or width x height in the units. Add *2 for two the same.","items":{"description":"One per window, the key repeated for more. A typical size by name or width x height in the units. Add *2 for two the same.","type":"string"},"maxItems":50,"type":"array"}},"required":["job"],"type":"object"}after
{"additionalProperties":false,"properties":{"bath":{"description":"A bath or shower tray: a name (bath-1700, tray-900) or its length along the wall x its rim height x how far it comes into the room, in the units. The wall behind it comes off up to the rim, and its footprint off a floor being laid. The key may be repeated.","items":{"type":"string"},"maxItems":50,"type":"array"},"board":{"description":"Whether the plasterboard uses labelled example figures (quick) or figures from the board and system specification (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"board.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Wall boards one bag of plasterboard adhesive fixes, from its instructions."},"board.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"board.finish":{"description":"How the boards will be finished.","enum":["skim","joint","unsure"],"type":"string"},"board.fixing":{"description":"How the boards will be fixed.","enum":["screws","adhesive","unsure"],"type":"string"},"board.layers":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"Whole layers from the complete system specification."},"board.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board length in metres."},"board.skim":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of finish plaster covers, from the bag."},"board.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board width in metres."},"carpet":{"description":"Whether the carpet uses the labelled example roll figures (quick) or figures from the carpet and shop (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"carpet.allowance":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The trimming allowance in metres, added once to each room measurement."},"carpet.covering":{"description":"What is laid from the roll: carpet (with underlay and gripper) or sheet vinyl (loose laid, taped or glued; no underlay). Sheet vinyl is sold in 2, 3 and 4 m widths; its quick example is a 3 m roll.","enum":["carpet","vinyl"],"type":"string"},"carpet.direction":{"description":"Which way the pile or pattern must run. Not decided lets the planner show the smaller one-piece cut that fits.","enum":["auto","length","width"],"type":"string"},"carpet.step":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The step in metres in which the shop sells the cut length."},"carpet.underlay":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one chosen underlay roll or pack."},"carpet.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The fixed width of the carpet roll in metres."},"ceiling":{"description":"What the ceiling gets: paint, board or none.","enum":["paint","board","none"],"type":"string"},"ceilingpaint":{"description":"Whether the ceiling paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"ceilingpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the ceiling paint. Custom only."},"ceilingpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the ceiling paint. Custom only."},"ceilingpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the ceiling paint. Custom only."},"ceilingpaint.tins":{"description":"Tin sizes in litres, comma separated, for the ceiling paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"check":{"description":"Line ids, comma separated, to mark Check first before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"concrete":{"description":"Whether the concrete slab uses labelled example figures (quick) or the thickness decided for the job and figures read off the bag (custom). Needed for the keys below to take effect. The room is the slab: its length and width, no height.","enum":["quick","custom"],"type":"string"},"concrete.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for an uneven base and spillage."},"concrete.step":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The step in cubic metres the supplier sells ready-mixed concrete in. Ready-mixed only; optional."},"concrete.supply":{"description":"Bags of dry mix, or ready-mixed concrete delivered by the cubic metre.","enum":["bags","mixed"],"type":"string"},"concrete.thickness":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Slab thickness in millimetres, decided for the job. BuildBatch suggests none."},"concrete.weight":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The weight of one bag in kilograms. Bags only."},"concrete.yield":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Cubic metres one bag makes, as printed on the bag. Bags only."},"detail":{"description":"How much to return. summary, the default: each item with its quantity and reason, what to check first and the list link. full: every line's working, pack breakdown and each shop's search link as well (20 KB or more).","enum":["summary","full"],"type":"string"},"door":{"description":"One per door, the value repeated for more. A typical size by name (int-762 is a standard internal door) or width x height in the units. *2 after it means two the same.","items":{"type":"string"},"maxItems":50,"type":"array"},"fitting":{"description":"How the floor is fitted. Default unsure. Used by flooring jobs.","enum":["click","glue","nail","unsure"],"type":"string"},"floor":{"description":"Whether the flooring uses the labelled example figures (quick) or figures read off the pack (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"floor.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of adhesive covers."},"floor.covering":{"description":"What the floor is. Default laminate.","enum":["laminate","engineered","vinylPlank","tile"],"type":"string"},"floor.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts. Custom only."},"floor.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of grout covers."},"floor.packs":{"description":"Metres squared in one pack or box, comma separated for several sizes. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"floor.tileh":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: the other side of a tile, in millimetres (with floor.tilew)."},"floor.tilew":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: one side of a tile, in millimetres, for a count of tiles (with floor.tileh). Optional; the boxes are still counted by area."},"floor.underlay":{"description":"Whether underlay is needed.","enum":["need","have","not-needed","unsure"],"type":"string"},"floor.underlay.roll":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one roll of underlay."},"ground":{"description":"Whether the floor is on the ground floor. Default unsure. Used by flooring jobs.","enum":["yes","no","unsure"],"type":"string"},"have":{"description":"Line ids, comma separated, to mark Already have before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"height":{"description":"Floor to ceiling, in the units. Needed when walls are painted, papered, tiled or boarded (paint-carpet too); not for flooring, carpet, loft insulation, concrete or skirting alone.","type":"string"},"job":{"description":"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.","enum":["paint","wallpaper","tiles","flooring","carpet","loft","both","paint-carpet","skirting","plasterboard","concrete"],"type":"string"},"length":{"description":"One side of the floor, in the units. A length may carry its own unit (360cm, 4200mm). Not needed when plan is given.","type":"string"},"lengths":{"description":"Whether the skirting and architrave lengths are the labelled examples (quick) or the lengths the shop sells (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"lengths.architrave":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the architrave is sold in, in metres."},"lengths.skirting":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the skirting is sold in, in metres."},"loft":{"description":"Whether the loft insulation uses labelled example figures (quick) or figures measured in the loft and read from the chosen roll (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"loft.depth":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Thickness of one new mineral-wool layer in millimetres, from the chosen roll."},"loft.existing":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Existing insulation depth in millimetres."},"loft.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts and fitting."},"loft.pack":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Square metres covered by one chosen roll or pack."},"loft.target":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Chosen target insulation depth in millimetres."},"name":{"description":"What the room is called. Optional. It is carried into the links the answer gives, where the person can also add it themselves.","type":"string"},"need":{"description":"Line ids, comma separated, to mark Need before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"not-needed":{"description":"Line ids, comma separated, to mark Not needed before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"opening":{"description":"Any other opening to take off the walls (a garage door, an archway), as width x height or a name. The key may be repeated.","items":{"type":"string"},"maxItems":50,"type":"array"},"paper":{"description":"Whether the wallpaper is the labelled example roll (quick) or read off the label (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"paper.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll length in metres."},"paper.match":{"description":"How the pattern lines up.","enum":["free","straight","half-drop"],"type":"string"},"paper.paste":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Rolls one packet of paste does."},"paper.repeat":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Pattern repeat in centimetres. 0 or left out for none."},"paper.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll width in centimetres."},"plan":{"description":"A room that is not a rectangle: its corners in turn, in metres whatever units says, as x,y pairs separated by \";\". Replaces length and width. Up to 24 corners.","type":"string"},"subfloor":{"description":"What is under a new floor. Default unsure. Used by flooring jobs.","enum":["timber","concrete","existing","unsure"],"type":"string"},"surface":{"description":"What the painted surfaces are like now. Default sound, the planner's own default. Used by painting jobs.","enum":["sound","new-bare","stained","damp-mould","flaking-glossy","other"],"type":"string"},"trim":{"description":"New skirting, architrave or both, with any job. Default skirting for the skirting job, else none.","enum":["skirting","architrave","skirting,architrave","none"],"type":"string"},"units":{"description":"What length, width, height and the doors are measured in. Default m. In ft write 13ft9in, or 13 for whole feet.","enum":["m","cm","mm","ft"],"type":"string"},"wallpaint":{"description":"Whether the wall paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"wallpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the wall paint. Custom only."},"wallpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the wall paint. Custom only."},"wallpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the wall paint. Custom only."},"wallpaint.tins":{"description":"Tin sizes in litres, comma separated, for the wall paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"walls":{"description":"What the walls get. The job sets it, so it is rarely needed: paint, wallpaper, tiles, board or none.","enum":["paint","wallpaper","tiles","board","none"],"type":"string"},"walltiles":{"description":"Whether the wall tiles are the labelled example box (quick) or read off the box (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"walltiles.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of adhesive covers."},"walltiles.box":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one box. Custom only."},"walltiles.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"walltiles.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of grout covers."},"walltiles.height":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres up the wall the tiles go. Left out: to the ceiling."},"walltiles.tileh":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The other side of a wall tile, in millimetres (with walltiles.tilew)."},"walltiles.tilew":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"One side of a wall tile, in millimetres, for a count of tiles (with walltiles.tileh). Optional; the boxes are still counted by area."},"width":{"description":"The other side of the floor, in the units. Not needed when plan is given.","type":"string"},"window":{"description":"One per window, the value repeated for more. A typical size by name (win-standard) or width x height in the units. *2 after it means two the same.","items":{"type":"string"},"maxItems":50,"type":"array"}},"required":["job"],"type":"object"}FindFinds BuildBatch's guides for a decorating or flooring question ⟨11 unchanged words⟩ , what to buy to lay laminate), and returns up to three with each guide's own short answers and itsaddress to cite. Foraddress.aItquantitydoesfornottheworkperson'soutownquantitiesroom,foruseaquick_room_list.room.
WorkWorks out the whole shopping list for one roomfrom the person's answers, with every option the plannerhas.has: exact door and window sizes, a product's own coverage and pack sizes, an L-shaped room, tiling part-way up a wall. Arguments are thesamenamed parametersasof /plan.json. A job is required. Repeated door, ⟨14 unchanged words⟩ and named in the answer. Returns a shortlist to show theshoppingperson;list; the structured content has every line, its ⟨6 unchanged words⟩
⟨795 unchanged words⟩ :{"description":"One per door, thekeyvalue repeated for more. A typical size by name (theint-762namesisareainstandard/ask.jsoninternal door) or width x height in the units.Add*2forafter it means two the same.","items":{"description":"One per door, thekeyvalue repeated for more. A typical size by name (theint-762namesisareainstandard/ask.jsoninternal door) or width x height in the units.Add*2forafter it means two the same.","type":"string"}, ⟨673 unchanged words⟩ {"description":"What the room is called.Do not send one:Optional.itIt is carried into the links the answer gives,andwhere the person can also add itthere.themselves.","type":"string"},"need":{ ⟨821 unchanged words⟩
HowWorks out how much paint, wallpaper, wall tiles, flooring, ⟨20 unchanged words⟩ , safety), in real UK pack sizes.GiveTakes the job and either the room's length, width and height, or a typical room by namewhenfortheapersonroom that has notmeasured.beenReturnsmeasured;atheshortanswerlistthentostatesshowthat thepersonmeasurements are typical. Returns a short shopping list and a link to the whole list.Use plan_roomItfordoesanythingnotfiner:take exact door sizes, a product's own coverage or pack size,tilestiling part-way up a wall,or an L-shaped room.
⟨10 unchanged words⟩ taken off the wall area at a typicalsize; plan_room takes exact sizes.size.","maximum":20,"minimum":0,"type ⟨3 unchanged words⟩ ":"Floor to ceiling, in the units.PaintNeeded for paint, wallpaper and walltiles need it; ask the person, and if they do not know,tiles. 2.4 m is a typical(sayUKso).ceiling height.","exclusiveMinimum":0,"type":"number"} ⟨131 unchanged words⟩ × 2.4 m), each 2.4 m high.Say toThetheanswerpersonstates thatittheseisare typical,not theirmeasurements.
Plan one room with BuildBatch (every option)Work out the whole shopping list for one room from the person'sanswers.answers, with every option the planner has. Arguments are the same named parameters as /plan.json. ⟨17 unchanged words⟩ arguments are ignored and named in the answer. Returns a short list to show the person; the structured content has every line, its working and each shop's search link.
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Plan one room with BuildBatch (every option)"}
Find a BuildBatch guide — Find BuildBatch's guides for a decorating or flooring question (how long between coats, how many tiles in a square metre, what to buy to lay laminate), with each guide's own short answers and its address to cite. For a quantity for the person's own room, use quick_room_list.
What to buy for a room (quick) — How much paint, wallpaper, wall tiles, flooring, carpet, skirting, loft insulation, plasterboard or concrete one room needs, and everything else to buy for the job (preparation, tools, safety), in real UK pack sizes. Give the job and either the room's length, width and height, or a typical room by name when the person has not measured. Returns a short list to show the person and a link to the whole list. Use plan_room for anything finer: exact door sizes, a product's own coverage or pack size, tiles part-way up a wall, an L-shaped room.
after
{"additionalProperties":false,"properties":{"bath":{"description":"A bath or shower tray: a name (bath-1700, tray-900) or its length along the wall x its rim height x how far it comes into the room, in the units. The wall behind it comes off up to the rim, and its footprint off a floor being laid. The key may be repeated.","items":{"description":"A bath or shower tray: a name (bath-1700, tray-900) or its length along the wall x its rim height x how far it comes into the room, in the units. The wall behind it comes off up to the rim, and its footprint off a floor being laid. The key may be repeated.","type":"string"},"maxItems":50,"type":"array"},"board":{"description":"Whether the plasterboard uses labelled example figures (quick) or figures from the board and system specification (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"board.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Wall boards one bag of plasterboard adhesive fixes, from its instructions."},"board.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"board.finish":{"description":"How the boards will be finished.","enum":["skim","joint","unsure"],"type":"string"},"board.fixing":{"description":"How the boards will be fixed.","enum":["screws","adhesive","unsure"],"type":"string"},"board.layers":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"Whole layers from the complete system specification."},"board.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board length in metres."},"board.skim":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of finish plaster covers, from the bag."},"board.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Board width in metres."},"carpet":{"description":"Whether the carpet uses the labelled example roll figures (quick) or figures from the carpet and shop (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"carpet.allowance":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The trimming allowance in metres, added once to each room measurement."},"carpet.direction":{"description":"Which way the pile or pattern must run. Not decided lets the planner show the smaller one-piece cut that fits.","enum":["auto","length","width"],"type":"string"},"carpet.step":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The step in metres in which the shop sells the cut length."},"carpet.underlay":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one chosen underlay roll or pack."},"carpet.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The fixed width of the carpet roll in metres."},"ceiling":{"description":"What the ceiling gets: paint, board or none.","enum":["paint","board","none"],"type":"string"},"ceilingpaint":{"description":"Whether the ceiling paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"ceilingpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the ceiling paint. Custom only."},"ceilingpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the ceiling paint. Custom only."},"ceilingpaint.examples":{"description":"Which of coats, coverage, extra and tins are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"ceilingpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the ceiling paint. Custom only."},"ceilingpaint.tins":{"description":"Tin sizes in litres, comma separated, for the ceiling paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"check":{"description":"Line ids, comma separated, to mark Check first before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"door":{"description":"One per door, the key repeated for more. A typical size by name (the names are in /ask.json) or width x height in the units. Add *2 for two the same.","items":{"description":"One per door, the key repeated for more. A typical size by name (the names are in /ask.json) or width x height in the units. Add *2 for two the same.","type":"string"},"maxItems":50,"type":"array"},"end":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"Written by the planner as the last pair of a list link: the number of pairs before it. Leave it out of a call."},"fitting":{"description":"How the floor is fitted. Default unsure. Used by flooring jobs.","enum":["click","glue","nail","unsure"],"type":"string"},"floor":{"description":"Whether the flooring uses the labelled example figures (quick) or figures read off the pack (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"floor.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of adhesive covers."},"floor.covering":{"description":"What the floor is. Default laminate.","enum":["laminate","engineered","vinylPlank","tile"],"type":"string"},"floor.examples":{"description":"Which of extra and packs are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"floor.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts. Custom only."},"floor.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: metres squared one bag of grout covers."},"floor.packs":{"description":"Metres squared in one pack or box, comma separated for several sizes. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"floor.tileh":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: the other side of a tile, in millimetres (with floor.tilew)."},"floor.tilew":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Floor tiles: one side of a tile, in millimetres, for a count of tiles (with floor.tileh). Optional; the boxes are still counted by area."},"floor.underlay":{"description":"Whether underlay is needed.","enum":["need","have","not-needed","unsure"],"type":"string"},"floor.underlay.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"floor.underlay.roll":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one roll of underlay."},"ground":{"description":"Whether the floor is on the ground floor. Default unsure. Used by flooring jobs.","enum":["yes","no","unsure"],"type":"string"},"have":{"description":"Line ids, comma separated, to mark Already have before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"height":{"description":"Floor to ceiling, in the units. Needed when walls are painted, papered, tiled or boarded (paint-carpet too); not for flooring, carpet, loft insulation or skirting alone.","type":"string"},"job":{"description":"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.","enum":["paint","wallpaper","tiles","flooring","carpet","loft","both","paint-carpet","skirting","plasterboard"],"type":"string"},"length":{"description":"One side of the floor, in the units. A length may carry its own unit (360cm, 4200mm). Not needed when plan is given.","type":"string"},"lengths":{"description":"Whether the skirting and architrave lengths are the labelled examples (quick) or the lengths the shop sells (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"lengths.architrave":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the architrave is sold in, in metres."},"lengths.architrave.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"lengths.skirting":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Length the skirting is sold in, in metres."},"lengths.skirting.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"loft":{"description":"Whether the loft insulation uses labelled example figures (quick) or figures measured in the loft and read from the chosen roll (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"loft.depth":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Thickness of one new mineral-wool layer in millimetres, from the chosen roll."},"loft.existing":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Existing insulation depth in millimetres."},"loft.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts and fitting."},"loft.pack":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Square metres covered by one chosen roll or pack."},"loft.target":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Chosen target insulation depth in millimetres."},"name":{"description":"What the room is called. Do not send one: it is carried into the links the answer gives, and the person can add it there.","type":"string"},"need":{"description":"Line ids, comma separated, to mark Need before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"not-needed":{"description":"Line ids, comma separated, to mark Not needed before the list is made. The ids are in the answer's lines. Rarely needed.","type":"string"},"opening":{"description":"Any other opening to take off the walls (a garage door, an archway), as width x height or a name. The key may be repeated.","items":{"description":"Any other opening to take off the walls (a garage door, an archway), as width x height or a name. The key may be repeated.","type":"string"},"maxItems":50,"type":"array"},"paper":{"description":"Whether the wallpaper is the labelled example roll (quick) or read off the label (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"paper.length":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll length in metres."},"paper.match":{"description":"How the pattern lines up.","enum":["free","straight","half-drop"],"type":"string"},"paper.paste":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Rolls one packet of paste does."},"paper.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"paper.repeat":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Pattern repeat in centimetres. 0 or left out for none."},"paper.width":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Roll width in centimetres."},"plan":{"description":"A room that is not a rectangle: its corners in turn, in metres whatever units says, as x,y pairs separated by \";\". Replaces length and width. Up to 24 corners.","type":"string"},"subfloor":{"description":"What is under a new floor. Default unsure. Used by flooring jobs.","enum":["timber","concrete","existing","unsure"],"type":"string"},"surface":{"description":"What the painted surfaces are like now. Default sound, the planner's own default. Used by painting jobs.","enum":["sound","new-bare","stained","damp-mould","flaking-glossy","other"],"type":"string"},"trim":{"description":"New skirting, architrave or both, with any job. Default skirting for the skirting job, else none.","enum":["skirting","architrave","skirting,architrave","none"],"type":"string"},"units":{"description":"What length, width, height and the doors are measured in. Default m. In ft write 13ft9in, or 13 for whole feet.","enum":["m","cm","mm","ft"],"type":"string"},"v":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"The version of the format. 1. Left out, 1 is assumed and the answer says so.","enum":["1"]},"wallpaint":{"description":"Whether the wall paint uses the labelled example figures (quick) or figures read off the tin (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"wallpaint.coats":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Coats on the tin, for the wall paint. Custom only."},"wallpaint.coverage":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared covered by one litre in one coat, from the tin, for the wall paint. Custom only."},"wallpaint.examples":{"description":"Which of coats, coverage, extra and tins are still the labelled example figures. Leave it out unless the planner wrote it.","type":"string"},"wallpaint.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for waste and touch-ups, for the wall paint. Custom only."},"wallpaint.tins":{"description":"Tin sizes in litres, comma separated, for the wall paint. A size may carry a price after \"@\": the price is accepted and ignored.","type":"string"},"walls":{"description":"What the walls get. The job sets it, so it is rarely needed: paint, wallpaper, tiles, board or none.","enum":["paint","wallpaper","tiles","board","none"],"type":"string"},"walltiles":{"description":"Whether the wall tiles are the labelled example box (quick) or read off the box (custom). Needed for the keys below to take effect.","enum":["quick","custom"],"type":"string"},"walltiles.adhesive":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of adhesive covers."},"walltiles.box":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared in one box. Custom only."},"walltiles.extra":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Percent to add for cuts."},"walltiles.grout":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres squared one bag of grout covers."},"walltiles.height":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Metres up the wall the tiles go. Left out: to the ceiling."},"walltiles.price":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Accepted and ignored: this interface uses no prices."},"walltiles.tileh":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"The other side of a wall tile, in millimetres (with walltiles.tilew)."},"walltiles.tilew":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"One side of a wall tile, in millimetres, for a count of tiles (with walltiles.tileh). Optional; the boxes are still counted by area."},"width":{"description":"The other side of the floor, in the units. Not needed when plan is given.","type":"string"},"window":{"description":"One per window, the key repeated for more. A typical size by name or width x height in the units. Add *2 for two the same.","items":{"description":"One per window, the key repeated for more. A typical size by name or width x height in the units. Add *2 for two the same.","type":"string"},"maxItems":50,"type":"array"}},"required":["job"],"type":"object"}