Skip to content

Craft Quantities: construction material calculators

by craftquantities.com · remote · no sign-in to list tools · v1.4.0 · published by com.craftquantities

Construction quantities from cited calculators, takeoffs, a planner and house drawings. No prices.

Final · 3Changes · 25

38 tools: 3 do something that can't be undone, 25 change things and 10 only read.

Scanned Oct 21, 2026

16 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http engine https://api.craftquantities.com/mcp

Findings

Matches of fixed checks, with the text they matched.

16 warn
  • The server marks "convert_units" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_units" says "convert": a word for a change.

    What this check looks for
  • The server marks "open_in_site_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_in_site_link" says "open": a word for a change.

    What this check looks for
  • The server marks "run_takeoff" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_takeoff" says "run": a word for a change.

    What this check looks for
  • The server marks "run_example" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_example" says "run": a word for a change.

    What this check looks for
  • The server marks "create_project_file_from_calculations" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_calculations" says "create": a word for a change.

    What this check looks for
  • The server marks "create_project_file_from_takeoffs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_takeoffs" says "create": a word for a change.

    What this check looks for
Show 10 more findings
  • The server marks "create_project_file_from_house" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_house" says "create": a word for a change.

    What this check looks for
  • The server marks "create_project_file_from_plan" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_plan" says "create": a word for a change.

    What this check looks for
  • The server marks "create_project_file_from_drawing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_drawing" says "create": a word for a change.

    What this check looks for
  • The server marks "create_drawing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_drawing" says "create": a word for a change.

    What this check looks for
  • The server marks "import_quote" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "import_quote" says "import": a word for a change.

    What this check looks for
  • The server marks "translate_term" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The server marks "create_supplier_quote_request" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_supplier_quote_request" says "create": a word for a change.

    What this check looks for
  • The server marks "measure_sketch" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.reference.dimension.to): what it sends cannot be taken back.

    What this check looks for
  • The server marks "calculate_batch" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

    What this check looks for
  • The server marks "update_project" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "update_project" says "update": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

38 tools

Can't be undone 3Claude Code: ask
  • convert_unitsConverts one value from one unit to another, for example 2 m³ to cubic yards, with the exact factor the site's calculators apply, and returns the converted value and the factor.1 finding

    Why it is in this group

    • The name "convert_units" says "convert": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "convert_units" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_units" says "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Converts one value from one unit to another, for example 2 m³ to cubic yards, with the exact factor the site's calculators apply, and returns the converted value and the factor.

    Annotations the server declares

    • title: Convert a construction unit
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • measure_sketchMeasures areas, perimeters and lengths from points read off a floor plan, sketch or photo (pixel coordinates) and one known reference (a figured dimension, an ID-1 card or an A4 or…1 finding

    Why it is in this group

    • The input addresses people (input.reference.dimension.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "measure_sketch" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.reference.dimension.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Measures areas, perimeters and lengths from points read off a floor plan, sketch or photo (pixel coordinates) and one known reference (a figured dimension, an ID-1 card or an A4 or Letter sheet): scaled figures in metric and US units with an uncertainty band, closure and crossing checks, and a canvas link. It receives no image.

    Annotations the server declares

    • title: Measure a plan, sketch or photo from its points
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • translate_termSays one building-trade word in US, Canadian, UK and Australian usage, such as plasterboard (drywall in the US) or skirting (baseboard): each market's word, how close each is, fals…1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "translate_term" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Says one building-trade word in US, Canadian, UK and Australian usage, such as plasterboard (drywall in the US) or skirting (baseboard): each market's word, how close each is, false-friend warnings, unit traps such as US and imperial gallons or short and metric tons with their conversions, and the market's document family. Brand names, plurals and misspellings match too.

    Annotations the server declares

    • title: Translate or match a trade word between markets
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 25Claude Code: ask
  • calculateComputes the result of one calculator, identified by its slug, from the input values given: the amount of material a job needs, such as the bags of concrete for a slab or the sheet…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Computes the result of one calculator, identified by its slug, from the input values given: the amount of material a job needs, such as the bags of concrete for a slab or the sheets of drywall for a room, counted in bags, sheets, studs, tiles, litres, gallons, cubic yards or m³. Returns it in metric and US units with the inputs used, sources, a citation and the page link. No prices.

    Annotations the server declares

    • title: Calculate a material quantity (how much, how many)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • calculate_batchRuns up to 25 construction calculator calculations in one request, each a calculator slug or permanent id with its own input values, and returns each run's full answer in order (me…1 finding

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "calculate_batch" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Runs up to 25 construction calculator calculations in one request, each a calculator slug or permanent id with its own input values, and returns each run's full answer in order (metric and US units, inputs used, sources, citation, page link) or that run's refusal; one refusal leaves the rest answered. No prices.

    Annotations the server declares

    • title: Run several calculators in one request
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_quoteIs a builder's quote right on quantities?No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Is a builder's quote right on quantities? Reads a contractor's quote (pasted text) against the reader's own job and returns each quoted quantity against the range the job's calculators give, the lines it leaves out or adds, and the questions to ask. Money is removed and not judged; a difference is a question, not a verdict.

    Annotations the server declares

    • title: Check a builder's or contractor's quote
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • classify_itemsGroups a materials list, bill of materials, takeoff, plan or project (lines, calculator slugs or a project state token) by CSI MasterFormat 2018 division, by the site's own keyword…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Groups a materials list, bill of materials, takeoff, plan or project (lines, calculator slugs or a project state token) by CSI MasterFormat 2018 division, by the site's own keyword rule over each line's calculator or words. A suggested grouping, not a specification; no Uniclass or NRM grouping is given. No prices.

    Annotations the server declares

    • title: Group a materials list by MasterFormat division
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_drawingDraws one plan on the Construction Canvas from the shapes, rooms laid out by adjacency on a grid, house figures, drawing commands, canvas document or template given, and returns it…1 finding

    Why it is in this group

    • The name "create_drawing" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_drawing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_drawing" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Draws one plan on the Construction Canvas from the shapes, rooms laid out by adjacency on a grid, house figures, drawing commands, canvas document or template given, and returns its materials list, a plan of each level, labour hours, a link that opens the drawing on the canvas, and a file. It does not size structure.

    Annotations the server declares

    • title: Draw a plan and list its materials
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_project_file_from_calculationsCreates one My Project backup file from a list of calculator lines (each a calculator slug and its input values).1 finding

    Why it is in this group

    • The name "create_project_file_from_calculations" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_project_file_from_calculations" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_calculations" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Creates one My Project backup file from a list of calculator lines (each a calculator slug and its input values). Each line is computed as the site's page adds it; the reader restores the file on craftquantities.com as a new project. Nothing is stored or sent; no prices.

    Annotations the server declares

    • title: Create a My Project file from calculations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_project_file_from_drawingCreates one My Project backup file from a Construction Canvas drawing: its lines, and the drawing itself, which the site's canvas reopens.1 finding

    Why it is in this group

    • The name "create_project_file_from_drawing" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_project_file_from_drawing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_drawing" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Creates one My Project backup file from a Construction Canvas drawing: its lines, and the drawing itself, which the site's canvas reopens. The reader restores the file on craftquantities.com as a new project. Nothing is stored or sent; no prices.

    Annotations the server declares

    • title: Create a My Project file from a drawing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_project_file_from_houseCreates one My Project backup file from a House Estimator form: the house's lines, and its drawing, which the site's canvas reopens.1 finding

    Why it is in this group

    • The name "create_project_file_from_house" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_project_file_from_house" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_house" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Creates one My Project backup file from a House Estimator form: the house's lines, and its drawing, which the site's canvas reopens. The reader restores the file on craftquantities.com as a new project. Nothing is stored or sent; no prices.

    Annotations the server declares

    • title: Create a My Project file from a house
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_project_file_from_planCreates one My Project backup file from a room plan: one planned space, or several spaces and a roof.1 finding

    Why it is in this group

    • The name "create_project_file_from_plan" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_project_file_from_plan" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_plan" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Creates one My Project backup file from a room plan: one planned space, or several spaces and a roof. Its lines and its plan are saved as the site's planner saves them; the reader restores the file on craftquantities.com as a new project. Nothing is stored or sent; no prices.

    Annotations the server declares

    • title: Create a My Project file from a plan
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_project_file_from_takeoffsCreates one My Project backup file from a list of whole-job takeoffs (each a takeoff id and its measurements).1 finding

    Why it is in this group

    • The name "create_project_file_from_takeoffs" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_project_file_from_takeoffs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project_file_from_takeoffs" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Creates one My Project backup file from a list of whole-job takeoffs (each a takeoff id and its measurements). Each takeoff's lines are worked as its page commits them; the reader restores the file on craftquantities.com as a new project. Nothing is stored or sent; no prices.

    Annotations the server declares

    • title: Create a My Project file from takeoffs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_supplier_quote_requestCreates a request for quote from a materials list or bill of materials (the lines of a takeoff, house, plan or calculation, or the reader's own): Markdown to paste, a CSV, the site…1 finding

    Why it is in this group

    • The name "create_supplier_quote_request" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_supplier_quote_request" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_supplier_quote_request" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Creates a request for quote from a materials list or bill of materials (the lines of a takeoff, house, plan or calculation, or the reader's own): Markdown to paste, a CSV, the site's link a merchant opens to price it, and a My Project file. It carries no price and sends nothing to anyone.

    Annotations the server declares

    • title: Create a request for quote to suppliers
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • diagnose_symptomMatches one building defect described in plain words, such as a crack, a damp patch, a water leak or a tripping breaker, to the site's diagnosis pages, and returns the candidate ca…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Matches one building defect described in plain words, such as a crack, a damp patch, a water leak or a tripping breaker, to the site's diagnosis pages, and returns the candidate causes, what tells them apart, the checks in order and when to call a professional; ambiguous words return candidates. It does not say which cause it is.

    Annotations the server declares

    • title: Diagnose a building defect (crack, damp, leak)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • estimate_houseEstimates the materials to build one rectangular house of one or two storeys from a few figures (footprint, walls, roof, openings): every quantity with what to order, assumptions, …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Estimates the materials to build one rectangular house of one or two storeys from a few figures (footprint, walls, roof, openings): every quantity with what to order, assumptions, plans of each storey and labour hours, as the site's House Estimator does. It counts; it does not design a structure. No prices.

    Annotations the server declares

    • title: Estimate the materials to build a house
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • export_drawingExports a Construction Canvas drawing (a template, shapes, a room layout, drawing commands, house figures or a canvas document) as DXF for CAD, with the site's CQ-* layers, and as …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Exports a Construction Canvas drawing (a template, shapes, a room layout, drawing commands, house figures or a canvas document) as DXF for CAD, with the site's CQ-* layers, and as SVG, one plan per level in millimetres, or as one openBIM IFC4 model with quantity sets, as the canvas's own download writes them; a file too large to return is rebuilt from the drawing's link.

    Annotations the server declares

    • title: Export a drawing as DXF, SVG or IFC (CAD and BIM files)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • import_quoteTurns a supplier's or builder's quote the reader has, prices and all, into a My Project file, as the site's Quote to Estimate does, and checks its own arithmetic.1 finding

    Why it is in this group

    • The name "import_quote" says "import": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "import_quote" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "import_quote" says "import": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Turns a supplier's or builder's quote the reader has, prices and all, into a My Project file, as the site's Quote to Estimate does, and checks its own arithmetic. The prices are the reader's figures from their document, not the site's.

    Annotations the server declares

    • title: Turn my quote into an estimate
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • layout_reinforcementLays out reinforcing bars in a rectangular slab or footing from the bar size, spacing and cover the engineer gives: bars each way, bar lengths, total length with lap, stock sticks,…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Lays out reinforcing bars in a rectangular slab or footing from the bar size, spacing and cover the engineer gives: bars each way, bar lengths, total length with lap, stock sticks, weight where the site's calculator carries the size, and the layout as SVG and DXF. A quantity layout, not a design: it does not size structure or check a code.

    Annotations the server declares

    • title: Rebar layout drawing and bar counts for a slab or footing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • optimise_cutsOptimises a cut list: pieces of given lengths cut from the stock lengths a merchant sells (timber, studs, joists, rafters, rebar, trim), or rectangles nested on sheets (plasterboar…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Optimises a cut list: pieces of given lengths cut from the stock lengths a merchant sells (timber, studs, joists, rafters, rebar, trim), or rectangles nested on sheets (plasterboard, drywall, plywood, OSB, tiles) in straight edge-to-edge cuts. Gives the stock or sheets to buy, a cutting plan per bar or sheet, the real waste and a lower bound. Quantities only: no prices, no structural design.

    Annotations the server declares

    • title: Optimise a cut list: stock lengths and sheet layouts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • plan_programmeBuilds a construction programme (build schedule, Gantt) from a project's labour hours: tasks by trade, stage and level in the usual order of work, each its hours over the crew and …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Builds a construction programme (build schedule, Gantt) from a project's labour hours: tasks by trade, stage and level in the usual order of work, each its hours over the crew and working day given, with totals, a CSV and, with a start date, an iCalendar file. Reads a project state token, a My Project file, takeoffs or a drawing. Weather, inspections and lead times are not modelled. No prices.

    Annotations the server declares

    • title: Build programme (construction schedule) from labour hours
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • plan_projectPlans several spaces together, with an optional roof over them, as one project in the site's room planner, and returns each space's rows, every line together, labour hours and the …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Plans several spaces together, with an optional roof over them, as one project in the site's room planner, and returns each space's rows, every line together, labour hours and the plan. Quantities only; it does not size structure.

    Annotations the server declares

    • title: Plan the materials for several rooms
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • plan_roomPlans one space, such as a room or a bathroom, from its size, openings and the finishes chosen, as the site's room planner does, and returns its materials list: each row with its q…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Plans one space, such as a room or a bathroom, from its size, openings and the finishes chosen, as the site's room planner does, and returns its materials list: each row with its quantity, what it still needs, what is not built and why, and labour hours. Quantities only; it does not size structure.

    Annotations the server declares

    • title: Plan the materials for one room or space
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • run_exampleRe-runs every pinned step of a worked construction estimate now, in both unit systems, and returns whether each still meets the published figure.1 finding

    Why it is in this group

    • The name "run_example" says "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "run_example" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_example" says "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Re-runs every pinned step of a worked construction estimate now, in both unit systems, and returns whether each still meets the published figure.

    Annotations the server declares

    • title: Re-check a worked example's figures
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • run_takeoffWorks one whole-job takeoff, identified by its id, from the measurements given: the materials list of a job such as a slab or a deck, each line from its own calculator, with what t…1 finding

    Why it is in this group

    • The name "run_takeoff" says "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "run_takeoff" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_takeoff" says "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Works one whole-job takeoff, identified by its id, from the measurements given: the materials list of a job such as a slab or a deck, each line from its own calculator, with what to order, waste allowances, metric and US units, labour hours (not a price), what is not counted, a citation and the page link. It does not size structure.

    Annotations the server declares

    • title: Materials list for a whole job (takeoff)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • solve_backwardsWorks out how far one amount of material goes, such as 40 bags of concrete or 24 gallons of paint: the area it covers and the size of slab, room, deck or wall that is, as the site'…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Works out how far one amount of material goes, such as 40 bags of concrete or 24 gallons of paint: the area it covers and the size of slab, room, deck or wall that is, as the site's Solve Backwards page works it, waste taken off. It does not size structure.

    Annotations the server declares

    • title: How far a material goes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_projectChanges a My Project project carried in a state token (cqp1.…, from a project file answer): add or remove a room or space, change a dimension, add or remove a takeoff or calculator…1 finding

    Why it is in this group

    • The name "update_project" says "update": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "update_project" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "update_project" says "update": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Changes a My Project project carried in a state token (cqp1.…, from a project file answer): add or remove a room or space, change a dimension, add or remove a takeoff or calculator line, change a roof pitch, rename. Rebuilds every line and returns the new token, a short diff, the totals and a site link. The token is compressed, not encrypted; nothing is stored. No prices.

    Annotations the server declares

    • title: Change a project held in a state token
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 10Claude Code: allow
  • fetchReturns the full text of one Craft Quantities page, identified by its id: what the page works out, its inputs or measurements with units and opening values, and its sources.No findings

    Why it is in this group

    • The name "fetch" says "fetch": a word for reading.
    Description, as the server wrote it
    Returns the full text of one Craft Quantities page, identified by its id: what the page works out, its inputs or measurements with units and opening values, and its sources.

    Annotations the server declares

    • title: Read one page as text
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_benchmarkReturns items of the Construction Quantities Benchmark, a CC BY 4.0 dataset of construction quantity questions built from the site's calculator test vectors: each with its inputs a…No findings

    Why it is in this group

    • The name "get_benchmark" says "get": a word for reading.
    Description, as the server wrote it
    Returns items of the Construction Quantities Benchmark, a CC BY 4.0 dataset of construction quantity questions built from the site's calculator test vectors: each with its inputs and a prompt in metric and US units, the expected answer in each system with its tolerance, and the worked steps. A page of calculators at a time or one calculator's items, with the download link and how to cite it.

    Annotations the server declares

    • title: Get the Construction Quantities Benchmark
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_calculatorReturns the input fields of one calculator, identified by its slug: each field's id, label, accepted units, range and default value in metric and US units, with the calculator's ve…No findings

    Why it is in this group

    • The name "get_calculator" says "get": a word for reading.
    Description, as the server wrote it
    Returns the input fields of one calculator, identified by its slug: each field's id, label, accepted units, range and default value in metric and US units, with the calculator's version, page and citation. It computes nothing.

    Annotations the server declares

    • title: Get one calculator's input fields
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_exampleReturns one worked construction estimate from the site, identified by its slug: the measurements, the steps in order with the calculator each uses, the figure each step pins and th…No findings

    Why it is in this group

    • The name "get_example" says "get": a word for reading.
    Description, as the server wrote it
    Returns one worked construction estimate from the site, identified by its slug: the measurements, the steps in order with the calculator each uses, the figure each step pins and the waste chosen.

    Annotations the server declares

    • title: Get one worked example
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_plannerReturns the room planner's fields for one kind of space: its figures, surfaces and finish ids, scope questions and rows, with their ids.No findings

    Why it is in this group

    • The name "get_planner" says "get": a word for reading.
    Description, as the server wrote it
    Returns the room planner's fields for one kind of space: its figures, surfaces and finish ids, scope questions and rows, with their ids.

    Annotations the server declares

    • title: Get the planner's fields for one kind of space
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_sourcesWhere does a figure come from, and how is it cited?No findings

    Why it is in this group

    • The name "get_sources" says "get": a word for reading.
    Description, as the server wrote it
    Where does a figure come from, and how is it cited? Returns a calculator's sources as it cites them, the codes and standards they name, the site's standards pages, and a citation in plain, APA, Harvard and BibTeX. It adds no source the calculator does not cite.

    Annotations the server declares

    • title: Sources and citation for a calculation
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_takeoffReturns the measurements one whole-job takeoff needs, identified by its id: each measurement's id, unit and opening figure, its build-up choices, the calculators it runs and what i…No findings

    Why it is in this group

    • The name "get_takeoff" says "get": a word for reading.
    Description, as the server wrote it
    Returns the measurements one whole-job takeoff needs, identified by its id: each measurement's id, unit and opening figure, its build-up choices, the calculators it runs and what it leaves out.

    Annotations the server declares

    • title: Get one takeoff's measurements
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • market_documentsFinds which family of building codes or standards governs one kind of work in one market (US, Canada, UK or Australia, or a country mapped to one), who publishes it and the site's …No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Finds which family of building codes or standards governs one kind of work in one market (US, Canada, UK or Australia, or a country mapped to one), who publishes it and the site's standards page. It does not say which edition is in force: adoption is local, and the answer names who decides.

    Annotations the server declares

    • title: Find the building code for a kind of work
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • resolve_idResolves a permanent Craft Quantities id (such as cq-c0412), a current or earlier slug, or a craftquantities.com address to the page as it is today: its kind, current slug, slug hi…No findings

    Why it is in this group

    • The name "resolve_id" says "resolve": a word for reading.
    Description, as the server wrote it
    Resolves a permanent Craft Quantities id (such as cq-c0412), a current or earlier slug, or a craftquantities.com address to the page as it is today: its kind, current slug, slug history, page link and permanent /id/ link. Ids are assigned once and kept when a page is renamed or moved; a removed page names its replacement.

    Annotations the server declares

    • title: Find a page by its permanent id or old link
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.4.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http engine https://api.craftquantities.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__engine__search",
      "mcp__engine__fetch",
      "mcp__engine__get_calculator",
      "mcp__engine__get_sources",
      "mcp__engine__get_takeoff",
      "mcp__engine__get_example",
      "mcp__engine__get_planner",
      "mcp__engine__market_documents",
      "mcp__engine__get_benchmark",
      "mcp__engine__resolve_id"
    ],
    "ask": [
      "mcp__engine__calculate",
      "mcp__engine__convert_units",
      "mcp__engine__open_in_site_link",
      "mcp__engine__run_takeoff",
      "mcp__engine__run_example",
      "mcp__engine__create_project_file_from_calculations",
      "mcp__engine__create_project_file_from_takeoffs",
      "mcp__engine__create_project_file_from_house",
      "mcp__engine__create_project_file_from_plan",
      "mcp__engine__create_project_file_from_drawing",
      "mcp__engine__check_quote",
      "mcp__engine__estimate_house",
      "mcp__engine__plan_room",
      "mcp__engine__plan_project",
      "mcp__engine__create_drawing",
      "mcp__engine__import_quote",
      "mcp__engine__diagnose_symptom",
      "mcp__engine__solve_backwards",
      "mcp__engine__translate_term",
      "mcp__engine__create_supplier_quote_request",
      "mcp__engine__measure_sketch",
      "mcp__engine__export_drawing",
      "mcp__engine__layout_reinforcement",
      "mcp__engine__calculate_batch",
      "mcp__engine__update_project",
      "mcp__engine__classify_items",
      "mcp__engine__plan_programme",
      "mcp__engine__optimise_cuts"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as engine. Review it before you use it.