Skip to main content
Glama

Proper Job Building Cost Calculator

Calculate building work

calculate_building_work
Read-onlyIdempotent

Use this when a user asks the cost of building, extending or renovating a home, remodelling a kitchen/bathroom, refining a budget or costing drawings, even without naming Proper Job. Computes repeatable local-currency estimates using versioned country-specific construction benchmarks, scope and allowance rules, checked measurement conversions and source-cited drawing quantities. Returns an interactive budget card, tax basis, exclusions and a refinementQuestion. After the card, ask that question in one short sentence when present; keep unknown details optional and do not repeat the country checklist. Supported work: GB, US, AU, NZ, IE, DE, FR, ES, CA, JP, IN; exact scope limits are in the schema and market-coverage resource. Do not substitute UK rates or exchange-rate conversions. Read the drawing skill before host-only attachment analysis; send reconciled structured facts in one call. Detailed trade costing is GB-only; other countries still accept drawing quantities. Reuse unchanged results and use the returned price without inventing or narrowing it. Country, language and units are independent. Do not use for property valuations, land-price discovery, account/project lookup, purchases, issued quotes or legal/safety certification.

Input Schema

NameRequiredDescriptionDefault
landNoIN only. Optional separate plot and user-supplied INR purchase price/rate, upfront lease premium, yearly rent and fees. Land area never becomes building floor area. Unknown land prices stay unpriced without blocking the construction estimate. Official valuation is a reference, never treated as market purchase cost. No generic bigha/ground/marla conversion; ask for the local conversion. State rules/title/lease rights need local verification.
scopeNoOnly known project facts. All area fields share areaUnit. JP accepts tsubo (坪), tatami/jo/jou/畳/帖. Tsubo is 400/121 m2; tatami defaults to approximately 1.62 m2. Room labels such as LDK 12畳 are that room's area, not the whole apartment. Use dimensioned m2 where supplied. Physical replacement-mat counts are not floor areas. Prefer worksLevel over legacy finishBand/finishLevel.
stateNoUS two-letter state or DC code.
countryNoTwo-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has extension guides and matching Dublin project ranges; DE has rough new-home guides and separate unscaled manufacturer examples. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes, whole-home/akiya renovation and kitchen/bathroom work. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country.
jobTypeNoWork type supported by the selected country's catalog. Window replacement is FR/ES; air-to-water heat pump is FR only.
zipCodeNoOptional US five-digit ZIP code. Never send a street address.
currencyNoOptional currency check against a known market. No exchange or borrowed foreign rates. Unknown market currency does not enable pricing.
drawingsNoStructured analysis performed by the host on the user's attachments. No file URLs, file bytes, account IDs or extraction API calls are accepted.
languageNoCard and follow-up language from the conversation, e.g. fr-CA, es, de, it, pt, ja or hi. English fallback for unsupported languages. Never infer country, currency or units from language.
ukDetailsNoGB extensions only. Optional requested extras and work still to price, read from the user's brief. Existing kitchen/steel/access inputs keep their own allowance and must not be duplicated. Unknown items stay unpriced. No extra form steps.
usDetailsNoUS only, optional scope facts. Never ask the user to complete a form. Missing details widen the estimate. Kitchen/bathroom jobs cover one room; counts are for whole-home/addition/new-home scope.
localScopeNoAU/NZ/IE/DE only. Send confirmed facts; never copy provisional assumptions as user answers. AU uses separate project/custom and one/two-storey house anchors, plus counted extension fitout. NZ wet-area extensions count the first standard wet room once; additional declared rooms use local references. IE uses a fixed Dublin bucket only for matching scope; other extensions use a broader Irish build guide. DE has a broad new-home guide; named manufacturer examples are never scaled to the user's area.
regionCodeNoGB extensions: use a stated pricing-region code such as LONDON or NW when no outward postcode was supplied; never invent a postcode. AU new-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ national guides; AKL/CAN/QLDC/OTA have selected home anchors; Auckland extensions have their own source. IE: DUB retains a 25–35 m² rear-extension reference; other extension sizes/forms/regions use wider Irish builder guides. DE: a broad native-EUR new-house guide; an explicitly matching prefab bungalow can show a manufacturer example (mainland only). FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address.
worksLevelNoLevel of materials, finishes and detailing: Budget, Standard, Premium or Luxury. US/FR/ES/CA/JP/IN Luxury returns a wide rough starting range, not a ceiling; bespoke details need individual pricing. Other markets retain their published reference limits. This does not change the amount of work.
workDetailsNoOptional extra scope for supported overseas work: an occupied home, additional service relocation, lift/shared-area protection, an enlarged extension opening, excluded German painting/flooring, or physical new-home utility connections. ES also accepts access restrictions and whole-home structuralWork. Send only explicitly requested facts. Ordinary installation is already in the country baseline. Never apply these to UK work or copy assumptions into answers; omit extras already included. Missing answers never block a price.
displayUnitsNoPreferred quantity display, independent of pricing market/currency. All scope area fields use scope.areaUnit; drawing quantities each carry their own unit.
indiaDetailsNoIN only: optional known construction/site facts. Simple local-material hut, durable rural masonry and RCC home have distinct INR models. Rural never implies poor road access. State alone does not prove climate/hazard. Ordinary construction is counted once; only stated extra protection is added. Missing facts give a rough price. Rates/allowances are estimates, not safety certification or state cost schedules.
japanDetailsNoJP only: optional facts from the user/drawings about new homes, renovations and vacant homes (akiya). Existing age or timber construction never certifies earthquake safety. Ordinary new-build seismic/energy provisions are included once; explicit retrofit/enhancement is separate. Leasehold land premiums, ground rent and consent costs stay outside building work. Unknown facts still return a rough price.
postcodeAreaNoGB outward postcode only, for example BS3. Never send a full address.
projectDetailsNoFR/CA: optional declared work extent, access, climate, ground, construction and upgrade facts. AlreadyIncluded flags suppress the corresponding allowance only when the supplied scope already contains that work. Ordinary local code/climate provisions are already in the base. Never infer permafrost from country or remote access from rural location. ES accepts workExtent only. Missing details widen the price; never require a questionnaire.

Output Schema

NameRequiredDescriptionDefault
dataNo
errorNo
statusYes
schemaVersionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / regionCode / description
      Previous value: -"AU new-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ national guides; AKL/CAN/QLDC/OTA have selected home anchors; Auckland extensions have their own source. IE: DUB retains a 25–35 m² rear-extension reference; other extension sizes/forms/regions use wider Irish builder guides. DE: a broad native-EUR new-house guide; an explicitly matching prefab bungalow can show a manufacturer example (mainland only). FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address."New value: +"GB extensions: use a stated pricing-region code such as LONDON or NW when no outward postcode was supplied; never invent a postcode. AU new-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ national guides; AKL/CAN/QLDC/OTA have selected home anchors; Auckland extensions have their own source. IE: DUB retains a 25–35 m² rear-extension reference; other extension sizes/forms/regions use wider Irish builder guides. DE: a broad native-EUR new-house guide; an explicitly matching prefab bungalow can show a manufacturer example (mainland only). FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address."
    • addedInput schema / properties / ukDetails
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "GB extensions only. Optional requested extras and work still to price, read from the user's brief. Existing kitchen/steel/access inputs keep their own allowance and must not be duplicated. Unknown items stay unpriced. No extra form steps.",
      +  "properties": {
      +    "extras": {
      +      "default": [],
      +      "description": "Only explicitly requested extension extras. Where a researched local construction benchmark already covers an item, it is included once without an extra charge. Otherwise existing provisional app allowances apply. Choose one glazing upgrade. UFH excludes the heat pump. Do not substitute whole-house heating, fencing or landscaping packages for a small requested item.",
      +      "items": {
      +        "enum": [
      +          "underfloor-heating",
      +          "glazing-upgrade",
      +          "level-access-sliders",
      +          "rooflights"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 8,
      +      "type": "array"
      +    },
      +    "rooflightCount": {
      +      "description": "Known rooflight count only. Do not guess; the local construction benchmark includes one standard unit.",
      +      "maximum": 8,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "unpricedWork": {
      +      "default": [],
      +      "description": "Requested or conditional work outside these allowances. Retain these items without inventing a price. Internal kitchen service connections do not establish a new utility-provider connection.",
      +      "items": {
      +        "enum": [
      +          "heat-pump",
      +          "air-conditioning",
      +          "drainage-alterations",
      +          "reclaimed-brickwork",
      +          "tree-removal",
      +          "external-tap",
      +          "patio",
      +          "side-paving",
      +          "side-gate",
      +          "outside-lighting-data",
      +          "asbestos-survey",
      +          "professional-fees",
      +          "leasehold-consent",
      +          "conservation-conditions",
      +          "utility-supply",
      +          "consumer-unit-check"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 20,
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed9 schema fields changed
    • addedInput schema / properties / jobType / anyOf
      Added value: +[
      +  {
      +    "description": "Residential project type supported by the selected country policy.",
      +    "enum": [
      +      "Combined project",
      +      "Rear extension",
      +      "Kitchen extension",
      +      "Side extension",
      +      "Wraparound extension",
      +      "Loft conversion",
      +      "Barn conversion",
      +      "Refurbishment",
      +      "Commercial office refurbishment",
      +      "New kitchen",
      +      "New bathroom",
      +      "Office / summerhouse",
      +      "Garage conversion",
      +      "Basement work / conversion",
      +      "Lower-ground floor refurbishment",
      +      "New build",
      +      "home_addition",
      +      "whole_home_remodel",
      +      "kitchen_remodel",
      +      "bathroom_remodel",
      +      "attic_conversion",
      +      "garage_conversion",
      +      "basement_remodel",
      +      "backyard_studio",
      +      "new_home_construction"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "enum": [
      +      "window_replacement",
      +      "heat_pump_installation"
      +    ],
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / jobType / description
      Previous value: -"Residential project type supported by the selected country policy."New value: +"Work type supported by the selected country's catalog. Window replacement is FR/ES; air-to-water heat pump is FR only."
    • removedInput schema / properties / jobType / enum
      Removed value: -[
      -  "Combined project",
      -  "Rear extension",
      -  "Kitchen extension",
      -  "Side extension",
      -  "Wraparound extension",
      -  "Loft conversion",
      -  "Barn conversion",
      -  "Refurbishment",
      -  "Commercial office refurbishment",
      -  "New kitchen",
      -  "New bathroom",
      -  "Office / summerhouse",
      -  "Garage conversion",
      -  "Basement work / conversion",
      -  "Lower-ground floor refurbishment",
      -  "New build",
      -  "home_addition",
      -  "whole_home_remodel",
      -  "kitchen_remodel",
      -  "bathroom_remodel",
      -  "attic_conversion",
      -  "garage_conversion",
      -  "basement_remodel",
      -  "backyard_studio",
      -  "new_home_construction"
      -]
    • removedInput schema / properties / jobType / type
      Removed value: -"string"
    • addedInput schema / properties / projectDetails / properties / city
      Added value: +{
      +  "description": "CA cosmetic work only: explicit Toronto/GTA (ON) or Vancouver (BC) reference, never a province-wide multiplier.",
      +  "enum": [
      +    "toronto_gta",
      +    "vancouver"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / projectDetails / properties / floorRemoval
      Added value: +{
      +  "description": "Vancouver cosmetic flooring only: remove existing flooring? Unknown widens the removal allowance; stairs and major subfloor repair remain separate.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / projectDetails / properties / heatPumpCapacity
      Added value: +{
      +  "description": "FR air-to-water heat pump only: installer-confirmed kW band. Do not infer capacity from floor area.",
      +  "enum": [
      +    "under_5",
      +    "from_5_to_7",
      +    "over_7"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / projectDetails / properties / hotWater
      Added value: +{
      +  "description": "FR air-to-water heat pump only: also supplies domestic hot water? Unknown retains both source possibilities.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / projectDetails / properties / windowCount
      Added value: +{
      +  "description": "FR/ES PVC window replacement only: actual windows replaced in existing openings. Never derive the count from floor area.",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  3. Changed4 schema fields changed
    • addedInput schema / properties / localScope / properties / propertyType
      Added value: +{
      +  "enum": [
      +    "detached_house",
      +    "apartment"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / localScope / properties / roomCount
      Added value: +{
      +  "description": "AU/NZ/IE kitchen or bathroom work only: actual rooms being renovated, never inferred from floor area or combined bathroom/WC counts.",
      +  "maximum": 5,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / localScope / properties / roomExtent
      Added value: +{
      +  "description": "AU/NZ/IE room work: cosmetic refresh or replacement of fittings and finishes. Layout/service changes use workDetails.serviceRelocation; do not count ordinary installation twice.",
      +  "enum": [
      +    "refresh",
      +    "replace"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / localScope / properties / roomSize
      Added value: +{
      +  "enum": [
      +    "compact",
      +    "typical",
      +    "large"
      +  ],
      +  "type": "string"
      +}
  4. Changed13 schema fields changed
    • addedInput schema / properties / indiaDetails / properties / city
      Added value: +{
      +  "description": "IN new RCC home only: own local builder package anchors. City and supplied state must agree. Rural masonry/shelters use their own local-method model, never a metro package.",
      +  "enum": [
      +    "bengaluru",
      +    "delhi"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / japanDetails / properties / airconCount
      Added value: +{
      +  "description": "JP selected work: wall-mounted indoor/outdoor pairs supplied and fitted; existing balcony or ground-level outdoor location. Central systems, crane/high-access work and new circuits are separate.",
      +  "maximum": 20,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / japanDetails / properties / flooringArea
      Added value: +{
      +  "description": "JP selected work: wooden floor area in m2. Exclude the area receiving new tatami.",
      +  "maximum": 10000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / japanDetails / properties / kitchens
      Added value: +{
      +  "description": "JP selected work: complete kitchens supplied and fitted, counted once instead of a whole-home area-rate allowance.",
      +  "maximum": 5,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / japanDetails / properties / lightCount
      Added value: +{
      +  "description": "JP selected work: fitting installation at existing power points. User-supplied ordinary fitting; new wiring or luxury chandelier work excluded.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / japanDetails / properties / tatamiCount
      Added value: +{
      +  "description": "JP selected work only: actual full-size mats being replaced, not room-area tatami. Never derive this count from layout or floor area.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / japanDetails / properties / wallpaperArea
      Added value: +{
      +  "description": "JP selected work: wall/ceiling surface area in m2 being repapered; never substitute floor area.",
      +  "maximum": 10000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / japanDetails / properties / workExtent / enum
      Previous value: -[
      -  "refresh",
      -  "partial",
      -  "full",
      -  "skeleton"
      -]New value: +[
      +  "refresh",
      +  "partial",
      +  "full",
      +  "skeleton",
      +  "selected"
      +]
    • addedInput schema / properties / localScope / properties / foundation
      Added value: +{
      +  "description": "DE slab/basement; NZ slab/timber piles/engineered piles. Ordinary baseline included once; foundation and adverse-ground allowances overlap. DE basement fitting out is separate.",
      +  "enum": [
      +    "slab",
      +    "basement",
      +    "timber_piles",
      +    "engineered_piles"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / localScope / properties / primaryConstruction
      Added value: +{
      +  "description": "DE only: masonry or timber-frame house; timber comparison widens a provisional native-EUR guide, not a calibrated quote.",
      +  "enum": [
      +    "masonry",
      +    "timber_frame"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / localScope / properties / wallConstruction
      Added value: +{
      +  "description": "AU new homes only: select the actual wall construction, matched to BMT house type/storeys/finish. Unknown uses the existing construction envelope.",
      +  "enum": [
      +    "weatherboard",
      +    "brick_veneer",
      +    "full_brick"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / projectDetails / properties / propertyType
      Added value: +{
      +  "description": "FR/ES/CA renovation: apartment/private interior versus detached home. Changes relevant questions and scope boundaries; common-building exterior/structure is separate.",
      +  "enum": [
      +    "detached_house",
      +    "apartment"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / projectDetails / properties / refreshScope
      Added value: +{
      +  "description": "CA cosmetic refresh only: installed painting, flooring, or both. Unknown assumes both; full/partial renovations use their own scope.",
      +  "enum": [
      +    "paint",
      +    "flooring",
      +    "paint_and_flooring"
      +  ],
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / workDetails
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional extra scope for supported overseas work: an occupied home, additional service relocation, lift/shared-area protection, an enlarged extension opening, excluded German painting/flooring, or physical new-home utility connections. ES also accepts access restrictions and whole-home structuralWork. Send only explicitly requested facts. Ordinary installation is already in the country baseline. Never apply these to UK work or copy assumptions into answers; omit extras already included. Missing answers never block a price.",
      +  "properties": {
      +    "access": {
      +      "enum": [
      +        "straightforward",
      +        "constrained",
      +        "stairs_only"
      +      ],
      +      "type": "string"
      +    },
      +    "finalDecoration": {
      +      "type": "boolean"
      +    },
      +    "liftProtection": {
      +      "type": "boolean"
      +    },
      +    "occupied": {
      +      "type": "boolean"
      +    },
      +    "serviceRelocation": {
      +      "type": "boolean"
      +    },
      +    "structuralOpening": {
      +      "type": "boolean"
      +    },
      +    "structuralWork": {
      +      "type": "boolean"
      +    },
      +    "utilityConnections": {
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / scope / properties / vatTreatment
      Added value: +{
      +  "description": "Supplier-confirmed VAT treatment of the priced construction scope. Never infer zero/reduced rating from a project label or registration. Mixed-rate work stays unconfirmed until split; separate fees/goods may differ.",
      +  "enum": [
      +    "unconfirmed",
      +    "standard_20",
      +    "qualifying_conversion_5",
      +    "qualifying_empty_home_5",
      +    "qualifying_new_dwelling_0",
      +    "mixed"
      +  ],
      +  "type": "string"
      +}
  7. Changed24 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has Dublin rear-extension project ranges; DE has named prefabricated bungalow examples only, not project estimates. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes, whole-home/akiya renovation and kitchen/bathroom work. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country."New value: +"Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has extension guides and matching Dublin project ranges; DE has rough new-home guides and separate unscaled manufacturer examples. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes, whole-home/akiya renovation and kitchen/bathroom work. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country."
    • changedInput schema / properties / drawings / properties / observations / items / properties / calculationInputs / items / properties / unit / enum
      Previous value: -[
      -  "m",
      -  "mm",
      -  "cm",
      -  "ft",
      -  "in",
      -  "yd",
      -  "m2",
      -  "sq_m",
      -  "ft2",
      -  "sq_ft",
      -  "yd2",
      -  "tsubo",
      -  "m3",
      -  "ft3",
      -  "yd3",
      -  "number",
      -  "item",
      -  "set",
      -  "unknown"
      -]New value: +[
      +  "m",
      +  "mm",
      +  "cm",
      +  "ft",
      +  "in",
      +  "yd",
      +  "m2",
      +  "sq_m",
      +  "ft2",
      +  "sq_ft",
      +  "yd2",
      +  "tsubo",
      +  "m3",
      +  "ft3",
      +  "yd3",
      +  "number",
      +  "item",
      +  "set",
      +  "unknown",
      +  "tatami",
      +  "jo",
      +  "jou",
      +  "畳",
      +  "帖"
      +]
    • addedInput schema / properties / drawings / properties / observations / items / properties / tatamiSize
      Added value: +{
      +  "description": "For tatami area only: use a supplied mat convention; otherwise use the approximate listing convention. Physical mat counts use item/number, not an area unit.",
      +  "enum": [
      +    "listing",
      +    "edoma",
      +    "kyoma",
      +    "chukyoma",
      +    "danchima"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / drawings / properties / observations / items / properties / unit / enum
      Previous value: -[
      -  "m",
      -  "mm",
      -  "cm",
      -  "ft",
      -  "in",
      -  "yd",
      -  "m2",
      -  "sq_m",
      -  "ft2",
      -  "sq_ft",
      -  "yd2",
      -  "tsubo",
      -  "m3",
      -  "ft3",
      -  "yd3",
      -  "number",
      -  "item",
      -  "set",
      -  "unknown"
      -]New value: +[
      +  "m",
      +  "mm",
      +  "cm",
      +  "ft",
      +  "in",
      +  "yd",
      +  "m2",
      +  "sq_m",
      +  "ft2",
      +  "sq_ft",
      +  "yd2",
      +  "tsubo",
      +  "m3",
      +  "ft3",
      +  "yd3",
      +  "number",
      +  "item",
      +  "set",
      +  "unknown",
      +  "tatami",
      +  "jo",
      +  "jou",
      +  "畳",
      +  "帖"
      +]
    • addedInput schema / properties / japanDetails / properties / layout
      Added value: +{
      +  "description": "Stated Japanese layout, e.g. 1R, 1K, 1DK, 1LDK, 2LDK, 2SLDK or 2LDK+S. Optional; unfamiliar labels do not block the estimate. The number counts habitable rooms excluding K/DK/LDK; S/N denotes service/storage rooms, not certified bedrooms. Never derive floor area, bathrooms, replacement mat counts or the number of rooms being renovated from layout alone.",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / localScope / description
      Previous value: -"AU/NZ/IE/DE only. Send confirmed facts; never copy provisional assumptions as user answers. AU adds counted wet fitout; NZ wet-area rates include wet scope. IE uses a fixed 25–35 m² project range, not a scalable per-m² rate. DE examples are not scaled to the user's area."New value: +"AU/NZ/IE/DE only. Send confirmed facts; never copy provisional assumptions as user answers. AU uses separate project/custom and one/two-storey house anchors, plus counted extension fitout. NZ wet-area extensions count the first standard wet room once; additional declared rooms use local references. IE uses a fixed Dublin bucket only for matching scope; other extensions use a broader Irish build guide. DE has a broad new-home guide; named manufacturer examples are never scaled to the user's area."
    • addedInput schema / properties / localScope / properties / access
      Added value: +{
      +  "enum": [
      +    "straightforward",
      +    "constrained",
      +    "remote"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / localScope / properties / accessAlreadyIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • changedInput schema / properties / localScope / properties / areaBasis / description
      Previous value: -"AU project homes require gross floor area including covered unenclosed space. DE bungalow examples use living floor area (Wohnfläche); never substitute gross area or footprint."New value: +"AU uses gross floor area including covered unenclosed space; known internal/living area retains its measurement and widens an inferred GFA allowance. DE uses living floor area (Wohnfläche); gross area uses a wider guide and is never asserted equivalent. Manufacturer examples require the stated living area."
    • addedInput schema / properties / localScope / properties / energyUpgrade
      Added value: +{
      +  "type": "boolean"
      +}
    • changedInput schema / properties / localScope / properties / extensionForm / description
      Previous value: -"IE: the Dublin range covers rear extensions only. Confirm form when using home_addition."New value: +"IE: rear, side or wraparound; affects the guide. Send total floor area across all storeys, not the footprint."
    • addedInput schema / properties / localScope / properties / hazardProtection
      Added value: +{
      +  "enum": [
      +    "ordinary",
      +    "bushfire",
      +    "cyclone",
      +    "seismic"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / localScope / properties / protectionAlreadyIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / localScope / properties / siteConditions
      Added value: +{
      +  "enum": [
      +    "ordinary",
      +    "sloping",
      +    "difficult_ground",
      +    "liquefaction"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / localScope / properties / siteCostsAlreadyIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • changedInput schema / properties / projectDetails / description
      Previous value: -"FR/CA: optional declared work extent, access, climate, ground, construction and upgrade facts. Ordinary local code/climate provisions are already in the base; exceptional work uses disclosed broad allowances. Never infer permafrost from country or remote access from rural location. ES accepts workExtent only. Missing details widen the price; never require a questionnaire."New value: +"FR/CA: optional declared work extent, access, climate, ground, construction and upgrade facts. AlreadyIncluded flags suppress the corresponding allowance only when the supplied scope already contains that work. Ordinary local code/climate provisions are already in the base. Never infer permafrost from country or remote access from rural location. ES accepts workExtent only. Missing details widen the price; never require a questionnaire."
    • addedInput schema / properties / projectDetails / properties / accessAlreadyIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / projectDetails / properties / envelopeAlreadyIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / projectDetails / properties / siteCostsAlreadyIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / projectDetails / properties / structureAlreadyIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • changedInput schema / properties / regionCode / description
      Previous value: -"AU project-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ homes: AKL/CAN/QLDC/OTA; NZ extensions: AKL only. IE extension guide: DUB only (Dublin, Republic of Ireland). DE examples exclude islands: use ISLANDS if relevant; no regional adjustment. FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address."New value: +"AU new-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ national guides; AKL/CAN/QLDC/OTA have selected home anchors; Auckland extensions have their own source. IE: DUB retains a 25–35 m² rear-extension reference; other extension sizes/forms/regions use wider Irish builder guides. DE: a broad native-EUR new-house guide; an explicitly matching prefab bungalow can show a manufacturer example (mainland only). FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address."
    • changedInput schema / properties / scope / description
      Previous value: -"Only known project facts. All area fields share areaUnit. JP also accepts tsubo (坪); one tsubo is 400/121 square metres. Prefer worksLevel over legacy finishBand/finishLevel."New value: +"Only known project facts. All area fields share areaUnit. JP accepts tsubo (坪), tatami/jo/jou/畳/帖. Tsubo is 400/121 m2; tatami defaults to approximately 1.62 m2. Room labels such as LDK 12畳 are that room's area, not the whole apartment. Use dimensioned m2 where supplied. Physical replacement-mat counts are not floor areas. Prefer worksLevel over legacy finishBand/finishLevel."
    • changedInput schema / properties / scope / properties / areaUnit / anyOf
      Previous value: -[
      -  {
      -    "description": "Unit for approximateSize. GB defaults to sq_m and US defaults to sq_ft. Common m2 and ft2 forms are accepted.",
      -    "enum": [
      -      "sq_m",
      -      "sq m",
      -      "m2",
      -      "m^2",
      -      "m²",
      -      "sqm",
      -      "square_metres",
      -      "square_meters",
      -      "square metres",
      -      "square meters",
      -      "sq_ft",
      -      "sq ft",
      -      "ft2",
      -      "ft^2",
      -      "ft²",
      -      "sqft",
      -      "sf",
      -      "square_feet",
      -      "square feet"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "const": "tsubo",
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "description": "Unit for approximateSize. GB defaults to sq_m and US defaults to sq_ft. Common m2 and ft2 forms are accepted.",
      +    "enum": [
      +      "sq_m",
      +      "sq m",
      +      "m2",
      +      "m^2",
      +      "m²",
      +      "sqm",
      +      "square_metres",
      +      "square_meters",
      +      "square metres",
      +      "square meters",
      +      "sq_ft",
      +      "sq ft",
      +      "ft2",
      +      "ft^2",
      +      "ft²",
      +      "sqft",
      +      "sf",
      +      "square_feet",
      +      "square feet"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "enum": [
      +      "tsubo",
      +      "tatami",
      +      "jo",
      +      "jou",
      +      "畳",
      +      "帖"
      +    ],
      +    "type": "string"
      +  }
      +]
    • addedInput schema / properties / scope / properties / tatamiSize
      Added value: +{
      +  "description": "JP tatami area only. Optional listing, edoma, kyoma, chukyoma or danchima convention, only if explicitly known. Otherwise the calculator uses an approximate 1.62 m2 per tatami listing basis; never infer a physical mat type from prefecture or apartment type.",
      +  "enum": [
      +    "listing",
      +    "edoma",
      +    "kyoma",
      +    "chukyoma",
      +    "danchima"
      +  ],
      +  "type": "string"
      +}
  8. Changed4 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has Dublin rear-extension project ranges; DE has named prefabricated bungalow examples only, not project estimates. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes and residential renovation/akiya. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country."New value: +"Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has Dublin rear-extension project ranges; DE has named prefabricated bungalow examples only, not project estimates. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes, whole-home/akiya renovation and kitchen/bathroom work. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country."
    • addedInput schema / properties / drawings / properties / observations / items / properties / parentScopeEntity
      Added value: +{
      +  "description": "Optional explicitly evidenced containing scope, e.g. kitchen inside whole_home. Supply only when the drawing/brief establishes containment. Keep separate buildings unparented. Never use this to force unrelated floor areas into the main project.",
      +  "pattern": "^[a-zA-Z0-9_-]{1,80}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / japanDetails / properties / bathroomType
      Added value: +{
      +  "description": "Existing bathroom type; conventional tiled-bath conversion differs from replacing a unit bath. Unknown stays optional.",
      +  "enum": [
      +    "unit_bath",
      +    "conventional_bath"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / japanDetails / properties / roomCount
      Added value: +{
      +  "description": "Kitchen/bathroom renovation only: number of rooms the user wants worked on. Default one if unknown. Do not infer bathrooms from a combined bathroom/WC drawing count or building floor area.",
      +  "maximum": 20,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  9. Changed3 schema fields changed
    • addedInput schema / properties / drawings / properties / observations / items / properties / label / description
      Added value: +"Human-readable work label in the conversation language. Keep literal drawing wording in sourceReference."
    • changedInput schema / properties / drawings / properties / observations / items / properties / scopeEntity / description
      Previous value: -"Separate construction entity, e.g. rear_extension or garage. Do not merge separate buildings."New value: +"Stable separate building/scope ID. For main residential pricing use whole_home for whole-home renovation, new_home for a new house, home_addition/rear_extension for an addition, kitchen or bathroom for a single-room remodel. Keep garages, annexes and separate buildings separate; do not invent a primary-scope label or merge areas."
    • addedInput schema / properties / drawings / properties / unresolvedItems / items / properties / description / description
      Added value: +"Human-readable issue in the conversation language; preserve literal evidence in sourceReference."
  10. Changed6 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has Dublin rear-extension project ranges; DE has named prefabricated bungalow examples only, not project estimates. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes and residential renovation/akiya. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country."New value: +"Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has Dublin rear-extension project ranges; DE has named prefabricated bungalow examples only, not project estimates. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes and residential renovation/akiya. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country."
    • addedInput schema / properties / indiaDetails
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "IN only: optional known construction/site facts. Simple local-material hut, durable rural masonry and RCC home have distinct INR models. Rural never implies poor road access. State alone does not prove climate/hazard. Ordinary construction is counted once; only stated extra protection is added. Missing facts give a rough price. Rates/allowances are estimates, not safety certification or state cost schedules.",
      +  "properties": {
      +    "access": {
      +      "enum": [
      +        "normal",
      +        "remote_road",
      +        "no_vehicle_access",
      +        "seasonal_or_island"
      +      ],
      +      "type": "string"
      +    },
      +    "climate": {
      +      "enum": [
      +        "ordinary",
      +        "hot_dry",
      +        "humid_monsoon",
      +        "cold_snow"
      +      ],
      +      "type": "string"
      +    },
      +    "climateAlreadyIncluded": {
      +      "type": "boolean"
      +    },
      +    "construction": {
      +      "enum": [
      +        "vernacular_hut",
      +        "rural_masonry",
      +        "rcc_home"
      +      ],
      +      "type": "string"
      +    },
      +    "hazard": {
      +      "enum": [
      +        "ordinary",
      +        "enhanced_seismic",
      +        "cyclone_exposed",
      +        "flood_exposed"
      +      ],
      +      "type": "string"
      +    },
      +    "hazardAlreadyIncluded": {
      +      "type": "boolean"
      +    },
      +    "landUse": {
      +      "enum": [
      +        "residential",
      +        "agricultural",
      +        "protected_or_tribal",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "setting": {
      +      "enum": [
      +        "rural",
      +        "town",
      +        "metro",
      +        "high_cost_metro"
      +      ],
      +      "type": "string"
      +    },
      +    "siteConditions": {
      +      "enum": [
      +        "ordinary",
      +        "difficult_ground"
      +      ],
      +      "type": "string"
      +    },
      +    "workExtent": {
      +      "enum": [
      +        "refresh",
      +        "partial",
      +        "full"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / land
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "IN only. Optional separate plot and user-supplied INR purchase price/rate, upfront lease premium, yearly rent and fees. Land area never becomes building floor area. Unknown land prices stay unpriced without blocking the construction estimate. Official valuation is a reference, never treated as market purchase cost. No generic bigha/ground/marla conversion; ask for the local conversion. State rules/title/lease rights need local verification.",
      +  "properties": {
      +    "annualRent": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "high": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "low": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "low",
      +        "high"
      +      ],
      +      "type": "object"
      +    },
      +    "areaUnit": {
      +      "enum": [
      +        "sq_m",
      +        "sq_ft",
      +        "acre",
      +        "hectare"
      +      ],
      +      "type": "string"
      +    },
      +    "fees": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "high": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "low": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "low",
      +        "high"
      +      ],
      +      "type": "object"
      +    },
      +    "leasePremium": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "high": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "low": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "low",
      +        "high"
      +      ],
      +      "type": "object"
      +    },
      +    "plotArea": {
      +      "exclusiveMinimum": 0,
      +      "maximum": 1000000000,
      +      "type": "number"
      +    },
      +    "priceBasis": {
      +      "enum": [
      +        "asking",
      +        "agreed",
      +        "official_valuation"
      +      ],
      +      "type": "string"
      +    },
      +    "purchasePrice": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "high": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "low": {
      +          "maximum": 1000000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "low",
      +        "high"
      +      ],
      +      "type": "object"
      +    },
      +    "purchaseRate": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "high": {
      +          "maximum": 10000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "low": {
      +          "maximum": 10000000000,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "unit": {
      +          "enum": [
      +            "sq_m",
      +            "sq_ft",
      +            "acre",
      +            "hectare"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "low",
      +        "high",
      +        "unit"
      +      ],
      +      "type": "object"
      +    },
      +    "tenure": {
      +      "enum": [
      +        "owned",
      +        "purchase",
      +        "leasehold"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tenure"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / language / description
      Previous value: -"Card and follow-up language from the conversation, e.g. fr-CA, es, de, it, pt or ja. English fallback for unsupported languages. Never infer country, currency or units from language."New value: +"Card and follow-up language from the conversation, e.g. fr-CA, es, de, it, pt, ja or hi. English fallback for unsupported languages. Never infer country, currency or units from language."
    • changedInput schema / properties / regionCode / description
      Previous value: -"AU project-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ homes: AKL/CAN/QLDC/OTA; NZ extensions: AKL only. IE extension guide: DUB only (Dublin, Republic of Ireland). DE examples exclude islands: use ISLANDS if relevant; no regional adjustment. FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. US uses state. Do not infer a city from a state or send an address."New value: +"AU project-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ homes: AKL/CAN/QLDC/OTA; NZ extensions: AKL only. IE extension guide: DUB only (Dublin, Republic of Ireland). DE examples exclude islands: use ISLANDS if relevant; no regional adjustment. FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address."
    • changedInput schema / properties / worksLevel / description
      Previous value: -"Level of materials, finishes and detailing: Budget, Standard, Premium or Luxury. US/FR/ES/CA/JP Luxury returns a wide rough starting range, not a ceiling; bespoke details need individual pricing. Other markets retain their published reference limits. This does not change the amount of work."New value: +"Level of materials, finishes and detailing: Budget, Standard, Premium or Luxury. US/FR/ES/CA/JP/IN Luxury returns a wide rough starting range, not a ceiling; bespoke details need individual pricing. Other markets retain their published reference limits. This does not change the amount of work."
  11. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, and the description adds substantial context beyond them: what the call returns (budget card, tax basis, exclusions, refinementQuestion), how to handle the follow-up question, that estimates are versioned and repeatable, that unchanged results should be reused, and that UK rates and exchange-rate conversion must not be substituted. This is behavioral guidance an agent could not derive from the annotations.

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

Conciseness4/5

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

Dense but front-loaded: the trigger condition and the returned artifacts come first, followed by scope limits, then exclusions. Nearly every sentence is an actionable constraint, though the closing paragraph stacks several separate rules (drawing skill, reuse, price integrity, country/language/unit independence) that read as a packed list rather than a structured sequence.

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

Completeness5/5

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

For a 20-parameter, deeply nested tool with an output schema, the description covers everything the schema cannot: activation conditions, the returned card and refinementQuestion handling, market coverage and its limits, precision caveats (no exchange-rate or UK-rate substitution), and a clear negative scope. The schema handles field-level detail, so no material gap remains.

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

Parameters4/5

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

Schema description coverage is 100%, so the per-parameter semantics are already carried by the schema and the baseline would be 3. The description still adds cross-parameter meaning that the schema does not state as a unit: 'Country, language and units are independent', the country/work-type coverage summary, and the instruction to send reconciled drawing facts in one call rather than incrementally.

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

Purpose5/5

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

States a specific verb and resource ('Computes repeatable local-currency estimates using versioned country-specific construction benchmarks') and enumerates the exact trigger situations (cost of building, extending, renovating, kitchen/bathroom, budget refinement, costing drawings). The supported-country list and the explicit exclusion list make it distinguishable from calculate_guide_price and compare_guide_scenarios without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit activation rule ('Use this when a user asks the cost of...') including the case where the user does not name the product, plus an explicit negative list ('Do not use for property valuations, land-price discovery, account/project lookup, purchases, issued quotes or legal/safety certification'). It also routes adjacent work: detailed trade costing is GB-only, and drawing analysis requires reading the drawing skill first.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.